我有49个png渲染帧。我使用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
答案 0 :(得分: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
- >在结束1
24
次循环单帧118
。所以最后一帧有119个实例。
setpts=N/24/TB[fo]
- >长话短说,ffmpeg意味着使用定时媒体,所以这个过滤器是为了确保现在带有循环的段具有平滑,连续的时间戳。 24
是输入的帧率。
[re]reverse
- >反转修剪段的第二个副本。
setpts=N/24/TB[re]
- >与上述相同。
[fo][re]concat=n=2:v=1:a=0
- >加入两个部分 - 循环部分和反向部分。由于第25帧是反转序列的第一帧,因此第25帧有120个实例。