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

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

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

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

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

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

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

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

EDIT: Или было бы невозможно исправить с помощью ПЦР для пересчета всех значений PTS в заданный .ts? Хотя я понимаю, что некоторые кадры/аудио могут быть повреждены в широковещательной передаче, поэтому его невозможно представить правильно, я оставлю это (например, удаление видеоизображения, если оно повреждено, и имеет соответствующую звуковую часть, вставляя молчание мс, если звуковой пакет поврежден и т.д.) позже, и для обсуждения я предполагаю, что все фреймы не повреждены. (Но тогда значения PTS всегда были бы правильными, или что?)

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

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

  • Джош

Ответ 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/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.

Ответ 2

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

Эта ссылка помогает описать термины.