Como faço para converter programaticamente mp3 em um arquivo aac/m4a reproduzível no iTunes?

StackOverflow https://stackoverflow.com/questions/70096

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou procurando uma maneira de converter um mp3 em aac programaticamente ou por meio da linha de comando, sem sorte.Idealmente, eu teria um trecho de código que pudesse chamar do meu aplicativo Rails que converte um mp3 em um aac.Instalei o ffmpeg e o libfaac e consegui criar um arquivo aac com o seguinte comando:

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

Quando altero o nome do arquivo de saída para dest.m4a, ele não é reproduzido no iTunes.

Obrigado!

Foi útil?

Solução

FFmpeg fornece recursos de codificação AAC se você os tiver compilado.Se você estiver usando o Windows, você pode obter binários completos de aqui

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

Não tenho certeza de como você chamaria isso de Ruby.

Além disso, certifique-se de definir a taxa de bits adequadamente.

Outras dicas

Existem apenas três codificadores AAC gratuitos que eu conheço que estão disponíveis por meio de uma interface de linha de comando:

  1. FAAC (LPGL), o que é honestamente muito ruim (a qualidade será significativamente pior do que LAME na mesma taxa de bits).Tudo bem se você deseja taxas de bits mais altas (>> 128 kbps) e precisa de AAC para compatibilidade, não por motivos de qualidade.A maneira mais comum de usar o FAAC é através do ffmpeg, como libfaac.

  2. Nero AAC, cujo codificador de linha de comando está disponível gratuitamente no Windows e Linux, mas apenas para uso não comercial (e é correspondentemente de código fechado).

  3. O codificador AAC do ffmpeg, que ainda está em desenvolvimento e embora eu acredite que funcione tecnicamente, não é nada estável, bom ou mesmo rápido, pois ainda está nos estágios iniciais.Também não está disponível no porta-malas, até onde eu sei.

(Editar:Parece que o iTunes também pode ter um, suspeito que seus termos de uso sejam semelhantes aos do Nero.AFAIK sua qualidade é comparável.)

Sei que estou atrasado para esta festa, mas estou questionando a premissa desta pergunta.Por que você deseja converter um MP3 para um formato “itunes jogável”?O iTunes já lida com MP3s nativamente.

Parece que você está fazendo uma conversão desnecessária e, como está convertendo de um formato com perdas para outro, está perdendo um pouco de qualidade no processo.

Depois de instalar o aplicativo de conversão na máquina Linux/window em que você está executando seu aplicativo Rails, use o comando "system()" em Ruby para invocar o aplicativo de conversão no sistema.sistema("comando_aqui");

no ffmpeg 0.5 ou posteriormente, use ffmpeg -i fonte.mp3 Target.m4a

para obter melhores resultados para transferir metadados e substituir a taxa de bits padrão, o ffmpeg se aplica

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

melhor não converter, pois o ipod reproduz mp3 bem (eu sei que existe essa resposta, mas minha posição baixa não permite votação)

Tive sorte usando o mplayer (que acredito que usa ffmpeg...) e coxo.A tal ponto que envolvi tudo em um script:

#!/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

Desculpe pelos problemas de segurança, um dia eu fiz isso no trem...

Meu mplayer e coxo vêm de finjo

Na verdade, a sintaxe é ffmpeg -i input.mp3 -c:a aac -strict -2 -b:a 256k output.m4a;mais correto se alguém estiver emulando a taxa de bits "correta".cf.:link para um esquema de compilação.(o pacote rpmfusion também funciona bem:

configuração:--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=genérico' --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-runtime-cpudetect

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top