微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Chrome侦测到v4l2loopback装置,但Zoom或Firefox无法看见 v.0.12.3-1ubuntu0.1

如何解决Chrome侦测到v4l2loopback装置,但Zoom或Firefox无法看见 v.0.12.3-1ubuntu0.1

我正在尝试从网络摄像头创建回送设备,以便可以从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来设置设备属性,并得到响应:

将管道设置为PAUSED ... 错误:管道不想暂停。 错误:来自元素/ 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不是输出设备:

将管道设置为PAUSED ... 错误:管道不想暂停。 错误:来自元素/ 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(因此需要Chrome和Firefox)打开一个网络应用,并输出经过处理的视频聊天应用程序可以使用的视频流,例如Zoom或Jitsi。

任何帮助将不胜感激。

解决方法

我刚刚在这篇帖子评论中找到了[1],不久就是这个越野车的版本:

v.0.12.3-1ubuntu0.1

然后,我打开链接[2],在此处找到ppa存储库[3],运行以下命令:

sudo add-apt-repository ppa:smb/focal

sudo apt upgrade v4l2loopback-dkms

它将把v4l2loopback升级到v.0.12.3-1ubuntu0.2版本,或者只是等待下一次软件更新。

我尝试了这些方法,并在我的缩放客户端应用程序上工作。

PS:如果sudo modprobe v4l2loopback中的文件配置如下,只需运行/etc/modprobe.d/v4l2loopback.conf

options v4l2loopback devices=3 video_nr=10,11,12 card_label="Loopback_1","Loopback_2","Virtual_cam" exclusive_caps=1,1,0

要停止,请运行sudo modprobe -r v4l2loopback。当然v4l2-ctl --list-devices可以检查v4l2loopback设备

参考链接:

[1] V4l2 video device suddenly gone from zoom,teams,but ffplay can show it

[2] https://bugs.launchpad.net/ubuntu/+source/v4l2loopback/+bug/1901491

[3] https://launchpad.net/~smb/+archive/ubuntu/focal

[4] https://github.com/umlaeute/v4l2loopback/issues/274

,

TL; DR

降级到v4l2loopback-dkms 0.12.3-1。在版本0.12.5-1之前不要升级。

降级v4l2loopback-dkms

$ sudo apt install v4l2loopback-dkms=0.12.3-1

锁定

这将阻止此升级的升级

$ sudo apt-mark hold v4l2loopback-dkms

当固定的0.12.5-1版本可用时,请解锁该软件包:

$ sudo apt-mark unhold v4l2loopback-dkms

详细信息

来自Launchpad Bug

影响:尝试正确修复由0.12.3-1ubuntu0.1中的模块引起的警告,导致Chromium以外的任何其他应用程序不再检测可用的环回设备。测试的功能仅在功能集中设置,而没有在device_caps集中设置。

修复:按照v4l2loopback 0.12.5-1中的操作修改了补丁,以更改IOCTL代码。这可能与内核开发人员试图达到的目标相反,可以通过额外修改测试要检查的视频设备功能来解决这些限制。

测试用例:现在在针对Chromium和Firefox进行OBS v4l2sink连接(并设置了Exclusive_caps)的情况下进行了测试。使用0.12.3-1ubuntu0.1时,只有Chromium可以找到回送摄像头,但是使用建议的更新,Chromium和Firefox都可以使用。而且仍然没有警告。

回归潜力:本质上,与已发布版本的区别在于,设置了Exclusive_caps之后,视频设备的device_caps会更改。这可能会导致检查不成功,并且不会期望有任何更改。从积极的方面来看,这恰好是20.10 / Groovy中公开的行为。

使用v4l2loopback创建的设备从0.12.3-1升级到0.12.3-1ubuntu0.1后,将不再可用于应用程序(例如MS Teams和Zoom)。在0.12.3-1版本中,设备会显示出来,例如 modprobe v4l2loopback video nr = 2 card label =“ test” 会导致新设备在这些用户界面中显示为“测试”。在0.12.3-1ubuntu0.1版本中,不再显示“测试”设备。 降级到0.12.3-1可以解决此问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。