为什么会有所不同?

为什么会有所不同?

我尝试在 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 使用率或延迟。

相关内容