如何使用FFmpeg剪切和裁剪视频:时间戳、时长与分割(2026年指南)
学习如何使用FFmpeg通过精确的时间戳和时长控制来剪切、裁剪和分割视频。包含快速复制模式、重新编码,以及免费一键替代方案。
需要从长视频中截取30秒片段?去掉录像开头的10秒?将视频分割成多个部分?FFmpeg 可以通过命令行完成所有这些操作——只要你知道正确的参数。
本指南涵盖了各种裁剪场景及精确命令。如果你更喜欢拖动滑块来操作,文末还介绍了一个免费的可视化替代方案。
前提条件:安装 FFmpeg

macOS:
brew install ffmpeg
Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg
Windows:
从 ffmpeg.org 下载,解压后将 bin 目录添加到 PATH。
基本裁剪
按起始时间和时长裁剪
从1分钟处开始截取30秒:
ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 -c copy output.mp4
-ss 00:01:00— 从1分钟处开始-t 00:00:30— 时长30秒-c copy— 直接复制流,无需重新编码(速度快)
按起始和结束时间裁剪
截取1:00到2:30的片段:
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:30 -c copy output.mp4
-to 00:02:30— 在2分30秒处停止
截取前N秒
只保留前60秒:
ffmpeg -i input.mp4 -t 60 -c copy output.mp4
删除前N秒
跳过前10秒:
ffmpeg -i input.mp4 -ss 10 -c copy output.mp4
截去末尾N秒
这需要知道视频总时长。对于5分钟的视频,若要删除最后30秒:
ffmpeg -i input.mp4 -t 00:04:30 -c copy output.mp4
快速复制 vs 重新编码
快速模式(-c copy)
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c copy output.mp4
优点: 即时完成,无质量损失 缺点: 可能在指定时间戳前几秒开始(在最近的关键帧处裁剪)
精确模式(重新编码)
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c:v libx264 -c:a aac output.mp4
优点: 逐帧精确裁剪 缺点: 速度较慢,重新编码会有轻微质量损失
两全其美:输入定位 + 输出重编码
ffmpeg -ss 00:00:58 -i input.mp4 -ss 2 -t 30 -c:v libx264 -c:a aac output.mp4
此命令在解码前先定位到0:58(速度快),然后精确跳过2秒,从而准确到达1:00。
将视频分割为多个部分
分割为等长片段
将10分钟视频分割为2分钟片段:
ffmpeg -i input.mp4 -c copy -map 0 -segment_time 120 -f segment -reset_timestamps 1 segment_%03d.mp4
这将生成 segment_000.mp4、segment_001.mp4 等文件。
按指定时间戳分割
# 第1段:0:00 到 2:00
ffmpeg -i input.mp4 -ss 0 -to 00:02:00 -c copy part1.mp4
# 第2段:2:00 到 5:00
ffmpeg -i input.mp4 -ss 00:02:00 -to 00:05:00 -c copy part2.mp4
# 第3段:5:00 到结尾
ffmpeg -i input.mp4 -ss 00:05:00 -c copy part3.mp4
提取和去除音频
仅提取音轨
ffmpeg -i input.mp4 -vn -c:a copy audio.m4a
-vn— 不含视频
提取为 MP3
ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 320k audio.mp3
去除音频(仅保留视频)
ffmpeg -i input.mp4 -an -c:v copy output_silent.mp4
-an— 不含音频
常见错误及解决方法
裁剪后视频开头出现画面冻结或异常
这是在使用 -c copy 时,裁剪点不在关键帧上导致的。解决方法是重新编码:
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c:v libx264 -c:a aac output.mp4
裁剪后音视频不同步
添加 -avoid_negative_ts make_zero:
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c copy -avoid_negative_ts make_zero output.mp4
出现 “Non-monotonous DTS” 警告
这类警告通常不影响输出,但表示存在时间戳问题。如果输出文件损坏,执行:
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -fflags +genpts -c copy output.mp4
裁剪偏差达数秒
将 -ss 放在 -i 之前可加快定位速度,放在 -i 之后则更精确:
# 更快但精度较低(在输入端定位)
ffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4
# 更慢但逐帧精确(解码后再定位)
ffmpeg -i input.mp4 -ss 00:01:00 -t 30 -c:v libx264 -c:a aac output.mp4
跳过命令行:改用 WaveSpeed Desktop
使用 FFmpeg 进行精确视频裁剪,意味着需要处理时间戳格式、关键帧对齐、复制与重编码的取舍,以及音视频同步问题。对大多数人来说,这远比实际需要复杂得多。
WaveSpeed Desktop 内置了带有可视化时间轴的媒体裁剪工具:
- 拖放视频文件
- 通过可视化滑块设置起始和结束点
- 点击裁剪——完成
无需计算时间戳,无需处理关键帧问题,无需使用终端。

免费下载 WaveSpeed Desktop: https://github.com/WaveSpeedAI/wavespeed-desktop/releases
常见问题
-t 和 -to 有什么区别?
-t 指定时长(例如 -t 30 表示30秒)。-to 指定结束时间戳(例如 -to 00:02:30 表示在2:30处停止)。
裁剪时能不损失质量吗?
可以——使用 -c copy 避免重新编码。代价是裁剪可能不精确到帧(会对齐到最近的关键帧)。
如何获取视频的精确时长?
ffprobe -v error -show_entries format=duration -of csv=p=0 input.mp4
能同时裁剪多个文件吗? 单条命令无法实现。需要对每个文件使用 shell 循环。WaveSpeed Desktop 支持通过拖放进行批量裁剪。



