You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ffmpeg直接移除视频中多个指定片段无需剪切后合并

FFmpeg批量删除指定视频区间实现方案

核心原理

通过FFmpeg内置的trim+concat滤镜组合,一次性在内存中完成保留片段的截取与拼接,无需生成中间剪切文件,满足需求。

单删除区间示例(匹配你给出的场景)

你的场景是删除1.25分钟(75秒)1.80分钟(108秒)的内容,保留075秒、108秒~120秒两段内容,执行命令如下:

ffmpeg -i input.mp4 -filter_complex \
"[0:v]trim=start=0:end=75,setpts=PTS-STARTPTS[v1]; \
[0:a]trim=start=0:end=75,asetpts=PTS-STARTPTS[a1]; \
[0:v]trim=start=108:end=120,setpts=PTS-STARTPTS[v2]; \
[0:a]trim=start=108:end=120,asetpts=PTS-STARTPTS[a2]; \
[v1][a1][v2][a2]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4

多删除区间扩展方法

如果需要删除N个不连续区间,就会生成N+1段保留内容,按以下规则修改命令即可:

  • 每增加一段保留内容,依次新增一组对应音视频的trim截取配置,命名按v1/a1→v2/a2→v3/a3递增
  • 修改concat参数的n值为保留片段的总数量

举个例子:需要删除3个区间,对应4段保留内容,concat参数就写为concat=n=4:v=1:a=1,前面对应补充v3/a3、v4/a4的截取配置即可。

注意事项

  • 时间参数默认单位为秒,也可以使用时分秒格式,比如75秒可以写为00:01:15
  • 如果需要加快处理速度,且可接受剪切点精度误差,可以在命令末尾加上-c:v copy -c:a copy参数直接流拷贝,无需重编码。该方式要求剪切点必须落在视频关键帧上,否则会出现剪切点附近画面花屏、音画不同步的问题
  • setpts和asetpts是时间戳重置参数,必须添加,否则拼接后的视频会出现卡顿、时长显示异常的问题

内容的提问来源于stack exchange,提问作者skullleeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:45:04