【问题标题】:Why does doubling the frame rate generate inconsistent frames?为什么将帧速率加倍会产生不一致的帧?
【发布时间】:2018-04-22 18:19:37
【问题描述】:

所以我有一个恒定的 59.94 fps (i.e. 60000/1001) 视频,当我尝试提取一秒时:

ffmpeg -y -i input60fps.avi -ss 0 -t 1 -c:v huffyuv -an output60fps.avi
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ./output60fps.avi

它返回 1.001 秒,我现在明白这是合适的,因为它是最接近请求持续时间的视频帧时间 (60000/1001 seconds) 的倍数。

对之前从 29.97 fps 源转换的 59.94 fps 视频重复此实验,我希望得到类似的结果,但我发现实际情况并非如此:

ffmpeg -i input30fps.avi -vcodec huffyuv -r 60000/1001 -an output60fps.avi
ffmpeg -i ./output60fps.avi -ss 0 -t 1 -c:v huffyuv -an test.avi
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 ./test.avi

这实际上是 0.984317 秒。

为什么这种行为不同?我有什么方法可以控制总帧数如何均匀分布,以使每个边界每 60000/1001 毫秒发生一次?我的期望是,由于我只是将帧速率提高一倍,因此我应该期望每 1001/60000 秒有一帧。

【问题讨论】:

    标签: ffmpeg video-processing


    【解决方案1】:

    AVI 是一个可变帧速率复用器。除了-r,还需要开启恒定帧率所以

    ffmpeg -i input30fps.avi -vcodec huffyuv -r 60000/1001 -vsync cfr -an output60fps.avi
    

    【讨论】:

    • 效果很好!我终于可以得到我正在寻找的准确时间了:)
    猜你喜欢
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    相关资源
    最近更新 更多