IP CAM与UV4L和Janus-Gateway(WebRTC)相结合

时间:2017-09-25 19:06:11

标签: webrtc ip-camera janus-gateway

我正在使用UV4L和我的IP CAM来创建虚拟视频驱动程序/ dev / video1。我能够进入UV4L流媒体服务器的API,它有多个应用程序,如JITSI,WEBRTC,JANUS等。我注意到当我尝试在局域网连接(LAN)上流式传输到Janus视频室时,即在我的本地服务器上在终端

中收到此消息

" [6889886769210913]创建ICE代理(ICE完全模式,受控制)
   [6889886769210913] DTLS握手已完成  WebRTC媒体现已推出"

但没有媒体/视频流出现。我在编译Janus的同时启用了数据通道,我还使用我的UV4L流媒体服务器进行了webrtc测试。但是Janus的消息以及为什么流不会出现在Chrome或Firefox中,这是我需要帮助的。

编辑更新以回复评论:

两者之间的联系是uv4l将我的IP cam渲染为虚拟设备驱动程序,我使用的是mjpeg驱动程序模块。然后我可以在加载时将不同的选项传递给uv4l驱动程序,例如我使用来自IP Cam的h264配置文件流,我也将其更改为mjpeg流。有趣的是,使用h264流,我可以在创建的虚拟驱动程序上运行webrtc流测试,即使在查看调试文件的Janus上,一切似乎按照预期的方式工作,在挂机后我得到正确的日志,例如

{
   "janus": "hangup",
   "session_id": 8829409609870864,
   "sender": 5037748733677649,
   "reason": "RTCP BYE"
}

我的Feed通过Wireshark跟踪正确跟踪,就像成功的Webrtc流测试通过网络显示一样,我的数据包标题和提要也很好:

[5037748733677649]  Got an RTCP packet (bundled stream)!
[Tue Sep 26 14:28:25 2017] [5037748733677649] Incoming RTCP, bundling: this is video (remote SSRC: video=2524945001, audio=65486109, got 2524945001)
[Tue Sep 26 14:28:25 2017]    Parsing compound packet (total of 56 bytes)
[Tue Sep 26 14:28:25 2017]      #1 SR (200)
[Tue Sep 26 14:28:25 2017]        RTCP PT 200, length: 28 bytes
[Tue Sep 26 14:28:25 2017]      #2 SDES (202)
[Tue Sep 26 14:28:25 2017]        RTCP PT 202, length: 28 bytes
[Tue Sep 26 14:28:25 2017]   End of compound packet
[Tue Sep 26 14:28:25 2017] [5037748733677649]  Got an RTCP packet (bundled stream)!
[Tue Sep 26 14:28:25 2017] [5037748733677649] Incoming RTCP, bundling: this is audio (remote SSRC: video=2524945001, audio=65486109, got 65486109)
[Tue Sep 26 14:28:25 2017]    Parsing compound packet (total of 56 bytes)
[Tue Sep 26 14:28:25 2017]      #1 SR (200)
[Tue Sep 26 14:28:25 2017]        RTCP PT 200, length: 28 bytes
[Tue Sep 26 14:28:25 2017]      #2 SDES (202)
[Tue Sep 26 14:28:25 2017]        RTCP PT 202, length: 28 bytes
[Tue Sep 26 14:28:25 2017]   End of compound packet

我在想我没有流的原因是因为我没有通过浏览器在加密层上测试它,即我没有使用HTTPS代替HTTP,或者我的主机Windows机器正在阻止我的客户Linux webrtc流。这些是我倾向于调查的领域,我也尝试使用本地主机,同样的结果没有显示流,由于隐私限制,我在VM上创建自签名证书是一种复杂的策略问题。我会更进一步,如果我找不到替代方案,我会在stanadlone机器上创建一个自签名许可证来测试它。你认为ssl问题可能是原因吗? 更新:与ssl相同。

1 个答案:

答案 0 :(得分:0)

如果有人想尝试这种实现,在本地服务器上配置所描述的设置时,要考虑的事情很少,最重要的是能够为前端Web设置Janus的代理 - 服务器(Apache或nginx)并配置HTML脚本如果你选择使用Janus的演示(即streaming.html,文本室,视频室等),重要的是要注意,如果你没有安装UV4L的渲染器,UV4L的网页演示只发布流,但您必须创建一个画布来查看流或使用Web浏览器上的一个可用演示室(我的实例中为google-chrome或chromium)如上所述。