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.
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.
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.
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:
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.
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.
@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 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. "
-c:a
, cela a-t-il un synonyme? Je suppose que cela pourrait signifier,-acodec:a
mais à la fin je l'ai juste laissé tomber et j'aiffmpeg
pu déduire un codec basé sur le nom de fichier de sortie souhaité. (Besoin-strict experimental
cependant; et jeté-map_metadata 0:0
pour faire bonne mesure, pour conserver les étiquettes ID3.)ffmpeg
ne semblent pas prendre en charge, mais la conversion en M4A, puis le simple changement de nom semblent fonctionner.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-f adts
.Conversion facile en AAC pour les versions Windows de Zeranoe
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. "
la source
libfaac
le support a également été supprimé à partir de la 3.2.