FFmpeg常用命令行命令

3 阅读3分钟

一、通用参数说明

  • -i filename:指定输入文件(必写)
  • -c:v:指定视频编码器,copy 表示直接复制流(不重新编码)
  • -c:a:指定音频编码器,copy 同上
  • -vn:禁用视频流(只处理音频)
  • -an:禁用音频流(只处理视频)
  • -ss hh:mm:ss:从指定时间点开始处理
  • -t duration:处理时长
  • -s WxH:设置分辨率,如 1280x720
  • -r fps:设置帧率,如 30
  • -b:v:视频比特率,如 1M2M
  • -b:a:音频比特率,如 128k
  • -vf:视频滤镜
  • -af:音频滤镜
  • -f format:强制指定输出格式

二、信息查询类

ffmpeg -version                # 查看版本信息
ffmpeg -codecs                 # 查看所有编解码器
ffmpeg -formats                # 查看支持的封装格式
ffmpeg -protocols              # 查看网络协议支持
ffmpeg -filters                # 查看滤镜列表
ffmpeg -i input.mp4            # 查看音视频文件信息

三、格式转换类

# 普通格式转换(自动编码)
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

四、裁剪与截取

# 从第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

五、视频缩放与变换

# 缩放到 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

六、倍速播放处理

# 视频 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

七、多视频拼接

  1. 新建 list.txt
file '1.mp4'
file '2.mp4'
  1. 执行拼接
ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4

八、视频与图片互转

# 视频转图片序列(每秒1帧)
ffmpeg -i input.mp4 -r 1 frame_%04d.jpg

# 图片序列合成视频
ffmpeg -i frame_%04d.jpg output.mp4

九、直播推流 / 拉流

# 推流到 RTMP
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://xxx/live/stream

# 拉流保存本地
ffmpeg -i rtmp://xxx/live/stream -c copy record.flv

十、原始数据提取

# 提取 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 控制视频码率,保证画质与大小平衡。