У меня есть .Файл MP4 с одной видео-дорожкой (H.264, 25 FPS) и одной звуковой дорожкой (MP2). Общая продолжительность ~ 2:52 (два часа, 52 минуты). Я заметил, что A/V является синхронным до ~ 2:34, но асинхронным после, то есть аудио задерживается ~ 0,3 с.
Мой план состоял в том, чтобы
- Извлеките звуковую дорожку в.MP2
- Отрежьте 0,3 с (используя mp3directCut, который отлично работает)
- Смешайте видео дорожку и обрезанную звуковую дорожку.
Готово. Тем не менее, результат не был удовлетворительным, потому что аудио / видео было не синхронизировано с самого начала видео. Я внимательно посмотрел на исходный файл и сбросил метки времени. Наименьшее PTS видео дорожки составляет 0,16 с, и все PTS увеличиваются на 0,04 без какого-либо промежутка. Наименьшее значение PTS звуковой дорожки составляет 0,212 с, а большинство значений PTS увеличиваются на 24 мс (нормально для MP2), но немногие различия меньше или больше 24 мс (что нормально, но, очевидно, проблема при извлечении дорожки, см. Вопрос ниже)
Мои вопросы: теряю ли я метки времени при извлечении в MP2? Тогда мой первоначальный план обречен. Каким другим способом можно вырезать небольшую часть звуковой дорожки внутри файла MP4? Без перекодирования аудио, конечно. Я знаком с FFmpeg и AviDemux.