限时福利领取


为什么需要这份FFmpeg备忘录?

每次处理音视频都要翻文档查参数?组合命令时总报错却找不到原因?作为一款强大的多媒体处理工具,FFmpeg的参数复杂度常常让人望而生畏。记得刚入门时,我为了剪一段10秒的视频,居然花了半小时查-crf和-preset的区别。本文把踩过的坑和实战经验整理成速查表,帮你节省30%的调试时间。

FFmpeg处理流程示意图

一、基础命令分类速查

1. 格式转换(万能模板)

# 通用转码示例(MP4转MOV)
ffmpeg -i input.mp4 -c:v copy -c:a copy output.mov
  • -c:v copy 表示视频流直接复制不重编码
  • 同理-c:a处理音频流,适合单纯改格式的场景

2. 视频压缩(平衡质量与体积)

# H.264编码示例(推荐参数)
ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 23 -c:a aac output.mp4
  • -preset:越慢压缩率越高(可选:ultrafast/slow/veryslow)
  • -crf:18-28之间质量可接受,值越小画质越好

编码参数对比图

二、高级操作实战

1. 精准剪辑(避免黑帧问题)

# 截取00:01:00到00:02:30的视频段
ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -c copy clip.mp4

关键点: 1. -ss放在-i前可加速定位(关键帧搜索) 2. 精确到帧需要加-avoid_negative_ts 1

2. 画中画特效(滤镜链应用)

ffmpeg -i main.mp4 -i overlay.mp4 -filter_complex \
"[1:v]scale=iw/4:ih/4 [pip]; [0:v][pip] overlay=W-w-10:H-h-10" \
output.mp4
  • scale调整子画面大小
  • overlay控制位置(示例为右下角留10像素边距)

三、性能优化与避坑

CPU占用对比测试(同一段4K视频)

| 参数组合 | 耗时 | CPU峰值 | 输出大小 | |-------------------|-------|--------|----------| | -preset ultrafast | 38s | 90% | 258MB | | -preset slow | 2m12s | 60% | 187MB |

常见问题排查: - 音画不同步:检查输入文件是否带B帧,尝试-fflags +genpts - 绿屏问题:确认解码器支持(如HEVC需要libx265

安全注意事项

  1. 处理用户上传文件时,务必先验证文件头
  2. 避免直接拼接用户输入到命令中,推荐使用:
    ffmpeg -safe 0 -i user_input.mp4 ...

进阶挑战

尝试用两个视频源+字幕流生成画中画带字幕的成品,推荐组合: 1. 用subtitles滤镜加载ASS字幕 2. 通过-map指令精确控制流映射 3. 使用-threads参数控制多核利用率

下次遇到媒体处理需求时,不妨先来这份速查表找找灵感~

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐