我正在尝试创建一个回路设备,将我的网络摄像头连接到Zoom和浏览器,两者都可以访问。我已经创建了三个v4l2loopback设备:
sudo modprobe v4l2loopback devices=3 video_nr=10,11,12 card_label="Loopback_1","Loopback_2","Virtual_cam" exclusive_caps=1,1,0
接着是:
ffmpeg -i /dev/video0 -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video10 -f v4l2 /dev/video11
这两个设备被Chrome检测到,但是Zoom和Firefox无法识别。
根据stackoverflow上的其他问题建议,我尝试使用v4l2loopback-ctl设置设备属性,使用v4l2loopback-ctl set-caps "video/x-raw,format=UYVY,width=640,height=480" /dev/video10
命令,结果返回:
设置管道为暂停状态... 错误:管道不想暂停。 错误:来自元素/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0的设备'/dev/video10'不是输出设备。 附加调试信息: v4l2_calls.c(636): gst_v4l2_open():/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: 能力: 0x85208000 将管道设置为null ... 释放管道... 向/dev/video10输出失败。
我还尝试使用gst-launch-1.0:
gst-launch-1.0 v4l2src device=/dev/video0 ! v4l2sink device=/dev/video10
这告诉我 /dev/video10 不是输出设备:
将管道设置为暂停状态... 错误:管道不想暂停。 错误:来自元素 /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0 的错误:设备 '/dev/video10' 不是输出设备。 其他调试信息: v4l2_calls.c(636):gst_v4l2_open():/GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: 功能:0x85208000 将管道设置为NULL... 释放管道...
我正在运行 Xubuntu 20.04,内核版本为 5.4.0-52-generic,使用 v4l2loopback-dkms v.0.12.3-1ubuntu0.1 和 v4l2loopback-utils。
我的目标是获取一个设备,由桌面 Node.js 服务器消耗它,该服务器将使用 xdg-open
打开 Web 应用程序(因此需要 Chrome 和 Firefox),它将输出经过处理的视频流,可被视频聊天应用程序(例如 Zoom 或 Jitsi)消耗。
任何帮助将不胜感激。