Commande FFmpeg pour convertir MP3 en AAC

21

Je peux lancer cette commande:

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

pour créer un fichier m4a.

Mais quand j'émets 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 du fichier de sortie # 0 (paramètres de codec incorrects?).

En outre, la taille du fichier m4a est vraiment presque 5,8 fois plus grande que le fichier d'origine, ce qui n'est absolument pas ce que je voulais et pourquoi je voulais convertir en AAC.

Soham Dasgupta
la source

Réponses:

38

Comment puis-je convertir en AAC?

Il s'agit de la commande FFmpeg la plus élémentaire pour convertir l'entrée en audio AAC en utilisant la meilleure qualité AAC FFmpeg. libfdk_aacest l'encodeur Fraunhofer AAC, et il est disponible lorsque vous avez compilé FFmpeg avec son support.

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

Pour changer la qualité, vous avez deux options:

  • Pour le débit binaire variable (VBR), utilisez l' -vbroption. Par exemple, -vbr 4est 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 le débit binaire fixe (CBR), utilisez l' -b:aoption, par exemple -b:a 128k. 128 kBit / s devraient être suffisants pour la plupart des situations. Vous pouvez aussi 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 AAC-LC (faible complexité) par défaut, qui convient le mieux aux faibles débits:

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

Et si je n'en ai pas libfdk_aac?

Certaines versions de FFmpeg n'en 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, donc si vous en avez besoin ou HE-AAC, lisez la suite.

Vous pouvez compiler ffmpeg vous-même et ajouter un libfdk_aacsupport. 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 donne maintenant la possibilité d'utiliser libfdk_aac.


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

  • alacn'est pas AAC. ALAC est le codec audio Apple Lossless , tandis que AAC est le codage audio avancé .

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

  • .aacn'est pas un conteneur de sortie pour l'audio ALAC. Si vous utilisez AAC, cela devrait fonctionner. J'utiliserais cependant MP4 ou M4A.

slhck
la source
Sur Ubuntu 12.04, je n'ai pas pu utiliser une option -c:a, cela a-t-il un synonyme? Je suppose que cela pourrait signifier, -acodec:amais à la fin je l'ai juste laissé tomber et j'ai ffmpegpu déduire un codec basé sur le nom de fichier de sortie souhaité. (Besoin -strict experimentalcependant; et jeté -map_metadata 0:0pour faire bonne mesure, pour conserver les étiquettes ID3.)
tripleee
À noter également: je voulais des fichiers M4B (livres audio), qui ffmpegne semblent pas prendre en charge, mais la conversion en M4A, puis le simple changement de nom semblent fonctionner.
tripleee
@tripleee Cela signifie que vous utilisez un programme obsolète appelé ffmpeg, mais ce n'est vraiment pas FFmpeg, mais le fork Libav. Ubuntu l'a malheureusement intégré au lieu du "vrai" ffmpeg. Voir: Qui peut me dire la différence et la relation entre ffmpeg, libav et avconv
slhck
@slhck: Merci pour la mise à jour rapide et le lien!
tripleee du
1
@tripleee En fait non, les fichiers .m4a sont identiques à .mp4 (c'est juste une dénomination conventionnelle pour les fichiers mp4 avec audio uniquement), mais ont un format différent de .aac (qui est connu comme un flux ADTS). Vous pouvez également forcer FFmpeg à sortir au format ADTS en ajoutant -f adts.
Bigue Nique
4

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, donc la GPL ne permet pas distribution de fichiers binaires contenant du code sous licence sous ces licences lorsque du code sous licence GPL est également inclus. "

SaltySub2
la source
2
libfaacle support a également été supprimé à partir de la 3.2.
slhck