2008-09-16 6 views
5

Я искал способ конвертировать mp3 в aac программно или через командную строку без везения. В идеале, у меня был бы фрагмент кода, который я мог бы вызвать из своего приложения rails, которое преобразует mp3 в aac. Я установил FFmpeg и libfaac и был в состоянии создать файл Aac с помощью следующей команды:Как программно конвертировать mp3 в файл aac/m4a, воспроизводимый в Itunes?

ffmpeg -i test.mp3 -acodec libfaac -ab 163840 dest.aac

Когда я изменить имя выходного файла в dest.m4a, он не играет в Itunes.

Спасибо!

ответ

9

FFmpeg обеспечивает кодирование AAC объектов, если вы собрали их. Если вы используете Windows, вы можете получить полные бинарные файлы из here

ffmpeg -i source.mp3 -acodec libfaac -ab 128k dest.aac 

Я не знаю, как вы могли бы назвать это из рубина.

Также не забудьте установить битрейт соответствующим образом.

+0

Хмм, я установил ffmpeg, и когда я попробовал указанную вами команду, появились следующие предупреждения/ошибки: ВНИМАНИЕ: параметр битрейта установлен слишком низко. Он принимает бит/с в качестве аргумента, а не kbits/s Неизвестный кодер 'aac' Я загрузил источник с помощью git. Нужно ли загружать любые другие кодеки? – 2008-09-16 08:15:01

+0

Вам нужен ffmpeg, скомпилированный с libfaac, и его acodec libfaac, а не aac. -ab 128k - это правильное значение, как вы сказали, не -ab 128. – 2008-09-16 08:35:45

2

Есть только три свободных AAC кодеры, которые я знаю, которые доступны через интерфейс командной строки:

  1. FAAC (LPGL), который честно довольно плохо (качество будет значительно хуже, чем LAME с тем же битрейтом). Его прекрасно, хотя если вы готовы пойти на более высокие скорости передачи (>> 128 кбит/с) и нуждаться в AAC для совместимости, а не по качеству. Наиболее распространенным способом использования FAAC является ffmpeg, как libfaac.

  2. Nero AAC, кодер командной строки, для которого доступно бесплатно под Windows и Linux, но только для некоммерческого использования (и, соответственно, с закрытым исходным кодом).

  3. ffmpeg AAC encoder, который все еще находится в разработке, и, хотя я считаю, что он технически работает, он не является абсолютно стабильным, хорошим или даже быстрым, поскольку он все еще находится на начальных этапах. Насколько я знаю, его также недоступны в багажнике.

(Edit: Кажется, ITunes может иметь один тоже, я подозреваю, что его условие использования аналогичны Нерона AFAIK его качество сравнимо.).

1

После установки преобразования приложения на Linux окна машины/вы запускаете приложение Rails, используйте команду «system()» в Ruby для вызова приложения конвертации в системе. Система ("command_here");

0

Мне повезло с использованием mplayer (который, я считаю, использует ffmpeg ...) и хромого. Для того, что я завернул его в скрипте:

#!/bin/sh 

TARGET=$1 

BASE=`basename "${TARGET}"` 
echo TARGET: "${TARGET}" 
echo BASE: "${BASE}" .m4a 

# Warning! Race condition vulnerability here! Should use a mktemp 
# variant or something... 
mkfifo encode 
mplayer -quiet -ao pcm -aofile encode "${TARGET}" & 
lame --silent encode "${BASE}".mp3 
rm encode 

Извините за вопросы безопасности, я ударилась это на поезд в один прекрасный день ...

Мой MPlayer и хромой приходят из fink

1

Я понимаю, что опаздываю на эту вечеринку, но я задаюсь вопросом о предпосылке этого вопроса. Почему вы даже хотите конвертировать MP3 в формат «itunes playable»? iTunes уже обрабатывает MP3-файлы изначально.

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

1

в FFmpeg 0,5 или более поздняя версия используйте FFmpeg -i source.mp3 target.m4a

для достижения лучших результатов для передачи метаданных и переопределить битрейт по умолчанию FFmpeg применяет

FFmpeg -i "input.mp3" - абы 256k -map_meta_data input.mp3: output.m4a output.m4a

лучше не конвертировать, как ставка играет mp3 штраф (я знаю, что есть такой ответ, но мои низкие стоячий не допускает голосование)

0

на самом деле, синтаксис ffmp например -i input.mp3 -c: a a-strict -2 -b: выход 256k.m4a; правильнее, если вы эмулируете «правильный» битрейт. см .: link для схемы компиляции. (пакет rpmfusion работает также отлично:

Конфигурация: --prefix =/usr --bindir =/usr/bin --datadir =/usr/share/ffmpeg --incdir =/usr/include/ffmpeg --libdir =/usr/lib64 --mandir =/usr/share/man --arch = x86_64 --optflags = '- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector-strong - param = ssp-buffer-size = 4 -grecord-gcc-switches -m64 -mtune = generic '--enable-bzlib --disable-crystalhd --enable-frei0r --enable-gnutls --enable-libass --enable -libcdio --enable-libcelt --enable-libdc1394 --disable-indev = jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopencv --enable-libopenjpeg - -enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 - -enable-libxvid --enable-x11grab --enable-avfilter --enable-avres ample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir =/usr/lib64 --enable-runtime- cpudetect