一、命令分类
1.基本信息查询命令
| 命令 | 注释 |
|---|---|
| -version | 显示版本 |
| -demuxers | 显示可用的demuxers |
| -muxers | 显示可用的muxers |
| -devices | 显示可用的设备 |
| -codecs | 显示所有编解码器 |
| -decoders | 显示可用的解码器 |
| -encoders | 显示所有的编码器 |
| -bsfs | 显示比特流filter |
| -formats | 显示可用的格式 |
| -protocols | 显示可用的协议 |
| -filters | 显示可用的过滤器 |
| -pix_fmts | 显示可用的像素格式 |
| -sample_fmts | 显示可用的采样格式 |
| -layouts | 显示channel名称 |
| -colors | 显示识别的颜色名 |
2.录制命令
(1)录视频
ffmpeg -f avfoundation -i 1 -r 30 out.yuv
参数说明:
-
-f:指定使用 avfoundation 采集数据
-
-i:指定从哪儿采集数据,它是一个文件索引号
(查看文件索引号命令 —— ffmpeg -f avfoundation -list_devices true -i "")
-
-r:指定帧率
播放命令 ffplay -video_size 2880x1800 -pixel_format uyvy422 out.yuv
参数说明:
- -video_size :视频宽高
- -pixel_format:像素格式
(2)录音
ffmpeg -f avfoundation -i :0 out.wav
参数说明:
- :0 :代表音频设备
播放命令:ffplay out.wav
3.分解/复用命令
(1)格式转换
ffmpeg -i test.mp4 -vcodec copy -acodec copy test.flv
参数说明:
- -i:输入文件
- -vcodec copy:视频编码处理方式
- -acodec copy :音频编码处理方式
(2)抽取视频
ffmpeg -i test.mp4 -an -vcodec copy test.h264
参数说明:
- -an:不要音频
(3)抽取音频
ffmpeg -i test.mp4 -vn -acodec copy test.aac
参数说明:
- -vn:不要视频
4.处理原始数据命令
(1)提取YUV数据
ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv
参数说明:
- -c:v rawvideo:指定将视频转成原始数据
(2)提取PCM数据
ffmpeg -i test.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
参数说明:
- -ar:设置音频采样频率
- -ac:设置音频通道的数量
- -f:指定数据存储格式
播放命令:ffplay -ar 44100 -ac 2 -f s16le out.pcm
5.滤镜命令
ffmpeg -i test.mp4 -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
参数说明:
- -vf crop:视频裁剪滤镜
- -c:v :视频编码器
- -c:a :音频编码器
6.裁剪与合并命令
(1)裁剪
ffmpeg -i test.mp4 -ss 00:00:00 -t 1 out.ts
参数说明:
- -ss:裁剪的起始时间
- -t:裁剪时长
(2)合并
ffmpeg -f concat -i input.txt out.mp4
input.txt 中的文件格式(最好是.ts文件):
file 't1.ts'
file 't2.ts'
参数说明:
- -f concat :合并
7.图片/视频互转命令
(1)视频转图片
ffmpeg -i test.mp4 -r 1 -f image2 image-%3d.jpeg
参数说明:
- -r:帧率,每秒钟转换多少张
- -f:指定输出格式
(2)图片转视频
ffmpeg -i image-%3d.jpeg out.mp4
8.直播相关命令
(1)拉流保存
ffmpeg -i rtmp://ns8.indexforce.com/home/mystream -c copy out.mp4
(2)推流
ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/streamName
参数说明:
- -re:与真正的帧率保持一致