html - 从 apache2 HTTPS 服务器(覆盆子 pi)实时流式传输视频的简单方法进化了吗?
问题描述
我是一个试图设置树莓派 3 以将视频直播到 HTTPS 站点的老笨蛋。经过与 raspbian strech、apache2 的激烈斗争并获得了安全证书后,我设法在 raspberry 上托管了 HTTPS 域,但我无法让视频在本地网络之外显示。我在域中编辑了索引页面以嵌入实时视频,当我从本地网络上的 Windows PC 加载到 chrome 时,这显示了实时流,但是尽管页面从本地网络外部加载,但没有视频显示。网址是https://rydepier.com 奇怪的是视频流在我的 WAN IP 的 8081 端口上可供任何人查看。没有一种简单的方法可以将其嵌入 HTML5 页面吗?
视频流来自通过“运动”服务连接到 pi 的 USB 摄像头,并且(据我所知)h264 编码,没有 mp4 包装器
这是索引页面的代码(HTML新手非常混乱)标记的mp4视频本地存储在pi上的HTML文件中
<html>
<head>
<title>Number 4 Homepage </title>
<style>
body
{
margin: 20px;
padding: 0px;
}
img
{
width: 90%;
<!height: 50%;>
}
</style>
</head>
<body>
<h1>Greetings from Number 4</h1>
<p>Live view from the Mezanine Deck.</p>
<img style="-webkit-user-select: none;" src="http://192.168.1.10:8081/"> <h1>Solstice 2019.</h1>
<video width="640" height="480" controls>
<source src="vid2.MP4" type="video/mp4">
Your browser does not support the video tag.
</video>
</body>
解决方案
您无法从外部访问视频的原因是您用来访问它的方法是通过本地 IP 地址。无需过多详细介绍,地址范围 192.168.0.0 – 192.168.255.255 中的本地地址(私有 IP)在该网络上将是唯一的,但互联网上的用户无法公开访问。这类似于我可以访问 C:\Users 目录中的文件的方式,但是如果我希望其他人可以访问它,我需要将它放在服务器上的某个地方。
解决方案是您必须从公共 IP 访问。您实际上可以将 192.168.1.10:8081 替换为 rydepier.com:8081,而不是手动查找。DNS 会将域转换为其正确的公共 IP 地址,并且视频将流式传输到任何地方。
事实上,我知道这一点是因为我无法访问私有 IP 地址视频流,但我可以在http://rydepier.com:8081访问它
代替
<img style="-webkit-user-select: none;" src="http://192.168.1.10:8081/"> <h1>Solstice 2019.</h1>
和
<img style="-webkit-user-select: none;" src="http://rydepier.com:8081/"> <h1>Solstice 2019.</h1>
推荐阅读
- r - 有没有办法比较两个数据框中具有不同列号的列并删除与某一列不匹配的行?
- r - 非收敛 glmmTMB
- javascript - 为什么这个解决方案不起作用?使用两个地图查找常见字符
- error-handling - SQL Server 代理作业失败处理
- json - jq:基于过滤器的分区
- javascript - 使用 WebAudioAPI 解析和存储音频文件中的音量/dB 数据
- azure-active-directory - 向来宾用户授予存储帐户访问权限(外部 Azure Active Directory)
- uml - 处理状态图中的故障
- r - 如何识别矩阵中缺失的行/列并在其中放置一个零?(对称失配)
- anaconda - conda 更新后环境不一致