FFmpeg 基础知识
ffmpeg 处理流程
从一种编码转换到另一种编码。


基本信息查询命令
| 命令 | 说明 | 命令 | 说明 |
|---|---|---|---|
| -version | 版本 | -formats | 显示可用的格式 |
| -demuxers | 显示可用的 demuxers | -protocols | 显示可用的协议 |
| -muxers | 显示可用的 muxers | -filters | 显示可用的过滤器 |
| -devices | 显示可用的设备 | -pix_fmts | 显示可用的像素格式 |
| -decoders | 显示可用的解码器 | -layouts | 显示 channel 名称 |
| -encoders | 显示所有编码器 | -colors | 显示识别的颜色名称 |
| -bsfs | 显示比特率 filter |

D表示解码器E表示编码器
录制命令
使用 ffmpeg 录制屏幕
|
|
-f: 指定使用 avfoundation 采集数据,mac 下专用于音视频处理-i: 指定从哪儿采集输入,是一个文件索引号-r: 指定帧率
使用 ffplay 播放视频
|
|
-video_size: yuv 中不包含视频大小,需要指定尺寸,在上面录制时就已给定。-pixel_format: 播放帧格式与录制的格式必须相同,才能真确播放
上面提到 -i 指定采集输入,如何查看索引号呢?
|
|
使用 ffmpeg 录制音频
|
|
- 注意这次序号前面加了
:,冒号前面表示视频设备,冒号后面表示音频设备。
分解/复用命令

将 mp4 转成 flv
|
|
-vcodec: 视频编码处理方式,copy 表示使用原始格式q-acodec: 音频编码处理方式
抽取视频
|
|
抽取音频
|
|
-an: audio null,表示过滤掉音频-vn: video null,表示过滤掉视频
处理原始数据命令
提前 YUV 数据
|
|
-c: 指定编解码器-c:v: 限定只处理视频画面,例如-c:v libx264表示转换为 h264,-c:v rawvideo表是提取 YUV 数据,也可以-c:v h264直接操作。-c:a: 限定只处理音频声音,例如-c:a libmp3lame,表示转换 mp3,也可以-c:a mp3直接操作。-c:s: 限定只处理字幕
提取 PCM 数据
|
|
-ar: audio rate,指定音频采样率-ac: audio channel,指定声道,2 表示双声道-f: 指定格式,s有符号,16表示每个数值是 16 位
播放 PCM 数据
跟提取时一样,也要指定相关参数
|
|
裁剪与合并命令
视频裁剪
|
|
-ss: 开始裁剪时间,指定时分秒-t: 裁剪市场,单位秒
视频合并
在合并之前,需要创建包含所有切片的文件
|
|
|
|
-f concat: 指定合并
图片/视频互转命令
视频转图片
配合视频裁剪有奇效。
|
|
-r: 指定转换图片的帧率,1表示每秒转出一张图片-f image2: 指定 jpeg 编码器%3d.jpeg: 这是一个动态增长的文件名,最大 3 位数,不足补 0。
图片转视频
|
|
直播推/拉流
直播推流
|
|
-re: 减慢帧率速度,对于直播流来说,让帧率与声音保持同步-c copy: 不做音视频编码
直播拉流
|
|
滤镜命令
倍速,画中画,修改长宽等。

调整宽高
|
|
-vf: 指定滤镜crop=in_w-200:in_h-200: 修改宽高-c:v: 视频编码