webrtc - 我可以将 IP 网络摄像机模拟为 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 中提取的一个全屏视频。
推荐阅读
- python - 如何编写生成 1,000 次随机掷骰并显示结果直方图的程序
- java - 如何在我的 RPG 游戏中回到某个检查点?
- kubernetes - 如果我想让它与 aws EKS 一起使用,应该为 iam 用户分配什么策略
- javascript - 将滚动事件监听器添加到 GatsbyJS (ReactJS) 中的文档
- docker - 为什么我必须删除 docker 容器?
- python - Python 创建的 tar.gz 文件包含“_”文件夹,如何删除?
- javascript - 为什么这个 if 语句不起作用?
- python - Django表单值在视图中没有改变
- mysql - 如何加快或改进此查询?
- java - 我无法读取 .txt 中的所有数字