将IP摄像机流从Raspberry重定向到我的网站

时间:2016-12-01 22:36:17

标签: python raspberry-pi video-streaming raspbian

所以这是我的设置: IP摄像头 - > Raspberry Pi(Raspbian) - > WiFi - >我的服务器

我目前正在使用motion来检索我的RPi上的相机流。我可以通过我的浏览器在本地网络(192.168.x.x:8080)上查看它(它是一个Mjpeg流)。

我现在想在线发布,以便我可以从http://camera.example.com/查看。 这里的区别在于我想独立于所使用的WiFi网络这样做(所以我不能简单地在我的路由器上打开一个端口来接受来自服务器的连接)。

我认为这可以使用WebSockets但我以前从未使用过它们。或者是否有一些工具已经存在且易于使用?有很多流媒体工具,但它们似乎都是Windows-GUI程序而不是命令行工具。

语言的选择是Python,但如果由于某种原因,另一种语言更适合,那也很好。此外,我不需要专门使用动作,所以如果有更好的替代方案也可以。谢谢!

1 个答案:

答案 0 :(得分:0)

作为一组最低限度的步骤,您将需要

  1. 指向您的公共IP地址的域名
  2. 随着IP定期更改,保持域DNS记录最新的一种方式(来自noip.com的免费动态IP将有助于解决第一个问题,并且它们具有可以安装的客户端,可以保持使用您当前的IP更新其DNS)
  3. 路由器上的端口转发规则,将端口8080(以及摄像头流的流端口,可能是8081,但可以在Motion配置中将其更改)转发到Pi的内部(192.168.xx)IP
  4. 在路由器中进行DHCP保留以保留Pi的IP(否则,如果内部IP发生变化,则需要更改端口转发规则)
  5. 您现在将可以通过域名访问互联网,例如http://camera.example.com:8080

但是...

您刚刚允许对家庭网络中的设备进行不安全的http(未加密)访问,然后可以利用该漏洞(有人可以查看您的相机,或者可能进一步访问Pi和网络上的其他设备。) )

您可以在Motion配置中为Web控件gui启用身份验证,但仍可以通过http进行身份验证,因此很容易被黑客入侵或拦截。

因此,我还要确保所有内容都只能通过https(安全,加密)进行访问。

您需要的物品:

  • 您所在域的SSL证书(可从letsencrypt.org免费获得)
  • Pi上的网络服务器(因为Motion不使用任何已安装的网络服务器,而是具有自己的内置网络服务器)-我建议使用Nginx或Apache
  • certbot(用于在pi上生成/安装证书)
  • 将Web服务器配置为反向代理,并使用您的SSL证书将HTTP Motion网站作为https服务
  • 确保网站安全(apache和nginx均支持http基本身份验证),如果反向代理配置正确,将通过经过如此加密的https提供服务,这比未加密的base64编码(且易于解码)的凭据信息进行了加密所有人都可以看到/拦截的清晰对象。)

可以使用其他身份验证选项,但需要做一些额外的工作,但是作为最低限度的基本身份验证和完整的https总比没有好。