首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux 双显卡环境下摄像头无法使用V4L2 buffer 错误?

Linux 双显卡环境下摄像头无法使用V4L2 buffer 错误?

提问于 2026-02-27 10:52:27
回答 1关注 0查看 49

环境信息:

- 系统:Pop!_OS 24.04,内核 6.17.9

- 显卡:Intel Arrow Lake-U 集显 + NVIDIA 独显(双显卡)

- 腾讯会议版本:3.26.10.401(deb 包)

- 桌面:COSMIC(Wayland,已自动切换 XWayland)

- 摄像头:Syntek Integrated Camera(UVC,/dev/video0)

问题现象:

进入会议开启摄像头后画面黑屏,无法显示视频。摄像头指示灯亮起,说明设备已被打开,但无画面输出。使用 ffmpeg、微信视频等其他软件摄像头均正常。

日志关键报错(xcast log):

v4l2.c:320 | Not enough buffer on device:/dev/video0

v4l2.c:333 | Could not requeue buffer on device:/dev/video0

video_capture_linux.c:416 | camera[0x29f46150].is.busy

摄像头 init、config(1280x720 MJPEG)、start 均成功,但紧接着 V4L2 buffer requeue 持续失败,累计数百次。

根因分析:

腾讯会议默认使用 NVIDIA EGL 渲染,NVIDIA 私有驱动的 EGL 实现与 V4L2 mmap buffer 管理机制存在冲突,导致视频帧 buffer 无法正常回收和重新排队。

临时解决方案:

在 /opt/wemeet/wemeetapp.sh 中添加以下环境变量,强制使用 Mesa(Intel 集显)渲染后摄像头恢复正常:

export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json

export __GLX_VENDOR_LIBRARY_NAME=mesa

建议:

请在启动脚本中增加双显卡环境检测逻辑,当检测到 NVIDIA + Intel 双显卡时自动回退至 Mesa EGL,或修复 V4L2 采集模块与 NVIDIA EGL 的兼容性问题。

相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档