18

Я могу выдать эту команду:

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.m4a 

создать файл m4a.

Но когда я выдаю эту команду

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.aac

ffmpeg выдает ошибку, говоря

Не удалось записать заголовок для выходного файла # 0 (неверные параметры кодека?).

Кроме того, размер файла m4a действительно почти в 5,8 раза больше исходного файла, что совершенно не то, что я хотел и почему я хотел преобразовать в AAC.

2 ответа2

35

Как я могу конвертировать в AAC?

Это самая простая команда FFmpeg для преобразования входных данных в аудио AAC с использованием AAC FFmpeg самого высокого качества. libfdk_aac - это кодировщик Fraunhofer AAC, и он доступен, когда вы скомпилировали FFmpeg с его поддержкой.

ffmpeg -i input.mp3 -c:a libfdk_aac output.m4a

Чтобы изменить качество, у вас есть два варианта:

  • Для переменной битрейта (VBR) используйте опцию -vbr . Например, -vbr 4 - хороший выбор (примерно 128 кбит / с для стереозвука). Выше значит лучше. Значения варьируются от 1 до 5.

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • При фиксированном битрейта (CBR), используйте -b:a параметр, -b:a 128k 128 кбит / с должно быть достаточно для большинства ситуаций. Вы также можете выбрать что-то более низкое.

    ffmpeg -i input.mp3 -c:a libfdk_aac -b:a 128k output.m4a
    

Вы также можете использовать HE-AAC (v1/v2) вместо стандартного профиля AAC-LC (низкая сложность), который лучше всего подходит для низких битрейтов:

ffmpeg -i input.mp3 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a

Что делать, если у меня нет libfdk_aac?

Некоторые версии FFmpeg не имеют libfdk_aac (по причинам лицензирования). Если это так, вы можете использовать встроенный кодировщик AAC:

ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a

Этот кодер не поддерживает VBR должным образом, поэтому, если вам это нужно или HE-AAC, читайте дальше.

Вы можете скомпилировать ffmpeg самостоятельно и добавить поддержку libfdk_aac . На FFmpeg Wiki есть руководства. Компиляция проста в Linux, умеренно проста в OS X и довольно сложна в Windows. Когда вы будете следовать руководствам по компиляции и устанавливать соответствующие библиотеки ранее, FFmpeg теперь дает вам возможность использовать libfdk_aac .


Были некоторые проблемы с вашим оригинальным подходом:

  • alac не является AAC. ALAC - это кодек Apple Lossless Audio, а AAC - расширенное кодирование звука.

  • Вот почему ваш вывод больше, чем вход, потому что, в отличие от MP3, ALAC все еще сжимается, но он должен быть без потерь - поэтому он должен хранить больше данных.

  • .aac не является выходным контейнером для аудио ALAC. Если вы используете AAC, это должно работать. Я бы использовал MP4 или M4A, хотя.

3

Легко конвертировать в AAC для Zeranoe Windows Builds

ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a

Используйте "aac" вместо libfaac или libfdk_aac:https://trac.ffmpeg.org/wiki/Encode/AAC

«FFmpeg может поддерживать три кодера AAC-LC (aac, libfaac, libfdk_aac) и один кодер HE-AAC (v1/2) (libfdk_aac). Лицензии libfaac и libfdk_aac не совместимы с GPL, поэтому GPL не разрешает распространение двоичных файлов, содержащих код, лицензированный по этим лицензиям, когда также включен код, лицензированный по GPL ».

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