Что такое временная шкала видео, временная база или временная метка в ffmpeg?

Кажется, что нет никакого объяснения в Интернете относительно того, что это такое. Люди много говорят о них. Я просто хочу знать, что это такое и почему они значительны. Используя -video_track_timescale, как бы определить число для него? Это случайно? Должно быть 0?

Ответ 1

Современные контейнеры управляют временной составляющей представления видео (и аудио) кадров с использованием временных меток, а не частоты кадров. Таким образом, вместо записи видео как 25 кадров в секунду и, следовательно, подразумевая, что каждый кадр должен быть выделен на 0,04 секунды, они сохраняют метку времени для каждого кадра, например.

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

Для точного разрешения этих временных значений используется временная база, то есть единица времени, которая представляет собой один такт часов. Таким образом, временная база 1/75 составляет 1/75 секунды. Значения P resentation 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
   ...

Этот метод регулирования времени позволяет передавать видео с переменной частотой кадров.