【问题标题】:Why am I unable to scale a 4-second 60 fps clip down to exactly 1 second?为什么我无法将 4 秒 60 fps 剪辑缩小到正好 1 秒?
【发布时间】:2018-10-30 00:30:48
【问题描述】:

我目前正在使用 setpts 过滤器来加快或减慢不同剪辑的速度,准确性对我来说非常重要(上下文:我正在将它们连接成一个需要完美的最终剪辑与单独的视频同步。)我一直将其用作一般方法:

setpts=(targetDuration/totalFrameCount)*N/TB" -r targetDuration/totalFrameCount

虽然它在大多数情况下都相当准确,但我想知道我是否可以获得更好的结果。例如,如果我尝试将 4 秒 60fps 剪辑缩小到正好 1 秒,即:

ffmpeg -y -i clip_4sec.avi -filter:v "setpts=(1/240)*N/TB" -r 240/1 clip_4sec_scaled_to_1sec.avi

我实际上最终得到了一个 992 毫秒的剪辑。有谁知道为什么会这样?据我了解,只要目标持续时间是帧持续时间的倍数(1/60 秒),这应该不是问题,对吗?

我可以采取更好的方法来提高准确性吗?

注意:FWIW 我已经仔细检查了输入剪辑的实际帧数为 240

【问题讨论】:

    标签: video ffmpeg video-processing pts


    【解决方案1】:

    源为 60 fps,其进出 setpts 过滤器的时基为 1/60。在更改 PTS 之前,应将其设置为 1/240。

    ffmpeg -y -i clip_4sec.avi -filter:v "settb=1/240,setpts=(1/240)*N/TB" -r 240/1 clip_4sec_scaled_to_1sec.avi
    

    -r w.r.t 的实现可能存在错误。 AVI 等 VFR 多路复用器。

    【讨论】:

    • 再一次,你成功了 :) 到目前为止,我的副项目一直依赖无损 AVI,只是因为与无损 h264 MP4 相比,它运行得更快。但现在我想知道是否应该重新考虑,因为 VFR 有时使用起来有点棘手。
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2018-07-28
    相关资源
    最近更新 更多