Как программно преобразовать mp3 в файл aac / m4a, воспроизводимый в itunes?

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

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

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

Спасибо!

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
5
0
11 014
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

  3. Кодировщик 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, и когда я попробовал указанную вами команду, появились следующие предупреждения / ошибки: ПРЕДУПРЕЖДЕНИЕ: параметр битрейта установлен слишком низко. В качестве аргумента он принимает биты / с, а не кбит / с. Неизвестный кодировщик «aac» Я загрузил исходный код с помощью git. Нужно ли мне скачивать другие кодеки?

Jay Mooney 16.09.2008 12:15

Вам нужен ffmpeg, скомпилированный с помощью libfaac, и его кодек libfaac, а не aac. -ab 128k - правильное значение, как вы заявили, а не -ab 128.

Dark Shikari 16.09.2008 12:35

Спасибо, что поправили меня, Дарк. И поэтому мы тестируем его перед тем, как выпустить его клиенту: P

rpetrich 16.09.2008 12:47

Вот почему люди, которым нужна помощь с ffmpeg, должны зайти на #ffmpeg, чтобы получить поддержку в реальном времени :)

Dark Shikari 16.09.2008 12:48

Правда что. Определенно бьет какого-то парня, отрывающего голову: о)

rpetrich 16.09.2008 12:58

Мне повезло с использованием 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. именно поэтому вы в первую очередь захотите конвертировать.

Ramy 19.12.2010 02:00

в 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

Другие вопросы по теме