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

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

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

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

BitStreamTools также написал Theory 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 смещение рассчитывается как видео pts (100) - audio pts (0) - внутренний PTS, чтобы привести звук к той же презентации. время, таким образом, давая смещение в 99 баллов. При 105 смещение будет 105-5 = 100, а не 99, но мы переходим к использованию смещения 99, так как нет необходимости пересчитывать (100-99 = 1. 1/fps < 100мс). На 150 смещение pts вычисляется снова, так как pts видео уменьшается, а не увеличивается...

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

  • мистифицировать

2 ответа

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

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

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

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

Другие вопросы по тегам