web-dev-qa-db-fra.com

Commande FFmpeg pour convertir MP3 en AAC

Je peux donner cette commande:

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

créer un fichier m4a.

Mais quand je lance cette commande

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

ffmpeg lance une erreur en disant

Impossible d’écrire l’en-tête pour le fichier de sortie n ° 0 (paramètres de codec incorrects?).

En outre, la taille du fichier m4a est en réalité presque 5,8 fois supérieure à celle du fichier d'origine, ce qui n'est absolument pas ce que je voulais et pourquoi je voulais convertir au format AAC.

18
Soham Dasgupta

Comment puis-je convertir en AAC?

Il s'agit de la commande FFmpeg la plus élémentaire permettant de convertir une entrée en audio AAC à l'aide de la plus haute qualité dont dispose AAC FFmpeg. libfdk_aac est l'encodeur Fraunhofer AAC et il est disponible lorsque vous compilez FFmpeg avec une prise en charge.

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

Pour changer la qualité, vous avez deux options:

  • Pour un débit binaire variable (VBR), utilisez l’option -vbr. Par exemple, -vbr 4 est un bon choix (environ 128 kBit/s pour l’audio stéréo). Plus haut signifie mieux. Les valeurs vont de 1 à 5.

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a
    
  • Pour un débit binaire fixe (CBR), utilisez l'option -b:a, par exemple -b:a 128k. 128 kBit/s devraient suffire dans la plupart des situations. Vous pouvez souvent choisir quelque chose de plus bas.

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

Vous pouvez également utiliser HE-AAC (v1/v2) au lieu du profil par défaut AAC-LC (faible complexité), qui convient le mieux aux débits binaires bas:

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

Et si je n'ai pas libfdk_aac?

Certaines versions de FFmpeg n'ont pas libfdk_aac (pour des raisons de licence). Si tel est le cas, vous pouvez utiliser l'encodeur AAC intégré:

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

Cet encodeur ne prend pas correctement en charge VBR. Si vous avez besoin de cela ou de HE-AAC, lisez la suite.

Vous pouvez vous-même compiler ffmpeg et ajouter le support libfdk_aac. Il existe des guides sur le Wiki FFmpeg . La compilation est facile sous Linux, modérément facile sous OS X et plutôt difficile sous Windows. Lorsque vous suivez les guides de compilation et installez les bibliothèques appropriées auparavant, FFmpeg vous offre maintenant la possibilité d'utiliser libfdk_aac.


Il y avait quelques problèmes avec votre approche originale:

  • alac n'est pas AAC. ALAC est le codec audio Apple Lossless , alors que AAC est codage audio avancé .

  • C'est pourquoi votre sortie est plus volumineuse que l'entrée, car contrairement au format MP3, ALAC est toujours compressé, mais il doit être sans perte - c'est pourquoi il doit stocker davantage de données.

  • .aac n'est pas un conteneur de sortie pour l'audio ALAC. Si vous utilisez AAC, cela devrait fonctionner. Je voudrais utiliser MP4 ou M4A si.

36
slhck

Conversion facile en AAC pour les versions Windows de Zeranoe

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

Utilisez "aac" au lieu de libfaac ou libfdk_aac: https://trac.ffmpeg.org/wiki/Encode/AAC

"FFmpeg peut prendre en charge trois encodeurs AAC-LC (aac, libfaac, libfdk_aac) et un encodeur HE-AAC (v1/2) (libfdk_aac). Les licences de libfaac et libfdk_aac ne sont pas compatibles avec la GPL. la GPL n'autorise pas la distribution de fichiers binaires contenant du code sous licence sous ces licences lorsque du code sous licence GPL est également inclus. "

3
SaltySub2