视频采集流程
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