如何用 FFmpeg 剪辑与合并视频

2026/03/03

想从长视频中截取片段,或者把多个文件拼在一起?FFmpeg 用简单的命令就能搞定。剪辑完成后,你可能还需要压缩视频来减小文件体积。

剪辑视频

快速剪辑(不重新编码)

-ss 指定开始时间,-to 指定结束时间,加上 -c copy 跳过重新编码,几乎瞬间完成:

ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -c copy output.mp4

这会提取 1:00 到 2:30 的片段。

按时长剪辑

-t 指定持续时间而不是结束时间:

ffmpeg -ss 00:00:30 -i input.mp4 -t 60 -c copy output.mp4

这会从 0:30 开始提取 60 秒。

精确剪辑(重新编码)

-c copy 速度快但会在最近的关键帧处切割,可能有几秒的偏差。需要精确切割时:

ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -c:v libx264 -c:a aac output.mp4

删除中间片段

要删除中间一段(比如保留 0:00–1:00 和 2:00–结尾),先分别截取再合并:

# 第一步:提取各部分
ffmpeg -i input.mp4 -to 00:01:00 -c copy part1.mp4
ffmpeg -i input.mp4 -ss 00:02:00 -c copy part2.mp4

# 第二步:合并(见下文)

合并多个视频

方法一:Concat Demuxer(推荐)

创建一个文本文件列出要合并的视频:

# filelist.txt
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'

然后合并:

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

当所有文件的编码格式和分辨率相同时,这种方式快速且无损。

方法二:Concat Filter(不同格式)

当文件的编码或分辨率不同时,使用 concat 滤镜:

ffmpeg -i part1.mp4 -i part2.mp4 \
  -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" \
  output.mp4

这种方式会重新编码,速度较慢但能处理混合格式。如果需要在合并前转换格式,请参阅如何用 FFmpeg 转换视频格式

提取单帧画面

截取指定时间点的一帧:

ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 frame.png

等分切割

将视频按 30 秒一段切割:

ffmpeg -i input.mp4 -c copy -segment_time 30 -f segment output_%03d.mp4

速查表

任务关键参数
快速剪辑-ss, -to, -c copy
精确剪辑-ss, -to, -c:v libx264
按时长剪辑-ss, -t
合并(相同编码)-f concat, -c copy
合并(混合格式)-filter_complex concat
等分切割-segment_time, -f segment

在线试用

不想折腾命令行?使用 FFHub 直接在浏览器中剪辑和合并视频。

延伸阅读

FFHub

FFHub

如何用 FFmpeg 剪辑与合并视频 | FFHub