Я искал способ конвертировать mp3 в aac программно или через командную строку, но безуспешно. В идеале у меня был бы фрагмент кода, который я мог бы вызвать из моего приложения rails, которое преобразует mp3 в aac. Я установил ffmpeg и libfaac и смог создать файл aac с помощью следующей команды:
ffmpeg -i test.mp3 -acodec libfaac -ab 163840 dest.aac
Когда я меняю имя выходного файла на dest.m4a, он не воспроизводится в iTunes.
Спасибо!

Я знаю только три бесплатных кодировщика AAC, доступных через интерфейс командной строки:
FAAC (LPGL), что, честно говоря, довольно плохо (качество будет существенно хуже, чем LAME при том же битрейте). Это нормально, если вы хотите использовать более высокий битрейт (>> 128 кбит / с) и вам нужен AAC для совместимости, а не из соображений качества. Чаще всего использовать FAAC через ffmpeg как libfaac.
Nero AAC, кодировщик командной строки для которого доступен бесплатно под Windows и Linux, но только для некоммерческого использования (и, соответственно, с закрытым исходным кодом).
Кодировщик AAC от ffmpeg, который все еще находится в стадии разработки, и хотя я считаю, что он технически работает, он совсем не стабилен, хорош или даже быстр, поскольку он все еще находится на начальных этапах. Насколько я знаю, его также нет в багажнике.
(Обновлено: похоже, у iTunes тоже может быть один, я подозреваю, что его условия использования аналогичны Nero. AFAIK его качество сопоставимо.)
После установки конвертирующего приложения на машину linux / window, на которой вы запускаете свое приложение Rails, используйте команду «system ()» в Ruby, чтобы вызвать конвертирующее приложение в системе. system ("command_here");
FFmpeg предоставляет средства кодирования AAC, если вы их скомпилировали. Если вы используете Windows, вы можете получить полные двоичные файлы из здесь
ffmpeg -i source.mp3 -acodec libfaac -ab 128k dest.aac
Я не уверен, как это назвать рубином.
Также не забудьте правильно установить битрейт.
Вам нужен ffmpeg, скомпилированный с помощью libfaac, и его кодек libfaac, а не aac. -ab 128k - правильное значение, как вы заявили, а не -ab 128.
Спасибо, что поправили меня, Дарк. И поэтому мы тестируем его перед тем, как выпустить его клиенту: P
Вот почему люди, которым нужна помощь с ffmpeg, должны зайти на #ffmpeg, чтобы получить поддержку в реальном времени :)
Правда что. Определенно бьет какого-то парня, отрывающего голову: о)
Мне повезло с использованием mplayer (который, как мне кажется, использует ffmpeg ...) и lame. В той степени, что я завернул это в скрипт:
#!/bin/sh
TARGET=
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 происходят из финк
Я понимаю, что опаздываю на эту вечеринку, но сомневаюсь в посылке этого вопроса. Почему вы вообще хотите конвертировать MP3 в формат, пригодный для воспроизведения в itunes? iTunes уже изначально поддерживает MP3.
Похоже, что вы выполняете ненужное преобразование, и, поскольку вы преобразовываете из одного формата с потерями в другой, вы теряете некоторое качество в процессе.
itunes загрузит песни в формате mp3, но если вы уже загрузили их в формате m4a, вам необходимо преобразовать их. Itunes также сделает это, но если у вас есть сотни песен, раздражает щелчок правой кнопкой мыши по каждой из них и преобразование. Не все плееры "мобильной цифровой музыки" (за неимением лучшего термина) проигрывают m4a. именно поэтому вы в первую очередь захотите конвертировать.
в 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 (я знаю, что есть такой ответ, но мое низкое положение не позволяет голосовать)
Фактически, синтаксис следующий: ffmpeg -i input.mp3 -c: aac -strict -2 -b: 256k output.m4a; правильнее, если имитировать "правильный" битрейт. cf.:связь для схемы компиляции. (пакет 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-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir = / usr / lib64 --enable-ru ntime-cpudetect
Хм, я установил ffmpeg, и когда я попробовал указанную вами команду, появились следующие предупреждения / ошибки: ПРЕДУПРЕЖДЕНИЕ: параметр битрейта установлен слишком низко. В качестве аргумента он принимает биты / с, а не кбит / с. Неизвестный кодировщик «aac» Я загрузил исходный код с помощью git. Нужно ли мне скачивать другие кодеки?