2017-02-23 100 views
2

У меня проблема с кодировкой в ​​соответствии с FFmpeg. У меня есть файл au mp4 с аудио aac. Я попытался скопировать аудиофайл с помощью ffmpeg. В исходном файле mp4 первый звуковой шум появляется через 0,30 секунды. После преобразования с использованием ffmpeg -i inputfile.mp4 -c:a copy outputfile.aac результирующий файл не соответствует действительности, первый звуковой шум появляется через 0,32 секунды. Продолжительность файла не то же самое.ffmpeg неправильный аудиофайл после преобразования в AAC

Когда я принуждаю кодировщик к libfaac, он работает, но файл слишком большой.

Почему он не работает, когда используется кодировщик по умолчанию (aac, libfdk_aac)? Обратите внимание, что то же самое появляется, когда я перехожу из смелости.

Большое спасибо

ответ

3

Существует заполняющего кадр в звуковом потоке, который необходим посредством декодера для декодирования первого кадра. Это техническое требование для аудиокодеков MDCT, таких как AAC. В экземпляре примерного контейнера, такого как MP4/MKV, этот первый кадр имеет отрицательную временную метку представления. В исходном двоичном потоке AAC этот первый кадр наивно декодируется. Каждый кадр имеет 1024 выборки и поэтому имеет продолжительность 21-23 мс. Ваша разница в сроках вызвана этим смещением. Вернитесь в контейнер, такой как M4A, чтобы избежать этого.

Для фона, от Apple:

AAC требует данных за пределами исходных PCM аудио образцов для того, чтобы правильно кодирования и декодирования аудио образцов из-за природы алгоритма кодирования. Кодирование AAC использует преобразование по последовательным наборам 2048 выборок аудио, применяемых к каждому 1024 звуковому образцу (с перекрытием). Для правильного звука, подлежащего декодированию, необходимы оба преобразования для любого периода 1024 звуковых образцов. По этой причине кодеры добавляют не менее 1024 образцов молчания перед первым «истинным» образцом аудио, и часто добавляют больше. Это называется по-разному «прайминг», «заливка образцов» или «задержка кодирования».

и

Отсутствие явного представления для задержки кодера и остатка образцов не является проблемой, уникальный для кодирования AAC. С битами потоков MPEG-4 и ADTS/MPEG-2 и файловыми контейнерами до сих пор нет удовлетворительное явное представление для задержки датчика или образцов остатков. MP3 также имеет эти зависимости данных и задержки в его битовый поток, как и собственные кодеки, такие как AC-3 и другие.