【问题标题】:FFMPEG, Extract first frame and hold for 5 secondsFFMPEG,提取第一帧并保持 5 秒
【发布时间】:2018-03-08 21:21:13
【问题描述】:

我正在尝试在图像序列的开头覆盖 15 秒的视频过渡(带有 alpha 的 png 序列以显示下面的图像),我可以使用覆盖过滤器来完成。但我想在播放动画之前将图像序列的第一帧保持 5 秒钟。我已经尝试过修剪/选择,但我似乎无法让它持续 5 秒,我似乎也无法将它与其他视频连接起来进行过渡。所以我的问题是:

  1. 如何获取第一帧并保持 5 秒,下面的方法有效,但似乎不是最干净的选项?

-framerate 30 -t 60.0 -i input1.%04d.jpg -framerate 30 -t 15.0 -i transition1_%03d.png -filter_complex "color=c=red:d=5:s=480x270:r=30 [bg];[bg][1:v]overlay[transhold];[0:v][transhold]overlay=repeatlast=0[out]"

  1. 如何在将原始视频叠加到主视频上之前将其与原始视频连接,我可以使用以下命令通过两个叠加来完成,实际过渡的开始偏移量为保持的长度,但这似乎是有点笨重。

-framerate 30 -t 60.0 -i input1.%04d.jpg -framerate 30 -t 15.0 -i transition1_%03d.png -filter_complex "color=c=red:d=5:s=480x270:r=30 [bg];[1:v]split[trans][transhold];[trans]setpts=PTS+5/TB[trans];[transhold]select=eq(n\0)[transhold];[bg][ transhold]overlay[transhold];[0:v][transhold]overlay=repeatlast=0[tmp1];[tmp1][trans]overlay[out]"

这是一个更大命令的一部分,我将四个高清图像编译成一个 4k 提要,每个图像都有自己的过渡,所以我可以做得越干净越好。我还希望能够为不同的高清输入改变保持的持续时间。如果需要,我可以将第一张图像作为不同的输入引入,但我仍然需要连接它们。我认为必须有一种方法可以使用过滤器来做到这一点......

【问题讨论】:

    标签: filter ffmpeg concat


    【解决方案1】:

    这在另一个帖子中得到了回答: https://video.stackexchange.com/questions/23551/ffmpeg-extract-first-frame-and-hold-for-5-seconds

    -framerate 30 -t 60.0 -i input1.%04d.jpg 
    -framerate 30 -t 15.0 -i transition1_%03d.png 
        -filter_complex 
            "[1]loop=149:1:0[trans];
             [0][trans]overlay=eof_action=pass" out.mp4
    

    第二个输入的第一帧重复 149 次,因此有 150 个实例 (30 fps x 5s)。循环结束时的 0 是要循环的帧的起始索引。中间的 1 是从第三个参数的索引开始循环的帧数。

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2013-07-19
      相关资源
      最近更新 更多