3

我使用 ffmpeg 获取视频信息。输出是

  Duration: 00:05:57.00, start: 0.000000, bitrate: 611 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 808x610, 609 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc

时基用于以某种方式(这也是我的另一个问题)计算何时解码和显示帧,对吧?那么使用谁的时基,容器(12800)还是编解码器(50)?

另一个问题是为什么 tbn=12800 而不是 90000?

4

1 回答 1

7

两者都是正确的,两者都是不同的。

tbn 是编码器创建流的函数。所以对于 10 fps 的流,它可以是 90000,这意味着每秒 90000 个滴答声,每帧给你 9000 个滴答声。它也可以简单地为 10,这意味着每帧 1 个滴答声(对于相同的 10 fps 流)。

90000 通常用于流媒体级别(想到 TS 流媒体),但编码器不受此约束。这个(tbn)是解码器将使用的东西,而不是使用容器数据的应用程序系统。

如果您有容器,则应使用容器时基和时间戳,因为它在容器中的所有流中都已标准化。您将仅在编解码器解码器中使用像 tbn 这样的参数。

于 2012-11-29T09:40:25.293 回答