似乎没有在线解释这些是什么。人们谈论他们很多。我只是想知道它们是什么以及为什么它们具有重要意义。使用-video_track_timescale,我该如何确定它的数字?是随机的吗?它应该是0吗?
答案 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
...
这种调节时间的方法允许可变帧率视频。