我可以将 IP 网络摄像机模拟为 Chromium 检测到的媒体设备吗?

Can I emulate a IP Network Camera as a Media Device that is detected by Chromium?

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

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

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

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 中提取的一个全屏视频。