FFmpeg常用命令行命令

一、通用参数说明

  • -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:强制指定输出格式

二、信息查询类

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

七、多视频拼接

  1. 新建 list.txt
arduino 复制代码
file '1.mp4'
file '2.mp4'
  1. 执行拼接
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 控制视频码率,保证画质与大小平衡。

相关推荐
无风听海6 小时前
深入剖析 YARP 的 Transforms:构建灵活的反向代理转换管道
后端·中间件·asp.net
Gopher_HBo6 小时前
负载均衡
后端
自由生长20246 小时前
RAG已死?什么标题党啊!
后端
东方小月7 小时前
5分钟搞懂Harness Engineering(驾驭工程):从提示词到AI Agent的进化之路
前端·后端·架构
折哥的程序人生 · 物流技术专研9 小时前
Java面试85题图解版(一):基础核心篇
java·开发语言·后端·面试
Moment10 小时前
面试官:如果产品经理给你多个需求,怎么让AI去完成❓❓❓
前端·后端·面试
每天进步一点_JL11 小时前
JVM 内存模型与 OOM 排查:从入门到实战
后端
REDcker11 小时前
个人博客网站建设指南 Markdown资产化与静态站选型部署
前端·后端·博客·markdown·网站·资产·建站
Supersist11 小时前
【设计模式03】使用模版模式+责任链模式优化实战
后端·设计模式·代码规范
Fox爱分享12 小时前
字节二面:10亿数据毫秒级查手机尾号后4位,答不出“异构索引”直接挂?
java·后端·面试