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

FFmpeg定时移除视频片段(含音频同步处理)的命令生成求助

解决:每9秒移除1秒片段的FFmpeg命令(含音频同步)

嘿,我来帮你搞定这个问题!你需要从6分钟的视频里每9秒删掉1秒,还要保证音频和视频完全同步,这用FFmpeg的滤镜就能轻松实现,我给你把命令和细节都讲清楚:

核心命令(移除每9秒的最后1秒)

假设你要保留每9秒周期里的前8秒,去掉第9秒,用这条命令:

ffmpeg -i input.mp4 -filter_complex \
"[0:v]select='not(mod(t,9)>=8)',setpts=N/FRAME_RATE/TB[v]; \
[0:a]aselect='not(mod(t,9)>=8)',asetpts=N/SR/TB[a]" \
-map "[v]" -map "[a]" output.mp4

命令拆解(帮你理解每个部分)

  • ffmpeg -i input.mp4:指定你的输入视频文件,把input.mp4换成你实际的文件名就行
  • [0:v]select='not(mod(t,9)>=8)':视频筛选逻辑——mod(t,9)会计算当前播放时间t除以9的余数,当余数≥8时(也就是每9秒的最后1秒),跳过这些帧;其他时间的帧全部保留
  • setpts=N/FRAME_RATE/TB[v]:修复视频时间戳,因为删掉了部分帧,重新计算时间戳能避免播放时卡顿、跳帧
  • [0:a]aselect='not(mod(t,9)>=8)':音频和视频用完全一样的筛选逻辑,确保音频和视频同步移除对应片段
  • asetpts=N/SR/TB[a]:同样修复音频的时间戳,保证音画完全对齐
  • -map "[v]" -map "[a]":把处理后的视频流和音频流映射到输出文件
  • output.mp4:最终生成的处理后视频文件名

需求微调:如果要移除每9秒的第1秒

要是你想删掉的是每9秒开头的1秒,只需要把筛选条件改一下,命令变成:

ffmpeg -i input.mp4 -filter_complex \
"[0:v]select='not(mod(t,9)<1)',setpts=N/FRAME_RATE/TB[v]; \
[0:a]aselect='not(mod(t,9)<1)',asetpts=N/SR/TB[a]" \
-map "[v]" -map "[a]" output.mp4

常见问题排查

如果运行后没输出或者报错,可以检查这几点:

  • 确保你的FFmpeg是最新版本,旧版本可能对部分滤镜语法支持不好
  • 输入输出文件路径不要有空格或特殊字符,如果有,给文件名加双引号(比如"My Video.mp4")
  • 要是输出格式有问题,可以换成MKV格式(把output.mp4改成output.mkv),兼容性更强

备注:内容来源于stack exchange,提问作者Jaga G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 13:32:59