我在IP中使用UV4L来创建一个虚拟视频驱动程序/dev/ virtual 1。我能够进入UV4L流服务器的API,它有多个应用程序,如JITSI、WEBRTC、JANUS等。我注意到,当我试图在局域网上流到Janus视频室时,即在我的本地服务器上,我在终端中得到了这条消息。
"6889886769210913创建ICE代理(ICE完全模式,受控)
**[6889886769210913] The DTLS handshake has been completed**WebRTC媒体现在有了“”
但是没有媒体/视频流出现。我在编译Janus时启用了数据通道,我还用我的UV4L流服务器进行了webrtc测试,运行良好。但关于Janus的信息,以及为什么Chrome或Firefox中没有显示流,正是我需要帮助的地方。
编辑更新以回答评论:
两者之间的链接是uv4l将我的IP摄像头呈现为虚拟设备驱动程序,我使用的是mjpeg驱动程序模块。然后,在加载uv4l驱动程序时,我可以将不同的选项传递给它,例如,我使用来自IP的h264配置文件流,并且我也将它更改为mjpeg流。有趣的是,使用h264流,我可以在创建的虚拟驱动程序上运行webrtc流测试,即使是在Janus查看调试文件时,一切似乎都按照它应该的方式工作,挂掉之后,我得到了正确的日志,例如
{
"janus": "hangup",
"session_id": 8829409609870864,
"sender": 5037748733677649,
"reason": "RTCP BYE"
}当成功的Webrtc流测试显示在线路上时,我的提要可以正确地使用Wireshark进行跟踪,而我的数据包报头和提要也是如此:
[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,因为隐私限制。我会进一步研究,如果我没有其他选择,我会在一台标准机器上创建一个自我签名的许可证来测试它。你认为ssl问题可能是原因吗?更新: ssl也是如此。
发布于 2017-09-27 14:22:59
如果有人想尝试这种实现,那么在本地服务器上配置所描述的安装程序时几乎没有什么要考虑的,最重要的是能够为前端web服务器(Apache或nginx)设置Janus代理,并且如果您选择为Janus使用演示程序(如streaming.html、文本室、视频室等),那么也要注意,如果您没有为UV4L安装一个呈现器,UV4L的网页演示只发布流,但是您必须创建一个画布来查看流,或者使用web浏览器上可用的演示室之一(如上面所述的google或or )。
https://stackoverflow.com/questions/46412464
复制相似问题