首页 > 解决方案 > 我可以将 IP 网络摄像机模拟为 Chromium 检测到的媒体设备吗?

问题描述

我有一个基于 Chromium 浏览器的 WebRTC 解决方案,它使用本地设备摄像头。然而,这些摄像机安装在很远的地方,无法通过 USB 连接到任何 PC。它们可以通过以太网电缆连接到 LAN。

有没有办法将相机模拟为本地媒体设备,以便 navigator.mediaDevices.enumerateDevices 识别它们?我可以更改代码或使用任何 API 来检测 IP 摄像机吗?任何指针都会非常有帮助。

我尝试了以下选项:
1. 在 Windows 设置中添加设备。没有工作,因为它需要特定的 Windows Insider 更新。
2. IP Camera Adapter、ManyCam、iSpy 不工作,因为它们都支持 HTTP。我的高清摄像机只支持 RTMP 协议。

标签: webrtcchromiumgetusermediaip-cameramediadevices

解决方案


v4l2loopback是您可以做到这一点的一种方式!这允许您使用任意媒体在 Linux 上提供虚拟网络摄像头。

然后你可以在 GStreamer 中有一个看起来像的管道

gst-launch-1.0 rtmpsrc location=$RTMP_SRC ! decodebin ! v4l2sink device=/dev/video0

此管道从您的 RTMP 服务器获取媒体,对其进行解码,然后将其推送到您的新虚拟网络摄像头。您的设备名称可能不同,ls /dev/video*会有所帮助。然后,当您打开 Chromium 时,您可以选择一个新的虚拟网络摄像头,该网络摄像头通过rtmpsrc.


作为后续问题,您是否需要通过 Chromium 发布?使用Pion WebRTC之类的东西很容易发布,你可以给它任意媒体,它可以推送到浏览器。它还提供了有关如何从rtmpsrc.


另一个解决方案可能是 OBS。它允许你消费一个RTMP Source,然后你可以输出一个Virtual Cam。因此,OBS 将提供一个包含您制作的内容的网络摄像头,这只是从 RTMP 中提取的一个全屏视频。


推荐阅读