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