2017-06-14 83 views
0

我有49个渲染的png帧。我这些帧转换为使用ffmpeg视频:用ffmpeg重复一帧填充视频的中间部分

ffmpeg -r 24 -f image2 -s 1920x1080 -i %04d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p test2.mp4

但是,这只是让所有的帧序列。现在我尝试实现以下序列:

frame 1...24 - frame 25 - frame 26...49 

当帧25需要重复120帧。这可能与ffmpeg

它甚至会更好,如果有可能实现:

frame 1...24 - frame 25 - frame 24...1 

回答

2

假设你用50帧序列工作,

ffmpeg -framerate 24 -i %04d.png 
-filter_complex "[0]trim=end_frame=25,split=2[fo][re];[fo]loop=118:1:24,setpts=N/24/TB[fo]; 
        [re]reverse,setpts=N/24/TB[re];[fo][re]concat=n=2:v=1:a=0" 
-c:v libx264 -crf 25 -pix_fmt yuv420p out.mp4 

[0]trim=end_frame=25 - >保持第25帧。帧的编号从0开始

split=2[fo][re] - >具有的这两个副本修剪段

[fo]loop=118:1:24 - 在端>循环单帧124118倍。所以最后一帧有119个实例。长篇小说,ffmpeg是为了与定时媒体一起工作,所以这个过滤器是为了确保现在带有循环的段具有平滑连续的时间戳。 24是输入的帧率。

[re]reverse - >反转修剪段的第二个副本。

setpts=N/24/TB[re] - >与上面相同。

[fo][re]concat=n=2:v=1:a=0 - >加入两个部分 - 环状的和反转的。由于第25帧是反向序列的第一帧,因此第25帧有120个实例。

+0

感谢您的回答!但out.mpg只显示开始和结束,但错过了单帧的重复。有什么想法吗? –

+0

需要查看完整的控制台输出。 – Mulvya

+0

我在https://pastebin.com/gp4P6uCJ粘贴了输出,我需要稍微改变长度为12帧。因此它变成1..12 - 12 - 12..1 –