Comando FFmpeg para converter MP3 para AAC

17

Eu posso emitir este comando:

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.m4a 

para criar um arquivo m4a.

Mas quando eu emito este comando

ffmpeg -i input.mp3 -acodec alac -ab 128k -ar 48000 -ac 2 -y output.aac

O ffmpeg está jogando um erro dizendo

Could not write header for output file #0 (incorrect codec parameters ?).

Além disso, o tamanho do arquivo m4a é quase 5,8 vezes maior do que o arquivo original, o que não é absolutamente o que eu queria e porque eu queria converter para o AAC.

    
por Soham Dasgupta 22.12.2011 / 13:58

2 respostas

34

Como posso converter para AAC?

Este é o comando FFmpeg mais básico para converter entrada para áudio AAC usando a mais alta qualidade que o AAC FFmpeg possui. libfdk_aac é o codificador Fraunhofer AAC e está disponível quando você compilou o FFmpeg com suporte para ele.

ffmpeg -i input.mp3 -c:a libfdk_aac output.m4a

Para alterar a qualidade, você tem duas opções:

  • Para taxa de bits variável (VBR), use a opção -vbr . Por exemplo, -vbr 4 é uma boa escolha (aproximadamente 128 kbit / s para áudio estéreo). Maior significa melhor. Os valores variam de 1 a 5.

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • Para taxa de bits fixa (CBR), use a opção -b:a , por exemplo -b:a 128k . 128 kBit / s devem ser bons o suficiente para a maioria das situações. Você também pode escolher algo mais baixo.

    ffmpeg -i input.mp3 -c:a libfdk_aac -b:a 128k output.m4a
    

Você também pode usar o HE-AAC (v1 / v2) em vez do perfil padrão AAC-LC (baixa complexidade), que é mais adequado para baixas taxas de bits:

ffmpeg -i input.mp3 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k output.m4a

E se eu não tiver libfdk_aac ?

Algumas versões do FFmpeg não possuem libfdk_aac (por razões de licenciamento). Se for esse o caso, você pode usar o codificador AAC embutido:

ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a

Este codificador não suporta VBR corretamente, então se você precisar disso ou HE-AAC, continue lendo.

Você pode compilar o ffmpeg e adicionar libfdk_aac support. Existem guias no Wiki do FFmpeg . A compilação é fácil no Linux, moderadamente fácil no OS X e bastante difícil no Windows. Quando você segue os guias de compilação e instala as bibliotecas apropriadas antes, o FFmpeg agora oferece a opção de usar libfdk_aac .

Houve alguns problemas com sua abordagem original:

  • alac não é AAC. O ALAC é o Apple Lossless Audio Codec , enquanto o AAC é Codificação Avançada de Áudio .

  • É por isso que sua saída é maior do que a entrada, porque, diferentemente do MP3, o ALAC ainda é compactado, mas precisa ser sem perdas - é por isso que ele precisa armazenar mais dados.

  • .aac não é um contêiner de saída para o áudio do ALAC. Se você usa o AAC, isso deve funcionar. Eu usaria MP4 ou M4A embora.

por 22.12.2011 / 14:28
2

Fácil de converter em AAC para o Zeranoe Windows Builds

ffmpeg -i input.mp3 -c:a aac -b:a 128k output.m4a

Use "aac" em vez de libfaac ou libfdk_aac: link

"O FFmpeg pode suportar três codificadores AAC-LC (aac, libfaac, libfdk_aac) e um codificador HE-AAC (v1 / 2) (libfdk_aac). As licenças do libfaac e libfdk_aac não são compatíveis com o GPL, assim, a GPL não permite a distribuição de binários contendo código licenciado sob estas licenças quando o código licenciado sob licença GPL também estiver incluído. "

    
por 12.06.2016 / 16:47