Аудио/видео синхронизация, TS MPEG2;H264/AVC, понимание PTS в Handbrake

Меня всегда очаровывала синхронизация, или, если быть точным, то, почему медиаплееры могут синхронно просматривать .ts, в то время как повторно собранные демультиплексированные аудио+видео не синхронизированы.

Поэтому я пытаюсь понять это, и что можно сделать, чтобы предотвратить это.

Я прочитал следующее: https://trac.handbrake.fr/wiki/LibHandBrakeSync и источник sync.c (также доступен на вики)

BitStreamTools также написал Теорию 101 по этому вопросу (но я не могу дать ссылку, так как я новый пользователь, извините)

Хотя я думал, что мое понимание PCR / PTS было (концептуально) правильным, мне трудно следовать отличной бумаге для синхронизации аудио/видео ручного тормоза.

Мой вопрос таков: есть ли какое-то интуитивное (оно может быть кратким, коротким или более длинным) объяснение синхронизации аудио/видео? Хотя я знаю, что можно пересчитать PTS из PCR, если аудио или видео точки повреждены (разрыв?), ручной тормоз, похоже, полагается не на это, а на свой внутренний PTS. 0, += 1/fps (~=5), 10, 15, ....

Можно ли пересчитать смещения точек и исправить .ts (двоичный), зафиксировав все значения PTS аудио и видео (и исказив все DTS с одинаковым смещением, чтобы у проигрывателя не «исчерпались кадры», чтобы говорить) и, таким образом, иметь .ts, который можно демультиплексировать, и тогда изолированные дорожки будут синхронизированы (если их собрать вместе)?

РЕДАКТИРОВАТЬ: Или было бы невозможно исправить с помощью PCR пересчет всех значений PTS в данном .ts? Хотя я понимаю, что некоторые кадры/аудио могут быть повреждены в трансляции, поэтому они не могут быть представлены правильно, я оставлю обработку этого (например, удаление видео, если оно повреждено и имеет соответствующую звуковую часть, вставку тишины x ms, если звуковой пакет поврежден и т. д.) на потом, и ради обсуждения я предполагаю, что все кадры целы. (Но тогда значения PTS всегда будут правильными, или что?)

Приложение: Мое мнение об A/V документе с ручным тормозом таково: при «ожидаемых» 100 смещение рассчитывается как количество точек видео (100) – точек аудио (0) – внутренняя PTS, чтобы привести звук к той же презентации. время, таким образом, давая смещение 99 pts, при 105 смещение будет 105-5 = 100, а не 99, но мы продолжаем использовать 99 в качестве смещения, поскольку нет необходимости пересчитывать (100-99 = 1,1/fps ‹ 100 мс). При значении 150 смещение точек вычисляется снова, поскольку количество точек видео уменьшается, а не увеличивается...

Я почти уверен, что ошибаюсь в этом, но может ли кто-нибудь указать мне правильное направление, пожалуйста?

  • Джош

person Josh    schedule 18.01.2011    source источник


Ответы (1)


Концепция аудио-видео синхронизации гораздо глубже. Первое чтение, которое я бы порекомендовал, это следующая статья.

http://downloads.bbc.co.uk/rd/pubs/reports/1996-02.pdf

Я не буду здесь все повторять, но, по сути, каждый кодировщик записывает метки времени и ставит их на соответствующие аудио и видео. Позже, когда декодер воспроизводит его, он делает две вещи: во-первых, гарантирует, что собственные часы декодера «порабощены» часами кодировщика, и, во-вторых, гарантирует, что каждое изображение будет представлено на экране, а звуковой кадр будет представлен динамику точно в то время, когда соответствующий происходит время. Это единственный и лучший способ синхронизации звука с видео. Эти метки времени называются значениями PTS/DTS, которые имеют разрешение часов 90 кГц.

Поймите, что с течением времени часы смещаются, но поскольку указывается только точное время, декодер воспроизводит точно в том же временном порядке.

Теперь основной проблемой остается то, что часы декодера должны оставаться под контролем/синхронизацией часов кодировщика. Первое, что делается в MPEG, — это использование более высокой точности на частоте 27 МГц (в 300 раз выше). Кроме того, это должно оставаться согласованным во время любого пути передачи в середине. (это называется процессом восстановления часов).

Ниже приведена еще пара хороших статей, в которых объясняется, как работает процесс восстановления/синхронизации часов.

https://www.soe.ucsc.edu/sites/default/files/technical-reports/UCSC-CRL-98-04.pdf
http://citeseerx.ist.psu.edu/viewdoc/скачать?doi=10.1.1.86.1016&rep=rep1&type=pdf

В этом заключительном документе все очень хорошо собрано воедино.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.975&rep=rep1&type=pdf

Помните: синхронизация звука и видео на основе PCR и PTS/DTS делает вещание цифрового телевидения очень строгим и сильно отличается от любых других методов потоковой передачи, используемых в потоковой передаче через Интернет. Это крайне важно для обеспечения круглосуточной потоковой передачи.

person Dipan Mehta    schedule 27.11.2011