FFmpeg-Befehl zum Konvertieren von MP3 in AAC

48010
Soham Dasgupta

Ich kann diesen Befehl ausgeben:

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

eine m4a-datei erstellen.

Aber wenn ich diesen Befehl erteile

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

ffmpeg wirft eine Fehlermeldung

Header für Ausgabedatei # 0 konnte nicht geschrieben werden (falsche Codec-Parameter?).

Außerdem ist die Größe der m4a-Datei wirklich fast 5,8-mal größer als die Originaldatei, was absolut nicht das ist, was ich wollte und warum ich in AAC konvertieren wollte.

17

2 Antworten auf die Frage

34
slhck

Wie kann ich in AAC konvertieren?

Dies ist der grundlegendste FFmpeg-Befehl zum Konvertieren des Eingangs in AAC-Audio mit der höchsten Qualität, die AAC FFmpeg bietet. libfdk_aacist der Encoder von Fraunhofer AAC und ist verfügbar, wenn Sie FFmpeg mit Unterstützung dafür kompiliert haben.

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

Um die Qualität zu ändern, haben Sie zwei Möglichkeiten:

  • Verwenden Sie für variable Bitrate (VBR) die -vbrOption. Zum Beispiel -vbr 4ist dies eine gute Wahl (ungefähr 128 kBit / s für Stereo-Audio). Höher bedeutet besser. Die Werte liegen zwischen 1 und 5.

    ffmpeg -i input.mp3 -c:a libfdk_aac -vbr 4 output.m4a 
  • Verwenden Sie für die feste Bitrate (CBR) -b:abeispielsweise die Option -b:a 128k. 128 kBit / s sollten für die meisten Situationen ausreichend sein. Sie können oft auch etwas niedriger wählen.

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

Sie können auch HE-AAC (v1 / v2) anstelle des Standardprofils AAC-LC (geringe Komplexität) verwenden, das sich am besten für niedrige Bitraten eignet:

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

Was ist, wenn ich nicht habe libfdk_aac?

Einige Versionen von FFmpeg haben dies nicht libfdk_aac(aus Lizenzgründen). In diesem Fall können Sie den integrierten AAC-Encoder verwenden:

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

Dieser Encoder unterstützt VBR nicht ordnungsgemäß. Wenn Sie dies oder HE-AAC benötigen, lesen Sie bitte weiter.

Sie können ffmpeg selbst kompilieren und libfdk_aacSupport hinzufügen . Es gibt Anleitungen im FFmpeg-Wiki . Das Kompilieren ist unter Linux einfach, unter OS X mäßig und unter Windows ziemlich schwer. Wenn Sie die Kompilierungshandbücher befolgen und die entsprechenden Bibliotheken zuvor installieren, können Sie jetzt mit FFmpeg die Option verwenden libfdk_aac.


Bei Ihrem ursprünglichen Ansatz gab es einige Probleme:

  • alacist nicht AAC. ALAC ist der Apple Lossless Audio Codec, während AAC Advanced Audio Coding ist .

  • Aus diesem Grund ist Ihre Ausgabe größer als die Eingabe, da ALAC im Gegensatz zu MP3 noch komprimiert ist, aber verlustfrei sein muss. Deshalb müssen mehr Daten gespeichert werden.

  • .aacist kein Ausgabecontainer für ALAC-Audio. Wenn Sie AAC verwenden, sollte dies funktionieren. Ich würde allerdings MP4 oder M4A verwenden.

Unter Ubuntu 12.04 konnte ich die Option `-c: a` nicht verwenden. Hat dies ein Synonym? Ich denke, es könnte "-acodec: a" bedeuten, aber am Ende habe ich es einfach fallen gelassen und "ffmpeg" konnte einen Codec ableiten, der auf dem gewünschten Namen der Ausgabedatei basiert. (Allerdings '-strict experimentell' brauchen; und `-map_metadata 0: 0` für gutes Maß, um ID3-Tags zu erhalten.) tripleee vor 10 Jahren 0
Erwähnenswert: Ich wollte M4B-Dateien (Audiobooks), die `ffmpeg` nicht zu unterstützen scheint, aber das Konvertieren in M4A und das Umbenennen dann scheint zu funktionieren. tripleee vor 10 Jahren 0
@tripleee Das bedeutet, dass Sie ein veraltetes Programm namens 'ffmpeg' verwenden, das jedoch nicht von FFmpeg stammt, sondern von der Libav-Verzweigung. Ubuntu bündelte es leider anstelle des "echten" ffmpeg. Siehe: [Wer kann mir den Unterschied und die Beziehung zwischen ffmpeg, libav und avconv erklären?] (Http://stackoverflow.com/questions/9477115/who-can-tell-me-the-difference-and-relation-ween- ffmpeg-libav-and-avconv) slhck vor 10 Jahren 0
@slhck: Danke für das schnelle Update und den Link! tripleee vor 10 Jahren 0
@tripleee Tatsächlich sind .m4a-Dateien nicht identisch mit .mp4 (es handelt sich lediglich um eine übliche Benennung für mp4-Dateien, die nur Audio enthalten), haben jedoch ein anderes Format als .aac (als ADTS-Stream bezeichnet). Sie können FFmpeg auch zur Ausgabe im ADTS-Format erzwingen, indem Sie `-f adts` hinzufügen. Bigue Nique vor 8 Jahren 1
2
SaltySub2

Einfache Konvertierung in AAC für Zeranoe Windows Builds

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

Verwenden Sie "aac" anstelle von libfaac oder libfdk_aac: https://trac.ffmpeg.org/wiki/Encode/AAC

"FFmpeg kann drei AAC-LC-Encoder (aac, libfaac, libfdk_aac) und einen HE-AAC-Encoder (v1 / 2) (libfdk_aac) unterstützen. Die Lizenzen von libfaac und libfdk_aac sind nicht mit der GPL kompatibel, sodass die GPL nicht zulässig ist Verteilung von Binärdateien, die Code enthalten, der unter diesen Lizenzen lizenziert ist, wenn auch von GPL lizenzierter Code enthalten ist. "

Die Unterstützung für "libfaac" wurde ab 3.2 ebenfalls entfernt. slhck vor 7 Jahren 1