Аудио / видео синхронизация, TS MPEG2; H264 / AVC, понимание PTS в ручном тормозе - PullRequest
14 голосов
/ 18 января 2011

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

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

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

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

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

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

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

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

Приложение: мое мнение о бумаге A / V ручного тормоза таково: при «ожидаемых» 100 смещение рассчитывается как видео-точки (100) - audio pts (0) - внутренняя PTS, чтобы привести аудио к одинаковому времени представления, таким образом давая смещение pts 99. При 105 смещение будет 105-5 = 100, а не 99, но мы продолжаемиспользовать 99 в качестве смещения, поскольку нет необходимости пересчитывать (100-99 = 1. 1 / кадр / с <100 мс).На 150 смещение pts вычисляется снова, так как pts видео уменьшается, а не увеличивается ... </p>

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

  • Джош

Ответы [ 2 ]

19 голосов
/ 27 ноября 2011

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

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/download?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 - это то, что делает цифровое телевещание очень строгим и сильно отличается от любых других методов потоковой передачи, используемых в потоковой передаче через Интернет. Это крайне важно для обеспечения потоковой передачи 24x7 для работы.

11 голосов
/ 19 января 2011

Я нашел очень хороший учебник под названием «Как написать видеоплеер менее чем за 1000 строк».

Эта ссылка хорошо объясняет термины.

...