一、通用参数说明
-i filename:指定输入文件(必写)-c:v:指定视频编码器,copy表示直接复制流(不重新编码)-c:a:指定音频编码器,copy同上-vn:禁用视频流(只处理音频)-an:禁用音频流(只处理视频)-ss hh:mm:ss:从指定时间点开始处理-t duration:处理时长-s WxH:设置分辨率,如1280x720-r fps:设置帧率,如30-b:v:视频比特率,如1M、2M-b:a:音频比特率,如128k-vf:视频滤镜-af:音频滤镜-f format:强制指定输出格式
二、信息查询类
python
ffmpeg -version # 查看版本信息
ffmpeg -codecs # 查看所有编解码器
ffmpeg -formats # 查看支持的封装格式
ffmpeg -protocols # 查看网络协议支持
ffmpeg -filters # 查看滤镜列表
ffmpeg -i input.mp4 # 查看音视频文件信息
三、格式转换类
python
# 普通格式转换(自动编码)
ffmpeg -i input.mp4 output.avi
# 无损封装转换(仅复制流,速度极快)
ffmpeg -i input.mp4 -c:v copy -c:a copy output.flv
# 提取音频
ffmpeg -i input.mp4 -vn output.mp3
# 提取纯视频(去掉音频)
ffmpeg -i input.mp4 -an output_video.mp4
四、裁剪与截取
python
# 从第10秒开始,截取15秒视频
ffmpeg -ss 00:00:10 -i input.mp4 -t 15 -c copy cut.mp4
# 裁剪画面区域:宽 高 X偏移 Y偏移
ffmpeg -i input.mp4 -vf "crop=800:600:100:50" crop.mp4
五、视频缩放与变换
css
# 缩放到 1280x720
ffmpeg -i input.mp4 -s 1280x720 output.mp4
# 水平翻转
ffmpeg -i input.mp4 -vf hflip output.mp4
# 垂直翻转
ffmpeg -i input.mp4 -vf vflip output.mp4
# 旋转 90 度
ffmpeg -i input.mp4 -vf transpose=1 output.mp4
六、倍速播放处理
python
# 视频 2 倍速
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" fast.mp4
# 视频 0.5 倍速
ffmpeg -i input.mp4 -filter:v "setpts=2*PTS" slow.mp4
七、多视频拼接
- 新建
list.txt
arduino
file '1.mp4'
file '2.mp4'
- 执行拼接
css
ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4
八、视频与图片互转
perl
# 视频转图片序列(每秒1帧)
ffmpeg -i input.mp4 -r 1 frame_%04d.jpg
# 图片序列合成视频
ffmpeg -i frame_%04d.jpg output.mp4
九、直播推流 / 拉流
perl
# 推流到 RTMP
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://xxx/live/stream
# 拉流保存本地
ffmpeg -i rtmp://xxx/live/stream -c copy record.flv
十、原始数据提取
csharp
# 提取 YUV420p 原始视频
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
# 提取 PCM 音频
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
十一、注意事项
-
编码与封装区别
-c copy是仅复制流、不重新编码,速度极快,但要求输入输出编码格式兼容 ;使用滤镜、裁剪、缩放时不能用 copy,必须重新编码。 -
参数顺序很重要
-ss放在-i前是快速跳转截取 ,速度快;放在-i后是精确解码截取,更准但慢。通用规则:选项作用于紧跟其后的文件。 -
视频拼接要求严格 使用
concat拼接时,所有视频的编码、分辨率、帧率、音频格式必须一致,否则会花屏、不同步或失败。 -
避免直接覆盖原文件不要输出到与输入同名文件,会直接损坏源文件;务必使用不同文件名。
-
倍速只改视频会音画不同步 只改
setpts会导致音频速度不变,需要同时用atempo调整音频倍速,否则音画脱节。 -
格式兼容性问题不是所有编码都能放进任意容器:
- FLV 一般只支持 H.264 + AAC/MP3
- MP4 支持 H.264/H.265 + AAC不兼容时会自动转码或报错。
-
直播推流必须加
-re推本地文件时-re表示按原帧率读取,不加会瞬间推完,导致服务器异常、断流。 -
YUV/PCM 无头部信息原始 YUV、PCM 文件不含宽高、采样率等信息,播放或处理时必须手动指定参数。
-
大码率 / 高分辨率建议指定码率 直接转码可能导致体积过大或模糊,可指定
-b:v 4M控制视频码率,保证画质与大小平衡。