开始前

不确定本机有哪些编码器、过滤器或硬件加速时,先查能力再下命令:

ffmpeg -version
ffmpeg -encoders
ffmpeg -filters
ffmpeg -hwaccels
ffmpeg -pix_fmts

查看输入文件的流信息:

ffprobe -hide_banner input.mp4
选项顺序:输入选项放在对应 -i 之前,输出选项放在输出文件之前。非全局选项默认只作用于紧随其后的文件或流。

场景速查

场景 1:只换封装,不重新编码

源编码与目标容器兼容时优先用流复制,速度最快、零质量损失。

ffmpeg -i input.mkv -map 0 -c copy output.mp4

容器不兼容某个流(例如 MP4 不接受某些字幕)时会报错,回到对应场景做转码或单独跳过。

场景 2:转成兼容性较好的 H.264 / AAC MP4

ffmpeg -i input.mov \
  -map 0:v:0 -map 0:a:0? \
  -c:v libx264 -crf 23 -preset medium \
  -pix_fmt yuv420p \
  -c:a aac -b:a 192k \
  -movflags +faststart output.mp4
  • ? 把音频映射设为可选,源文件没音轨也不会失败。
  • -movflags +faststart 把 MP4 的 moov 原子挪到文件头,便于 Web 渐进播放。
  • libx264 与 libfdk_aac 等编码器是否可用,取决于本机 FFmpeg 的编译配置。

场景 3:截取片段

# 复制流(快速、起点对齐到关键帧)
ffmpeg -ss 00:01:30 -i input.mp4 -t 20 -c copy output.mp4

# 重新编码(精确到任意时间点)
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:01:50 \
  -c:v libx264 -crf 23 -c:a aac output.mp4

-ss 在 -i 之前是 demuxer 定位(快),在 -i 之后是 decoder 定位(精确)。

场景 4:缩放并保持比例

ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:a copy output-720p.mp4

-2 表示"按源比例计算另一维,并保证结果为偶数",避免画面被强行拉伸。

场景 5:裁剪与补边

# 裁剪为 1280×720,起点在源坐标 (100, 50)
ffmpeg -i input.mp4 -vf "crop=1280:720:100:50" output.mp4

# 补成 1920×1080,原画面居中
ffmpeg -i input.mp4 -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" output.mp4

场景 6:在指定时间截一张图

ffmpeg -ss 00:00:08 -i input.mp4 -frames:v 1 -q:v 2 thumbnail.jpg

要同时缩放可加 -vf "scale=1280:-2"。

场景 7:提取 / 移除 / 调整音频

# 提取音频并编码为 MP3
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k output.mp3

# 保留视频,移除所有音频
ffmpeg -i input.mp4 -map 0:v -c:v copy -an silent.mp4

# 音量调整 1.5 倍
ffmpeg -i input.mp4 -af "volume=1.5" output.mp4

场景 8:写入元数据

ffmpeg -i input.mp4 -c copy \
  -metadata title="演示视频" \
  -metadata artist="范庆林" \
  -metadata comment="整理于 2026" output.mp4

不同容器支持的元数据字段不同(ID3、QuickTime、Matroska 各有差异),写入后用 ffprobe 校验是否落地。

场景 9:手动选择流

# 选第一个视频流与第一个音频流;音频缺失不报错
ffmpeg -i input.mkv \
  -map 0:v:0 -map 0:a:0? \
  -c:v libx264 -c:a aac output.mp4

# 同时保留全部字幕
ffmpeg -i input.mkv -map 0 -c copy output.mp4
使用 -map 后将关闭默认的自动流选择。处理多音轨、多字幕或批处理脚本时务必显式 -map,避免漏选或多选。
参考资料

参数、默认行为与编码器能力可能随版本变化,使用前请同时核对本机版本。