我正在尝试在图像序列的开头叠加一个15秒的视频过渡(带有alpha的png序列以显示下面的图像),我可以使用叠加过滤器做得很好。但我想在播放动画之前保持图像序列的第一帧5秒钟。我已经尝试过修剪/选择,但我似乎无法让它持续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]“
-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的视频,每个视频都有自己的过渡,所以更干净的我可以做得更好。我还希望能够改变不同HD输入的保持持续时间。如果我需要,我可以将第一张图像作为不同的输入,但我仍然需要连接它们。我认为必须有一种方法可以使用过滤器...
答案 0 :(得分:0)
另一篇文章回答了这个问题: 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是从第3个参数中的索引开始循环的帧数。