Предварительно добавьте файл AAC в MP4, что приведет к потере синхронизации звука

744
Bill Bonar

У меня есть приложение, которое обрабатывает и нормализует аудио и видео файлы из разных источников.

Все входящее аудио нормализуется следующим образом:

ffmpeg.exe -i "PathToIncommingAudioFile" -acodec aac -ac 2 -ar 44100 -ab 128k -strict experimental ""outputFile.aac" 

Все входящие видео нормализуются следующим образом:

ffmpeg.exe -i "PathToIncommingAudioFile" -s 852x480 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -vf ""scale=iw*min(852/iw\,480 /ih):ih*min(852/iw\,480 /ih),pad=852:480 :(852-iw)/2:(480 -ih)/2"" -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "outputFile.mp4" 

Каждая из этих команд (прошу прощения за любые плохие практики, это не моя область знаний) работает для нормализации мультимедиа, чтобы его можно было воспроизводить на разных устройствах.


Другой код позволяет нам успешно объединять аудио и аудио и видео в видео. Однако, когда я пытаюсь объединить их, звук не синхронизируется.

Вот что я делаю:

  1. Сначала аудио преобразуется в видеофайл с использованием простого изображения PNG в качестве плаката.

    ffmpeg.exe -loop 1 -shortest -i "image.png" -i "normalized.aac" -s 852x450 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "audioAsVideo.mp4" 
  2. Затем видео пытаются объединить так же, как обычно. (Решение с ffmpeg не было найдено, и это то, что в настоящее время работает, в большинстве случаев)

    mp4box.exe -cat "audioAsVideo.mp4" -cat "normalizedVideo.mp4" -new "CombinedVideo.mp4" 
  3. Далее для обработки некоторых видео, которые имеют только один канал аудио (например, веб-камеры), был добавлен следующий хак / исправление. Он работает на всех видео в видео объединяет и обычно работает

    ffmpeg.exe -i "CombinedVideo.mp4" -c copy -ac 1 "SingleChannelCombinedVideo.mp4" 

Если этот процесс выполняется с аудио и видео, синхронизация аудио второго файла отключена. Если это звук над плакатом, это не имеет большого значения. Но если это видео, это очень отвлекает.

  • Кто-нибудь видит что-нибудь, что я сделал, что может вызвать это?
  • Идея на что поменять?
  • Может быть, это способ вставить буфер между этими двумя, что заставит синхронизацию вернуться?
  • Лучший способ сделать это?
2
@slhck разве это не заменит аудио из видео новым аудио? Я не пытаюсь заменить какой-либо звук, просто объединить их, и, если это аудио, добавьте карту. Bill Bonar 11 лет назад 0
По какой причине вы используете MPEG-4 Visual video (`mpeg4` в FFmpeg), а не H.264 (` -c: v libx264` в FFmpeg)? Итак, правильно ли я, что CombinedVideo показывает ошибки несинхронизации? slhck 11 лет назад 0
Я полагаю, что при создании этой функции она была выбрана для совместимости со старыми устройствами. Я не был вовлечен в этот выбор. Да, вы правы: «CombinedVideo» показывает ошибку несинхронизации Bill Bonar 11 лет назад 0

0 ответов на вопрос

Похожие вопросы