Eson Wong's Blog

编程笔记,投资记录, 读书总结, 生活心得

0%

使用 v4l 采集摄像头

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

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

Video4Linux2

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

v4l2-ctl

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 查看视频输入设备
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 指定视频输入设备路径为。

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

采集格式

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

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

分辨率

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

1
2
3
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 指定视频帧率。

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

欢迎关注我的其它发布渠道