可以参考雷霄骅博士的入门系列教程:https://blog.csdn.net/leixiaohua1020/article/details/18893769
1.基本信息查询命令
2.录制命令
1.ffmpeg录屏命令
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:指定使用avfoundation采集数据(mac下)
-i:指定从哪采集数据,它是一个文件索引号,1是指电脑屏幕
-r:指定帧率
ctrl+c录制完成,使用ffplay命令播放
ffplay -s 2560×1600 -pix_fmt uyvy422 out.yuv
-s:指定分辨率
-pix_fmt:指定录制时使用的像素格式
查看-i指令所有的文件索引号
ffmpeg -f avfoundation -list_devices true -i ""
mac下视频:0-摄像头,1-屏幕;音频:1-系统麦克风。
2.ffmpeg录音指令
ffmpeg -f avfoundation -i :0 out.wav
-i:指定从哪采集数据,注意0前面的冒号,冒号前指定视频设备索引,冒号后指定音频设备索引。
录制完成,播放
ffplay out.wav
3.分解/复用命令
1.改变视频封装格式
ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
-i:输入文件
-vcodec copy:视频编码处理方式
-acodec copy:音频编码处理方式
2.抽取视频
ffmpeg -i out.mp4 -vcodec copy -an out.h264
-an:audio no,不要音频
3.抽取音频
ffmpeg -i out.mp4 -acodec copy -vn out.aac
-vn:video no,不要视频
4.处理原始数据命令
1.ffmpeg提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
-c:v:code video,指定视频编码器
rawvideo:编码格式,对原始视频进行编码
-pix_fmt:像素格式,原始视频必须指定像素格式
播放yuv格式数据:ffplay out.yuv
但这时会报错
Picture size 0x0 is invalid sq= 0B f=0/0
out.yuv: Invalid argument
是因为对原始视频进行编码没有指定分辨率。
播放时指定分辨率:ffplay -s 576x1024 out.yuv 即可正确播放。
2.ffmpeg提取PCM数据
ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
-ar:音频采样率,常用采样率44.1k,48k,32k,16k
-ac:audio channel,声道,1-单声道,2-双声道,立体声,环绕立体声
-f:抽取的音频PCM数据存储格式,s-有符号的,16-每一个数值16位标识,le-little小头存储
使用ffplay播放报错:
out.pcm: Invalid data found when processing input sq= 0B f=0/0
是因为没有指定采样率和声道
播放时指定采样率等信息:ffplay -ar 44100 -ac 2 -f s16le out.pcm
5.裁剪与合并命令
1.音视频裁剪
ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
-ss:视频从什么时间开始裁剪
-t:裁剪的时长,单位s
2.音视频合并
ffmpeg -f concat -i inputs.txt out.flv
concat:拼接命令
attention:inputs.txt内容为file filename格式
inputs.txt文件内容 file '2.ts' file '1.ts' |
6.图片/视频互转命令
1.视频换图片
ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
-r:指定转换图片的帧率,1-每秒一张
-f:告诉ffmpeg将输入文件转成什么格式
image2:文件格式
2.图片转视频
ffmpeg -i image-%3d.jpeg out.mp4
7.直播相关命令
1.直播推流
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
-re:减慢帧率
-i:要推出去的多媒体文件
-c:同时指定音视频编码
2.直播拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
3.实操直播拉流
首先搜一些RTMP、RTSP、HTTP视频协议直播流地址
例如CCTV6,先用ffplay命令看下能不能播
ffplay http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
拉流
ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8 -c copy dump.m3u8
注意保存格式,拉取的时候是什么格式,存储就是什么格式。
8.各种滤镜命令
1.视频裁剪
ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-vf:视频滤镜
crop:滤镜名字,in_w视频本身宽度,in_h视频本身高度
in_w-200:视频本身宽度减200