Eson Wong  /  文章

使用 v4l 采集摄像头

约 1 分钟

怎么在 Linux 上使用 FFmpeg 采集摄像头

FFmpeg 是一个非常强大的视频处理工具。大多数应用都会使用 FFmpeg 来处理视频。我的 Network RC 项目也使用了 FFmpeg 来处理视频。

Video4Linux2

Video4Linux2(v4l2) 是 Linux 上的一个视频采集框架,它提供了一套统一的接口,可以方便的接入视频设备的输入和输出。FFmpeg 也可以通过 Video4Linux2 接口来采集摄像头的视频。

v4l2-ctl

v4l2-ctl 是 Video4Linux2 的一个命令行工具,可以用来查看和设置视频设备的参数。

# 查看视频输入设备
v4l2-ctl -n
# or
v4l2-ctl --list-inputs

# 设置视频输入设备
v4l2-ctl -i 0 # 设置 index 为 0 的视频输入设备作为当前视频输入设备
# or
v4l2-ctl --set-input 0

# 查看支持的输出的格式
v4l2-ctl --list-formats

# 查看支持的分辨率
v4l2-ctl --list-framesizes=YUYV

# 查看支持的帧率
v4l2-ctl --list-frameintervals width=1920,height=1080,pixelformat=YUYV

# 查看视频输入设备的控制参数
v4l2-ctl --list-ctrls

# 查看视频输入设备的控制参数的值
v4l2-ctl --get-ctrl=iso_sensitivity

# 设置视频输入设备的控制参数的值
v4l2-ctl --set-ctrl=iso_sensitivity=100

FFmpeg 使用 Video4Linux2 采集摄像头

输入设备

在 ffmpeg 命令中,使用 -f v4l2-f video4linux2 指定视频输入接口为 Video4Linux2。 使用 -i /dev/video0 指定视频输入设备路径为。

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -f mp4 camera-test.mp4

采集格式

使用 -input_format 指定视频输入格式。

ffmpeg -f v4l2 -i /dev/video0 -input_format yuyv422 -c:v libx264 -preset ultrafast -f mp4 camera-test.mp4

分辨率

使用 -video_size 指定视频分辨率。

ffmpeg -f v4l2 -i /dev/video0 -video_size 1920x1080 -c:v libx264 -preset ultrafast -f mp4 camera-test.mp4
# or
ffmpeg -f v4l2 -i /dev/video0 -s 1920x1080 -c:v libx264 -preset ultrafast -f mp4 camera-test.mp4

帧率

使用 -framerate 指定视频帧率。

ffmpeg -f v4l2 -i /dev/video0 -framerate 30 -c:v libx264 -preset ultrafast -f mp4 camera-test.mp4
← 怎么用 Github Actions 部署 Next.js 项目到服务器怎么解决 Prettier 和 ESLint 在 VSCode 里的冲突? →

评论 · 0