Не удалось записать заголовок для выходного файла # 0 (неверные параметры кодека?).
Кроме того, размер файла m4a действительно почти в 5,8 раза больше исходного файла, что совершенно не то, что я хотел и почему я хотел преобразовать в 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.
Для фиксированного битрейта (CBR) используйте -b:aопцию, например -b:a 128k. 128 кбит / с должно быть достаточно для большинства ситуаций. Вы также можете выбрать что-то более низкое.
Вы также можете использовать HE-AAC (v1 / v2) вместо стандартного профиля AAC-LC (низкая сложность), который лучше всего подходит для низких битрейтов:
Некоторые версии 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.
Были некоторые проблемы с вашим оригинальным подходом:
Вот почему ваш вывод больше, чем вход, потому что, в отличие от MP3, ALAC все еще сжимается, но он должен быть без потерь - поэтому он должен хранить больше данных.
.aacне является выходным контейнером для аудио ALAC. Если вы используете AAC, это должно сработать. Я бы использовал MP4 или M4A, хотя.
В Ubuntu 12.04 я не смог использовать опцию -c:a, есть ли у этого синоним? Я думаю, это могло бы означать, -acodec:aно в конце концов я просто отбросил его и ffmpegсмог вывести кодек на основе желаемого имени выходного файла. (Нужно -strict experimentalхотя; и -map_metadata 0:0
добавили
Также стоит отметить: я хотел файлы M4B (аудиокниги), которые, ffmpegкажется, не поддерживают, но кажется, что преобразование в M4A и затем просто переименование работает.
@tripleee На самом деле нет, файлы .m4a идентичны .mp4 (это просто условное наименование файлов mp4 только с аудио), но имеют формат, отличный от .aac (который известен как поток ADTS). Вы также можете заставить FFmpeg выводить в формате ADTS, добавив -f adts.
Bigue Nique
4
Легко конвертировать в AAC для Zeranoe Windows Builds
«FFmpeg может поддерживать три кодера AAC-LC (aac, libfaac, libfdk_aac) и один кодер HE-AAC (v1 / 2) (libfdk_aac). Лицензии libfaac и libfdk_aac не совместимы с GPL, поэтому GPL не разрешает распространение двоичных файлов, содержащих код, лицензированный по этим лицензиям, если также включен код, лицензированный по лицензии GPL ».
-c:a
, есть ли у этого синоним? Я думаю, это могло бы означать,-acodec:a
но в конце концов я просто отбросил его иffmpeg
смог вывести кодек на основе желаемого имени выходного файла. (Нужно-strict experimental
хотя; и-map_metadata 0:0
ffmpeg
кажется, не поддерживают, но кажется, что преобразование в M4A и затем просто переименование работает.ffmpeg
, но на самом деле она не из FFmpeg, а из разветвления Libav. К сожалению, Ubuntu поставила его вместо «настоящего» ffmpeg. Смотрите: кто может подсказать мне разницу и отношения между ffmpeg, libav и avconv-f adts
.Легко конвертировать в AAC для Zeranoe Windows Builds
Используйте «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 ».
источник
libfaac
поддержка также была удалена с 3.2.