1、FFmpeg 命令分类
分类 | 分类 |
---|---|
(1)基本信息查询命令 | (5)各种滤镜命令 |
(2)录制命令 | (6)裁剪与合并命令 |
(3)分解/复用命令 | (7)图片/视频互转命令 |
(4)处理原始数据命令 | (8)直播相关命令 |
2、FFmpeg 相关的各种流程图
-
FFmpeg 之处理音视频流程图
-
FFmpeg 之分解与复用流程图
-
[FFmpeg 之滤镜处理流程图
3、FFmpeg 基本信息查询命令
命令 | 含义 | 命令 | 含义 |
---|---|---|---|
-version | 显示版本 | -formats | 显示可用的格式 |
-demuxers | 显示可用的 demuxers | -protocols | 显示可用的协议 |
-muxer | 显示可用的 muxers | -filters | 显示可用的过滤器 |
-devices | 显示可用的设备 | -pix_fmts | 显示可用的像素格式 |
-codecs | 显示所有编解码器 | -sample_fmts | 显示可用的采样格式 |
-decoders | 显示可用的解码器 | -layouts | 显示 channel 名称 |
-encoders | 显示所有的编码器 | -colors | 显示识别的颜色名称 |
-bsfs | 显示比特流 filter |
4、FFmpeg 录制命令
- 录制桌面
示例:ffmpeg -f avfoundation -i 1 -r 30 out.yuv
-f:指定使用 avfoundation 采集数据
-i:指定从哪里采集数据,它是一个文件的索引号
-r:指定帧率
control+c:停止录制
获取采集设备的文件索引号: ffmpeg -f avfoundation -list_devices true -i ""
播放视频:ffplay -s 3840x2160 -pix_fmt uyvy422 out.yuv
-s:指定录制时的视频大小
-pix_fmt:指定录制时的像素格式
- 录制音频
示例:ffmpeg -f avfoundation -i :0 out.wav
:0:代表音频设备
播放音频:ffplay out.wav
5、FFmpeg 分解与复用命令
- 多媒体格式转换
示例:ffmpeg -i out.mp4 -acodec copy -vcodec copy out.flv
-i:输入文件
-acodec copy:音频编码处理方式
-vcodec copy:视频编码处理方式
直接抽取音频:ffmpeg -i out.mp4 -acodec copy -vn out.aac
直接抽取视频:ffmpeg -i out.mp4 -an -vcodec copy out.h264
6、FFmpeg 处理原始数据命令
- 原始数据就是 ffmpeg 解码后的数据,通俗理解,对于音频就是 .pcm 数据,对于视频就是 .yuv 数据。
- FFmpeg 提取 YUV 数据:
示例:ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
-an:所要输出的结果不包含音频
-c:v:指定视频编码格式
rawvideo:标识使用原始视频进行编码
-pix_fmt:指定录制时的像素格式
yuv格式有:yuv4:4:4、yuv4:2:2、yuv4:2:0
播放:ffplay -s 544x960 out.yuv
- FFmpeg 提取 PCM 数据:
示例:ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
-vn: 所要输出的结果不包含视频
-ar:设置音频采样率
-ac:代表声道数,2标识双声道
-f:设置音频 pcm 数据的存储格式是什么
播放:ffplay -ar 44100 -ac 2 -f s16le out.pcm
7、FFmpeg 滤镜命令
- 视频裁剪滤镜
示例:ffmpeg -i input.mp4 -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
-vf:设置视频滤镜
-c:v:指定视频编码格式
-c:a:指定音频编码格式
8、FFmpeg 裁剪与合并命令
- 音视频裁剪
示例:ffmpeg i input.mp4 -ss 00:00:00 -t 10 out.ts
-ss:标识视频从什么时间戳开始裁剪,时:分:秒
-t:标识裁剪多少秒,以秒为单位
- 音视频合并
示例:ffmpeg -f concat -i inputs.txt out.mp4
-f concat:标识对后面的文件进行拼接合并
inputs.txt:内容为 'file filename' 格式
9、FFmpeg 图片/视频互转命令
- 视频转图片
示例:ffmpeg -i input.mp4 -r 1 -f image2 image-%3d.jpeg
-r:指定转换图片的帧率
-f:指定转换的格式
image-%3d.jpeg:动态输出图片文件名
打开图片:open image-001.jpeg
- 图片转视频
示例:ffmpeg -i image-%3d.jpeg out.mp4
10、FFmpeg 直播相关命令
- 直播推流
示例:ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live/streamName
-re:减慢帧率速度,保持跟真正的帧率同步
-c:指定音视频模式
-f:指定推出的流的格式
- 直播拉流
示例:ffmpeg -i rtmp://server/live/streamName -c copy dump.flv