ffmpeg中的视频时间刻度,时基或时间戳是什么?

时间:2017-04-10 21:58:34

标签: video ffmpeg codec

似乎没有在线解释这些是什么。人们谈论他们很多。我只是想知道它们是什么以及为什么它们具有重要意义。使用-video_track_timescale,我该如何确定它的数字?是随机的吗?它应该是0吗?

1 个答案:

答案 0 :(得分:53)

现代容器使用时间戳来控制视频(和音频)帧呈现的时间组件,而不是帧速率。因此,不是将视频记录为25 fps,因此暗示每​​帧应该相隔0.04秒绘制,而是为每个帧存储一个时间戳,例如。

 Frame      pts_time
   0          0.00
   1          0.04
   2          0.08
   3          0.12
   ...

为了精确地分辨这些时间值,使用时基,即表示时钟的一个刻度的时间单位。因此,1/75的时基代表1/75秒。然后, P 表示 T ime S 篡改以此时基计算。时间刻度只是时基的倒数。 FFmpeg将时间刻度显示为流的读数中的tbn值。

Timebase = 1/75; Timescale = 75
 Frame        pts           pts_time
   0          0          0 x 1/75 = 0.00
   1          3          3 x 1/75 = 0.04 
   2          6          6 x 1/75 = 0.08
   3          9          9 x 1/75 = 0.12
   ...

这种调节时间的方法允许可变帧率视频。