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