13.3 摄像头
本节将介绍如何为 FreeBSD 系统配置摄像头。
Video for Linux 2(V4L2)是第二代 V4L。V4L2 是 Linux 内核中视频设备的内核驱动框架。
FreeBSD 访问和配置摄像头需要安装以下工具:
| Port | 说明 |
|---|---|
| multimedia/webcamd | 守护进程,从 Linux USB 网络摄像头和 DVB 驱动程序移植而来,支持使用数百种不同的 USB 摄像头和 DVB USB 设备 |
| multimedia/pwcview | 可用于查看摄像头的视频流 |
| multimedia/mpv | 也可用于查看摄像头的 V4L2 视频流 |
| multimedia/v4l-utils | 用于配置和测试 Video4Linux 设备 |
13.3.1 安装摄像头软件
要使用 pkg 安装所需的实用工具,请执行:
# pkg install webcamd pwcview mpv v4l-utils使用 Ports 安装:
# cd /usr/ports/multimedia/webcamd && make install clean
# cd /usr/ports/multimedia/pwcview && make install clean
# cd /usr/ports/multimedia/mpv && make install clean
# cd /usr/ports/multimedia/v4l-utils && make install clean13.3.2 服务管理
启用 webcamd 服务,以便在系统启动时自动启动:
# service webcamd enable重新加载设备状态服务:
# service devd restart13.3.3 用户管理
用户必须属于 webcamd 组。要将用户 ykla 添加到 webcamd 组,请执行以下命令:
# pw groupmod webcamd -m ykla13.3.4 获取摄像头列表
安装完这些工具后,可以使用 webcamd 显示可用的摄像头列表:
# webcamd -l输出应该类似于以下内容:
webcamd [-d ugen1.2] -N Jieli-Technology-USB-Composite-Device -S unknown -M 0发现了可用的摄像头“Jieli-Technology-USB-Composite-Device”。
临时测试摄像头:
$ webcamd -d ugen1.2请保持其在前台运行,便于后续配置。
将生成设备文件 /dev/video0 和 /dev/video1。
13.3.5 查看摄像头配置
使用 v4l2-ctl 工具列出摄像头支持的参数:
$ v4l2-ctl --list-formats-ext -d /dev/video0
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'MJPG' (Motion-JPEG, compressed)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
[1]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)以上详细列出了该摄像头支持的视频格式、分辨率以及在不同分辨率下的帧率(FPS)。
13.3.6 检查摄像头
13.3.6.1 使用 multimedia/pwcview 检查摄像头
可以使用 multimedia/pwcview 检查摄像头是否正常工作。
临时禁用 SDL 的 Xv 硬件加速,避免黑屏等意外情况,如果测试通过可移除该环境变量。
$ export SDL_VIDEO_YUV_HWACCEL=0再次运行 pwcview(分辨率 1600x1200@30帧):
$ pwcview -f 30 -s uxga此后 multimedia/pwcview 将显示摄像头画面:

13.3.6.2 使用 mpv 检查摄像头
可以使用 multimedia/mpv 检查摄像头是否正常工作。
$ mpv av://v4l2:/dev/video0 --vo=x11以上命令使用 --vo=x11 禁用硬件加速,避免意外情况,如果测试通过可移除该参数。
此后 multimedia/mpv 将显示摄像头画面:

13.3.7 永久设置摄像头
确认摄像头工作正常后,可以固化上述配置。
通过执行以下命令配置可用的摄像头:
# sysrc webcamd_0_flags="-d ugen1.2"注意
如果这是即插即用的 USB 摄像头,在其连接的 USB 端口发生变动后,
webcamd -l的输出(尤其是设备标识符)将发生变化,可能需要同步更新/etc/rc.conf。
必须通过执行以下命令启动 webcamd 服务:
# service webcamd restart输出应类似于以下内容:
Starting webcamd.
webcamd 2652 - - Attached to ugen1.2[0]13.3.8 在线测试摄像头
使用“摄像头测试”网站在线测试摄像头:https://www.onlinemictest.com/webcam-test。
