我尝试在 3 台运行 Ubuntu 20.04 且速度和规格不同的计算机上安装并运行最新的 Zoom 客户端:它们都使用高清网络摄像头(logitech c930e)以低、放大、颗粒状的分辨率显示我自己的图像。
在这 3 台计算机上,运行 Windows 或 Mac Os 上的 Zoom 客户端允许我发送高清流。
是的,我在 Zoom 客户端设置中确实勾选了“HD”,所以这肯定不是电脑或网络摄像头的问题,而是 Zoom 客户端和 Ubuntu 之间发生的事情。
在运行相同 Ubuntu 20.04 的同一台计算机上,Jitsi、Hangouts 或 Skype 等其他视频会议工具不会出现此类问题。
此修复针对的是 UI,而不是视频流,但我还是尝试了:Zoom 会议分辨率问题但它并没有解决我的问题。
答案1
尝试使用 v4l2loopback 将您的网络摄像头的反馈重定向至虚拟网络摄像头。
如果你很幸运,Zoom 可以正确读取虚拟网络摄像头的数据
假设您的网络摄像头位于 /dev/video0,我们将在 /dev/video1 上创建一个虚拟网络摄像头:
modprobe v4l2loopback exclusive_caps=1 video_nr=1
ffmpeg -i /dev/video0 -f v4l2 -pix_fmt yuv420p /dev/video1
删除网络摄像头:
modprobe -r v4l2loopback
测试虚拟供稿:
ffplay /dev/video1
为什么会有所不同?
网络摄像头具有“功能标记”,有些应用程序在看到它们不喜欢的标记时会出现错误或挑剔。因此,如果虚拟网络摄像头呈现一组与原始硬件不同的标记,也许它可以工作。
这就是我在 modprobe 命令中添加“exclusive_caps=1”的原因。例如,Chrome 需要该设置才能正常工作。
如果这不能解决问题,您应该重复此过程(删除 v4l2loopback 并再次插入)但跳过“exclusive_caps = 1”参数。
还有其他参数可以通过 v4l2loopback-ctl 进行改变(例如格式和帧速率),最终可能会解决您的问题。
由于格式需要实时转换,因此改变格式可能会导致更高的 CPU 使用率或延迟。