本节摘要:ffmpeg 命令把「输入→处理→输出」整条管线压缩进一行。本节拆解它的语法骨架(全局选项、输入选项、输出选项的分层规则),讲解 -i、-c、-map、-t、-ss 等核心选项的用法与作用域,并给出多输入、多输出场景的实例。
阅读完本节,你应当能够:
假设领导丢给你一个需求:「把手机拍的 2 分钟竖屏视频,裁成横屏短视频,画面中间的部分,声音不变,一分钟以内。」
如果不懂管线,你可能会搜一长串参数拼上去。但用第 2 章的模型反推,这条需求其实是三段:输入(手机视频)、处理(裁剪画面)、输出(新文件)。写成命令就是:
# 从 input.mp4 取前 60 秒,裁出中间 720x1280 区域,其余参数跟随输入 ffmpeg -i input.mp4 -t 60 -vf "crop=720:1280:100:0" -c:v libx264 -c:a copy output.mp4
拆开看:-i input.mp4 是输入;-t 60 限定时长;-vf "crop=..." 是滤镜(第 4 章细讲);-c:v libx264 说视频重新编码成 H.264,-c:a copy 说音频原样拷贝;output.mp4 是输出。你看,管线模型直接变成了命令结构。 这就是本节要给你的能力——用模型写命令,而不是背命令。
ffmpeg 命令的骨架是:
ffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件
规则只有一条,但至关重要:除全局选项外,所有选项只作用于「紧跟其后的那个文件」。 输入选项放在 -i 之前影响输入,输出选项放在输出文件名之前影响输出。这条规则决定了多输入、多输出时命令怎么组织。
-y:直接覆盖输出文件,不询问-v error:只显示错误日志(-v warning 显示警告)-hide_banner:不打印版本信息-re:按原速度读取输入(推流常用,第 6 章细讲)-ss:从指定时间点开始读(放输入侧为「精准定位」)-thread_queue_size:多输入时加大队列防止丢包-t 60:输出时长上限 60 秒-c:v libx264 -c:a copy:分别指定视频、音频编码-map 0:0 -map 0:1:选择输入的第 0 条视频流、第 1 条音频流-ss 放在输出侧时,是「编码完成后跳过的时长」——速度快但可能不精准-ss 的位置是个经典考点。放在 -i 前,是解码前定位,快且准(从关键帧开始找);放在输出文件前,是解码后丢弃,慢但切割点更精确(逐帧定位)。对普通切割,放输入侧更快;对「必须切到某一帧」的严肃剪辑,放输出侧更稳。
默认情况下,ffmpeg 会自作主张选「最好的」视频流和音频流。多输入、多音轨时,它的选择往往不是你想要的。-map 让你明确指定。
# 输入 A 的视频 + 输入 B 的音频,合并输出 ffmpeg -i video_a.mp4 -i audio_b.mp3 -map 0:v:0 -map 1:a:0 -c copy merged.mp4
0:v:0 的意思:输入文件 0、类型 video、第 0 条。1:a:0 同理:输入 1、音频、第 0 条。这是把第 1 章「容器 + 多流」概念落到命令行的关键操作。
下面这张图把命令骨架与管线对应起来,帮你在脑子里建一个「命令→管线」的映射。

图中四个方框分别对应命令的四段:全局选项控制进程行为,输入选项只影响 -i 输入,中间是实际处理(滤镜、编解码),输出选项约束最终产物。记住「选项紧跟文件生效」这条铁律,就能看懂任何复杂命令。
场景一:转码时只想换封装
# 把 MKV 换成 MP4,编码数据原样搬 ffmpeg -i input.mkv -c copy output.mp4
场景二:裁掉前 10 秒,输出 30 秒片段
# -ss 放输入侧,速度快;-t 限制时长 ffmpeg -ss 10 -i input.mp4 -t 30 -c copy clip.mp4
场景三:从视频里抽一帧当封面
# 第 5 秒抽一帧,输出 720 宽的高清图 ffmpeg -ss 5 -i input.mp4 -frames:v 1 -q:v 2 cover.jpg
场景四:提取纯音频
# 只要音轨,去掉视频流 ffmpeg -i input.mp4 -vn -c:a copy audio.m4a
常见坑:
-c copy做-ss切割时,切割点会自动对齐到关键帧,所以得到的片段开头可能比预期早一点或晚一点。要逐帧精确,用-ss放输出侧(牺牲速度)或重新编码。
💡 关键直觉:任何一次 ffmpeg 调用,都是「一次输入侦察 + 一串管线控制 + 一次输出约束」的三段式。看不懂某条命令时,先找
-i,它把命令劈成输入侧和输出侧两半。
0:v:0 表示「输入0、视频、第0条」,多输入场景必备-c:v 控视频、-c:a 控音频,copy 表示原样搬下一节,动手之前先侦察——ffprobe 是怎么把文件底细一条条报给你的。