3

У меня есть .Файл MP4 с одной видео-дорожкой (H.264, 25 FPS) и одной звуковой дорожкой (MP2). Общая продолжительность ~ 2:52 (два часа, 52 минуты). Я заметил, что A/V является синхронным до ~ 2:34, но асинхронным после, то есть аудио задерживается ~ 0,3 с.

Мой план состоял в том, чтобы

  1. Извлеките звуковую дорожку в.MP2
  2. Отрежьте 0,3 с (используя mp3directCut, который отлично работает)
  3. Смешайте видео дорожку и обрезанную звуковую дорожку.

Готово. Тем не менее, результат не был удовлетворительным, потому что аудио / видео было не синхронизировано с самого начала видео. Я внимательно посмотрел на исходный файл и сбросил метки времени. Наименьшее PTS видео дорожки составляет 0,16 с, и все PTS увеличиваются на 0,04 без какого-либо промежутка. Наименьшее значение PTS звуковой дорожки составляет 0,212 с, а большинство значений PTS увеличиваются на 24 мс (нормально для MP2), но немногие различия меньше или больше 24 мс (что нормально, но, очевидно, проблема при извлечении дорожки, см. Вопрос ниже)

Мои вопросы: теряю ли я метки времени при извлечении в MP2? Тогда мой первоначальный план обречен. Каким другим способом можно вырезать небольшую часть звуковой дорожки внутри файла MP4? Без перекодирования аудио, конечно. Я знаком с FFmpeg и AviDemux.

2 ответа2

1

Потеряю ли я метки времени при извлечении в MP2?

Да. .mp2/.mp3 не имеет временных отметок .

Каким другим способом можно вырезать небольшую часть звуковой дорожки внутри файла MP4?

Любой контейнер с метками времени, который поддерживает MP2, т.е. MPEG-TS, MP4/MOV, MKV. Там могут быть другие.


Попробуйте демоверсию concat,

ffmpeg -i in.mp4 -f concat -i audio.txt -map 0:v -map 1:a -c copy out.mp4

где audio.txt

file in.mp4
outpoint 2:34:00
file in.mp4
inpoint 2:34:00.30
0

Решение было:

  1. Извлеките первую часть звуковой дорожки в part1.mp4
  2. Извлеките вторую часть звуковой дорожки в part2.mp4
  3. Concat part1.mp4 и part2.mp4 для завершения.mp4
  4. Mux видео из оригинального файла и аудио из complete.mp4

Смотрите комментарии выше от @Mulvya для конкретных команд FFmpeg. Еще раз спасибо ему / ей за поддержку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .