Как программно преобразовать mp3 в воспроизводимый ITunes файл AAC / M4A? - PullRequest
5 голосов
/ 16 сентября 2008

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

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

Когда я меняю имя выходного файла на dest.m4a, он не воспроизводится в iTunes.

Спасибо!

Ответы [ 7 ]

9 голосов
/ 16 сентября 2008

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

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

Я не уверен, как бы вы назвали это с рубина.

Кроме того, обязательно установите битрейт соответствующим образом.

2 голосов
/ 30 сентября 2008

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

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

2 голосов
/ 16 сентября 2008

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

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

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

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

(Правка. Похоже, что у iTunes тоже может быть один, я подозреваю, что его условия использования аналогичны Nero. AFAIK его качество сопоставимо.)

1 голос
/ 25 марта 2010

в ffmpeg 0.5 или более поздней версии ffmpeg -i source.mp3 target.m4a

для улучшения результатов передачи метаданных и переопределения скорости передачи по умолчанию применяется ffmpeg

ffmpeg -i "input.mp3" -ab 256k -map_meta_data input.mp3: output.m4a output.m4a

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

1 голос
/ 16 сентября 2008

После установки конвертирующего приложения на машине linux / window, на которой вы запускаете приложение Rails, используйте команду "system ()" в Ruby, чтобы вызвать конвертирующее приложение в системе. Система ( "command_here");

0 голосов
/ 26 апреля 2014

На самом деле синтаксис: ffmpeg -i input.mp3 -c: aac -strict -2 -b: 256k output.m4a; правильнее, если кто-то эмулирует «правильный» битрейт. cf.: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 = универсальный '--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-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir = / usr / lib64 --ena BLE-среда-cpudetect

0 голосов
/ 16 сентября 2008

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

#!/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 и lame происходят от fink

...