FFmpeg常用命令-视频采集

992 阅读2分钟

视频采集流程

1. 基本信息查询命令

2. 录制命令

ffmpeg -f avfoundation -i 1 -r 30 out.yuv 
-f: 指定使用avfoundation采集数据 
-i: 指定从哪里采集数据,它是一个文件索引 
-r: 指定帧率

2.1 录制视频(屏幕)

录制视频测试:

2.1.1 终端输入命令

ffmpeg -f avfoundation -i 1 -r 30 out.yuv

2.1.2 录制结束命令

control + c 结束录制

2.1.3 录制结束,播放录制视频

ffplay out.yuv

出现如下报错:

是因为ffplay输入的是原始数据,不知道存的数据每一张图的大小是多少,所以无法渲染展示。所以我们需要给他一个尺寸大小。

我们在录制的时候有一个大小参数:

带上这个参数再去播放视频

ffplay -s 2560-1600 out.yuv

但是视频确是乱码,没法看。这是因为ffplay打开是按照yuv420p格式来的,而视频录制时的格式为uyvy422,所以需要指定视频录制时的格式。

ffplay -s 2560-1600 -pix_fmt uyvy422 out.yuv

这个时候我们就能看到刚才录制的视频了

2.2 录制视频(摄像头)

ffmpeg -f avfoundation -list_devices true -i ""

使用上述命令可以看到当前mac系统下acfoundation支持哪种设备

video[0]代表摄像头,video[1]代表屏幕,autio[0]代表内置麦克风

video[0]代表摄像头,video[1]代表屏幕,autio[0]代表内置麦克风。

下面我们开始录制摄像头版的视频,把-i的值改为0即可:

ffmpeg -f avfoundation -i 0 -r 30 out.yuv

通过报错日志 Selected framerate (29.970030) is not supported by the device 可以看出,默认的framerate 不被设备支持,下面也给出了支持的分辨率和framerate,所以我们需要改一下命令:

ffmpeg -f avfoundation -video_size 640x480 -framerate 30 -i 0: -r 30 out1.yuv

录制一定时间后,结束录制,打开刚才的视频:

ffplay -s 640-480 -pix_fmt uyvy422 out1.yuv