ffmpeg每10秒暂停一次视频,持续3秒


0

有没有办法使用ffmpeg每10秒钟停止一次视频3秒?

例如,我使用30秒的视频,视频应该在0:00,0:10,0:20和0:30停止3秒。输出视频的长度为0:42秒。

谢谢!

Answers:


3

编辑:添加了不同的方法,它考虑了音频以及由于初始方法而覆盖的帧,如下所示。

ffmpeg -i input.mp4 -filter_complex \
       "[0:v]split=4[v0][v1][v2][v3]; \
        [v0]trim=start_frame=0:end_frame=1,loop=90:1:0,setpts=N/FRAME_RATE/TB[0v]; \
        [v1]trim=start_frame=1:end_frame=301,loop=90:1:299,setpts=N/FRAME_RATE/TB[1v]; \
        [v2]trim=start_frame=301:end_frame=601,loop=90:1:299,setpts=N/FRAME_RATE/TB[2v]; \
        [v3]trim=start_frame=601:end_frame=900,loop=90:1:298,setpts=N/FRAME_RATE/TB[3v]; \
        aevalsrc=0:d=3[0a]; \
        [0:a]asplit=3[a1][a2][a3]; \
        [a1]atrim=0:10,asetpts=N/SR/TB[1a]; \
        [a2]atrim=10:20,asetpts=N/SR/TB[2a]; \
        [a3]atrim=20:30,asetpts=N/SR/TB[3a]; \
        [0v][0a][1v][1a][2v][2a][3v][3a]concat=n=4:v=1:a=1[v][a]" \
       -map "[v]" -map "[a]" outva.mp4

这可以使用菊花链环路滤波器完成。

ffmpeg -i input.mp4 \
      -vf loop=90:1:0,setpts=N/FRAME_RATE/TB, \
          loop=90:1:390,setpts=N/FRAME_RATE/TB, \
          loop=90:1:780,setpts=N/FRAME_RATE/TB, \
          loop=90:1:1169,setpts=N/FRAME_RATE/TB
stuttered.mp4

上面的命令适用于30 fps的视频。每个环路滤波器将环路设置为90帧,即以30 fps的速度设置3秒,并使1帧的环路成为循环。第三个参数是必须循环的帧索引。第一个之后的所有环路滤波器的索引必须被偏移,因为它们的输入馈送包含插入的早期循环,例如10秒的第二个循环通常是30030fps视频,但是因为第一个循环已经循环3秒,它是3x30 + 10x30 = 390

setpts在每个循环后生成一组单调的新时间戳,否则命令无法正常工作。

音频已被完全忽略。


WOOW!谢谢天才!:)))那么音频怎么样,是否可以循环播放音频或将整个原始流分成几部分并将它们再次放在正确的位置?
Franky

另一点:是否可以做一个精确的暂停?目前,视频暂停了三秒钟,这是正确的。但是“循环”在视频的下三秒重叠,所以我们在图片冻结时松开了三秒钟。
Franky

明天我将提供一个新命令,负责音频和重叠。
Gyan 2016年

非常感谢@Mulvya !! 在节点中,我开发了一个小应用程序来创建这些视频过滤器文件(链接)。但最后一个问题:对于长视频> 30分钟,第一个暂停循环为1 - 1.5分钟。是否可以减少这个第一个循环?我在过滤器中找不到错误..
Franky 2016年

0

我创建了一个Python脚本来执行此操作:https//github.com/slhck/bufferer - 您可以安装它

pip install bufferer

然后:

bufferer -i input.mp4 -b "[10,3],[20,3],[30,3]" -o output.avi

这将为命令添加一个“重新缓冲”指示器 - 就像一个指示暂停的微调器。它将插入您指定的暂停,即在原始剪辑的10,20和30秒处插入三秒钟。它将输出带有FFV1编码和PCM音频的无损视频,但这可以改变。有关README详细信息,请参阅。

我打算添加一项功能来禁用该重新缓冲指示器,因为您可能只想要一个简单的暂停。在此期间,您可以使用--dry-run开关只打印命令,并将其用作某些手动更改的起点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.