在 Linux 中,摄像头支持的核心是 V4L2(Video4Linux2)内核接口。绝大多数摄像头设备都会以 /dev/video* 的形式出现,USB 摄像头通常使用 UVC(USB Video Class)协议,由内核中的 uvcvideo 驱动加载。因此,选择 Linux 摄像头软件,本质上是在选择适合你的使用场景的 V4L2 前端应用。

桌面简单拍照和录像,推荐使用 GNOME 桌面环境下的 Cheese。Cheese 界面简洁,支持照片、视频、特效和连拍,适合普通用户快速使用摄像头。KDE 桌面则常用 Kamoso,它同样支持拍照和录像,集成度较好,但功能相对基础。
如果需要查看和调节摄像头详细参数,可以使用 GUVCView。GUVCView 是一款面向 UVC 摄像头的小型 GTK 工具,可以实时显示画面,并提供亮度、对比度、饱和度、增益、白平衡、曝光等 V4L2 控件的调节。它比 Cheese 更轻量,延迟也更可控,适合调试摄像头画质。
直播推流和专业录屏,最主流的选择是 OBS Studio。OBS 在 Linux 上通过添加“视频采集设备”源来读取 V4L2 设备,它支持多场景、滤镜、色度键、音频混音、RTMP 推流,以及 x264、NVENC、VAAPI 等编码器。对于直播和教程录制,OBS 是最专业的开源方案。
命令行环境下,可以使用 fswebcam 直接抓取单张图片。例如,fswebcam -d /dev/video0 -r 1280x720 image.jpg 适合脚本定时拍照。更强大的通用工具是 ffmpeg,它可以直接从 V4L2 设备采集视频并转封装、编码或推流。例如,ffmpeg -f v4l2 -video_size 1280x720 -i /dev/video0 output.mp4 可以录制视频。
网络视频监控和移动侦测,可以使用 Motion、MotionEye、ZoneMinder 和 Frigate。Motion 是经典的 V4L2 移动侦测程序,适合单摄像头;MotionEye 为它提供了 Web 管理界面。ZoneMinder 适合传统多摄像头监控系统。Frigate 是现代化的 NVR 方案,支持 RTSP、ONVIF 和基于 AI 的物体识别,适合自建智能监控平台。
对于 IP 摄像头或 RTSP 网络摄像头,可以使用 ffmpeg 拉取并录制,例如 ffmpeg -rtsp_transport tcp -i rtsp://192.168.1.1/stream -c copy record.mp4,也可以使用 VLC 打开网络串流并转码或录制。VLC 同样支持直接打开本地 V4L2 设备,并可用于画面预览。
对于 单反相机或微单相机的联机拍摄,专业工具是 gphoto2。gphoto2 是一个命令行工具,支持控制快门、光圈、ISO、曝光补偿,并从相机读取照片。图形界面上可以使用 Entangle,它提供专业的联机取景和远程控制体验。照片管理和后期软件 DigiKam 也内置了相机采集功能。
如果需要把 手机摄像头变成 Linux 的摄像头,可以使用 DroidCam 或 Iriun Webcam。这类工具通过 USB 或 Wi-Fi 将手机画面传输到 Linux,再借助 v4l2loopback 内核模块生成虚拟 V4L2 设备,供 OBS、Zoom、Teams 等软件调用。
在安装软件之前,建议先安装 v4l-utils 工具包。使用 v4l2-ctl --list-devices 可以列出所有摄像头设备,使用 v4l2-ctl -d /dev/video0 --list-formats-ext 可以查看摄像头支持的分辨率、帧率和像素格式。这样可以确认设备是否正确工作,避免软件找不到摄像头。
需要特别注意的是,同一摄像头设备节点通常只能被一个程序独占使用。如果 OBS 已经打开了 /dev/video0,Cheese 就无法再访问同一节点。多程序同时使用摄像头时,需要通过 v4l2loopback 创建虚拟设备,或将摄像头画面复制到虚拟节点,才能实现多用户共享。
总结:如果只是日常通话或简单拍摄,使用 Cheese 或 Kamoso;如果需要专业调试画质,使用 GUVCView;直播和录屏使用 OBS Studio;命令行抓拍和自动化拍摄使用 fswebcam 或 ffmpeg;家用监控使用 MotionEye 或 Frigate;相机联机拍摄使用 gphoto2 或 Entangle。没有绝对最好的 Linux 摄像头软件,只有最匹配使用场景的工具。

查看详情

查看详情