我有 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
Run Code Online (Sandbox Code Playgroud)
当第 25 帧需要重复 120 帧时。这可能ffmpeg吗?
如果可以实现就更好了:
frame 1...24 - frame 25 - frame 24...1
Run Code Online (Sandbox Code Playgroud)
假设您正在处理 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
Run Code Online (Sandbox Code Playgroud)
[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 个实例。
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |