目前网上似乎没有关于这些内容的任何解释。人们经常谈论它们,我只想知道它们是什么以及为什么它们很重要。使用-video_track_timescale,我该如何确定其数字?它是随机的吗?应该为0吗?
现代容器使用时间戳来控制视频(和音频)帧的呈现时间,而不是帧速率。因此,他们不再像以前一样将视频记录为25 fps,这意味着每个帧应该相距0.04秒,而是为每个帧存储一个时间戳,例如:
Frame pts_time
0 0.00
1 0.04
2 0.08
3 0.12
...
为了精确解析这些时间值,使用了时间基准,即表示时钟一刻的时间单位。因此,时间基准 1/75
表示 1/75 秒。演示时间戳以此时间基准为单位计算。时间刻度就是时间基准的倒数。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
...
这种时间调节方法可以支持可变帧率视频。