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

FFmpeg滤镜图构建求助:实现指定时段1秒快动作

问题

我正在用FFmpeg复刻一段视频,目标效果参考该视频的19秒处。目前代码已经实现了大部分功能,但没法在[vfr1][vfr2][vfr3]对应的特定时段实现1秒快动作——现在是给全片都加了setpts=0.5*PTS[vboom]。

现有代码如下:

exe = "-i " + file + " -i " + frame + " -i " + framestart + " -i " + frameEnd + " -i " + audioOverlay + " -filter_complex \"[0:v]pad="+mVideoWidth+":"+mVideoHeight+":576:0[vpad]; [vpad][1]overlay[vframed]; [vframed]split=3[vfr1][vfr2][vfr3]; [vfr1]reverse[vrev]; [vfr2][vrev][vfr3]concat=n=3,setpts=0.5*PTS[vboom]; [vboom][2]overlay=enable='lte(t,2)'[vpreout]; [vpreout][3]overlay=enable='gte(t,"+msec+"*3*0.5-2)' \" -map 4:a -b:v 8000k -shortest -preset ultrafast -crf 23 " + file2.getAbsolutePath();

我试过在滤镜链的不同位置添加以下片段,但均未成功:

//[0:v]trim=0:2,setpts=PTS-STARTPTS[v1];[0:v]trim=2:5,setpts=2*(PTS-STARTPTS)[v2];[0:v]trim=5,setpts=PTS-STARTPTS[v3];
//[0:v]trim=0:10,setpts=PTS-STARTPTS[vfr1];[0:v]trim=10:30,setpts=PTS-STARTPTS[vfr2];[0:v]trim=start=30,setpts=PTS-STARTPTS[vfr3];
//[0:v]trim=2:3,setpts=0.75*(PTS-STARTPTS); [0:v]trim=4:5,setpts=0.75*(PTS-STARTPTS); [0:v]trim=7:8,setpts=0.75*(PTS-STARTPTS);
//[0:v]select='between(t,1,4)+between(t,4,6)',setpts=0.87*PTS;
解决方案

核心问题是你当前把setpts=0.5*PTS加在了concat之后,会作用于整个拼接完成的视频,而非[vfr1][vfr2][vfr3]对应的特定时段。要实现目标效果,需要先给每个拆分出来的流单独处理变速,再进行拼接。

具体修改方式

  1. 全片段快动作:如果要让[vfr1][vfr2][vfr3]对应的三段都实现快动作,修改滤镜链中的变速与拼接部分:
[vfr1]reverse,setpts=0.5*PTS[vrev]; 
[vfr2]setpts=0.5*PTS[vfr2_fast]; 
[vfr3]setpts=0.5*PTS[vfr3_fast]; 
[vfr2_fast][vrev][vfr3_fast]concat=n=3[vboom];
  1. 单片段快动作:如果仅需要其中某一段(比如只有[vfr2]对应时段)实现快动作,只给对应流添加setpts即可:
[vfr1]reverse[vrev]; 
[vfr2]setpts=0.5*PTS[vfr2_fast]; 
[vfr2_fast][vrev][vfr3]concat=n=3[vboom];

注意事项

  • setpts的系数越小,播放速度越快:0.5对应2倍速,刚好能把2秒的原片段压缩成1秒,符合你的需求。
  • 拼接前必须给每个流单独修正时间戳,concat滤镜要求输入流的时间戳连续,否则会出现时序混乱。
  • 如果需要配合trim截取片段,要遵循先截取、再变速、最后拼接/反转的顺序,避免时间戳计算错误。

内容的提问来源于stack exchange,提问作者D-MAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:35:37