【发布时间】:2018-03-06 20:26:14
【问题描述】:
我正在将 UV4L 与我的 IP CAM 一起使用来创建一个虚拟视频驱动程序 /dev/video1。我能够进入具有 JITSI、WEBRTC、JANUS 等多个应用程序的 UV4L 流媒体服务器的 API。当我尝试在本地连接 (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"
}
我的提要通过 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 上创建自签名证书是一个复杂的策略问题。我会看得更远,如果找不到其他选择,我会在独立机器上创建一个自签名许可证来测试它。您认为 ssl 问题可能是原因吗? 更新:与 ssl 相同。
【问题讨论】:
-
Janus-gateway 不会对视频进行转码,则应将 h264 配置文件设置为 Web 浏览器支持的配置文件。您是否尝试将配置文件设置为基线配置文件?
-
是的,我将相机配置文件流设置为基线,但我没有在 Janus 中设置任何 h264 配置文件,因为我已经为 uv4l 驱动程序提供了我的 IP 摄像头实例来创建 /dev/video1 .但是,如果我需要在 Janus 中进行特定的配置,那就全神贯注。谢谢! @mpromonet
-
或者你的意思是h264配置文件? @mpromonet
-
用于 raspicam 的 uv4l 驱动程序接受“-profile baseline”以指定 h264 配置文件。但也许您正在使用其他驱动程序。 IP摄像头和uv4l有什么联系?
-
@mpromonet 我在下面的答案框中回答了您的问题,因为输入评论太长了。谢谢!
标签: webrtc ip-camera janus-gateway