Синхронизация всегда меня очаровывала, или, если быть точным: почему .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>
Я почти уверен, что совершенно не прав, но кто-то может указать мне правуюНаправление, пожалуйста?