【问题标题】:IP CAM in Combination with UV4L and Janus-Gateway (WebRTC)IP CAM 结合 UV4L 和 Janus-Gateway (WebRTC)
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 去编辑你的问题并包含这些信息;然后删除这个答案。答案几乎肯定会作为非答案被删除。
猜你喜欢
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
相关资源
最近更新 更多