1.基本信息查询命令
2.录制命令
(1)录制视频(屏幕)
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-
-f:指定使用avfoundation采集数据
-
-i:指定从哪儿采集数据,它是一个文件索引号
-
-r:指定帧率
录制视频测试
1.终端中输入命令
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
2.录制结束,播放录制视频
ffplay out.yuv
会出现如下问题:
是因为ffplay输入的是原始数据,不知道存的数据每一张图的大小是多少,所以无法渲染展示。所以我们需要给他一个尺寸大小。
我们在录制的时候有一个大小参数
带上这个参数去播放视频
ffplay -s 2560-1600 out.yuv
但是视频确是乱码,没法看。这是因为ffplay打开是按照yuv420p格式来的,而视频录制时的格式为uyvy422,所以需要指定视频录制时的格式。
ffplay -s 2560-1600 -pix_fmt uyvy422 out.yuv
这时候我们就可以看到刚才录制的视频了
(2)录制视频(摄像头)
ffmpeg -f avfoundation -list_devices true -i ""
使用上述命令可以看到当前mac系统下acfoundation支持哪种设备
video[0]代表摄像头,video[1]代表屏幕,autio[0]代表内置麦克风。
下面我们开始录制摄像头版的视频,把-i的值改为0即可
ffmpeg -f avfoundation -i 0 -r 30 out1.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
(2)录制音频
ffmpeg -f avfoundation -i :0 out.wav
打开刚才录制的音频
ffplay out.wav
3.分解/复用命令
(1)多媒体格式转换
ffmpeg -i out.mp3 -vcodec copy -acodec copy out.flv
-
-i:输入文件
-
-vcodec copy:视频编码处理方式
-
-acodec copy:音频编码处理方式
例如我们要将一个mp4视频文件中的音频提取出来
ffmpeg -i test.mp4 -vn -acodec copy test111.aac
还可以将视频文件中的视频提取出来
ffmpeg -i test.mp4 -vcodec copy -an test222.h264
我们可以用ffmplay打开这两个音视频文件
4.处理原始数据命令
(1)提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
(2)提取PCM数据
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
这里我们提取一个mp3文件的PCM数据
ffmpeg -i /Users/apple/Music/网易云音乐/许嵩\,何婷\ -\ 素颜.mp3 -vn -ar 44100 -ac 2 -f s16le out3.pcm
然后通过ffplay播放
ffplay -ar 44100 -ac 2 -f s16le out3.pcm
5.裁剪与合并命令
(1)裁剪
ffmpeg -i input.mp4 -ss 00:00:00 -t 10 1.ts
-
-i:需要裁剪的视频
-
-ss:裁剪开始的时间 时:分:秒
-
-t:裁剪的时间
(2)合并
ffmpeg -f concat -i inputs.txt -c:v out.flv
-
input.txt内容为需要合并的文件,格式为
file '1.ts' file '2.ts'
6.图片/视频互转命令
(1)视频转图片
ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
(2)视频转图片
ffmpeg -i video-frame-%3d.jpeg -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
7.直播相关命令
(1)直播推流
ffmpeg -re -i out.mp4 -c copy -f flv remp://server/live/streamName
(2)直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv