gpt4 book ai didi

ffmpeg - 使用 FFmpeg 将图像转换为具有可变 fps 的视频

转载 作者:行者123 更新时间:2023-12-04 23:05:43 25 4
gpt4 key购买 nike

我有 900 张图片:

  • 001.tif
  • 002.tif
  • 003.tif
  • ...
  • 900.tif

  • 我使用以下代码从这些图像生成视频:
    ffmpeg -r 30 -start_number 1 -i %03d.tif -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4
    它工作得很好,但我还需要制作另一个开始时很慢(例如 5 fps)的视频,然后逐渐(例如 6、7、8、... fps)加速以达到非常高的速度(例如 90帧数)。与前一秒和后一秒相比,视频的每一秒都应该有不同的 fps,这是一个完全逐渐加速的过程。

    我可以用 FFmpeg 做吗?如果是这样,他们怎么办?

    最佳答案

    您可以使用 setpts 过滤器逐渐改变 fps。

    从帧持续时间而不是 fps 的角度考虑这一点更有帮助,因为这是 setpts 可以直接改变的。 fps 为 5 表示帧持续时间为 200 ms,而 fps 为 90 表示帧持续时间为 11 ms(舍入后)。因此,第 0 帧从时间 0 开始,持续时间为 200 毫秒,因此第 1 帧显示为 200 毫秒并具有该时间戳。帧 808 的持续时间为 11 毫秒。所以对于每一帧,timestamp expr 是 200ms-189ms*N/809其中 N 是帧索引。由于我们没有在 809 之后减少帧持续时间,因此我们必须将 N 限制为 809。200ms-189ms*min(N,809)/809
    然后命令是
    ffmpeg -start_number 1 -i %03d.tif -vf "settb=1/1000,setpts='if(eq(N,0),0,PREV_OUTPTS+200-189*(min(N,809)/809))'" -vsync vfr -enc_time_base 1/1000 -c:v libx264 -pix_fmt yuv420p output.mp4
    settb 将计时刻度设置为 1 毫秒。和 enc_time_base 一样对于处理管道的不同部分。

    关于ffmpeg - 使用 FFmpeg 将图像转换为具有可变 fps 的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61397353/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com