想从长视频中截取片段,或者把多个文件拼在一起?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 直接在浏览器中剪辑和合并视频。
延伸阅读
- 如何用 FFmpeg 压缩视频 - 剪辑后用 CRF、预设和编码器选择进一步压缩文件体积
- 如何用 FFmpeg 为视频添加字幕 - 为剪辑好的视频烧录或嵌入字幕
- 如何用 FFmpeg 转换视频格式 - 在不同容器和编码器之间转换,确保最大兼容性

