FFMPEG: Konvertieren Sie m4a-Dateien in MP3 ohne signifikanten Verlust an Informationen / Qualität. Automatisierte Bitrate

37703
user3728501

Ich habe eine Menge Audiodateien (ungefähr 1000), die ich von m4a in mp3 konvertieren möchte, damit ich sie auf einem CD-Player abspielen kann, der über einen USB-Anschluss verfügt.

Ich habe versucht, etwas einfaches zu tun, wie: ffmpeg -i FILE.m4a FILE.mp3aber dies scheint die Bitrate auf einen sehr niedrigen Wert zu reduzieren, was ich nicht will.

Ebenso möchte ich nicht mit einer konstanten Bitrate wie 320k konvertieren, da einige der Dateien, die ich konvertiere, 320k-m4a-Dateien sind und andere eine so niedrige Qualität wie 96k-m4a-Dateien haben.

Es scheint keinen Sinn zu machen, 320k zu erzwingen, da einige Dateien um ein Vielfaches größer werden, als sie sind. Ebenso macht es keinen Sinn, alle meine 320k-Dateien zu zerstören, indem sie in etwas weniger als 96k konvertiert werden. (Derzeit werden die Dateien in etwa 50 KB konvertiert.)

Weiß jemand, wie ich das machen kann? Was ich wirklich tun möchte, ist ffmpeg zu sagen, alle m4a-Dateien in einem Verzeichnis in mp3-Dateien zu konvertieren und dabei die aktuelle Audioqualität beizubehalten. (Natürlich ist es wahrscheinlich mit zusätzlichen Verlusten verbunden, wenn Sie von verlustbehafteten zu verlustbehafteten Dateiformaten konvertieren.)

Danke für Ihre Hilfe. Wenn dies nicht möglich ist, gibt es ein Skript, das die erforderliche Qualität beim Konvertieren von Dateien erkennt?

PS: Ich arbeite an einem Intel-Mac, habe aber auch eine Ubuntu-Box.

37

5 Antworten auf die Frage

43
LordNeckbeard

VBR

Sie können die -qscale:aOption in verwenden ffmpeg, um eine MP3-Ausgabe mit variabler Bitrate (VBR) zu erstellen. Aus FFmpeg Wiki: Encoding von VBR (Variable Bit Rate) MP3-Audio :

Kontrollieren Sie die Qualität mit -qscale:a(oder dem Alias -q:a). Die Werte sind encoderspezifisch. Für libmp3lame ist der Bereich 0-9, wobei ein niedrigerer Wert von höherer Qualität ist. 0-3 führt normalerweise zu transparenten Ergebnissen, 4 (Standardeinstellung) sollte nahezu perzeptiv sein und 6 führt normalerweise zu einer "akzeptablen" Qualität. Die Option -qscale:awird der -VOption im eigenständigen Lame-Befehlszeilenschnittstellentool zugeordnet.

Sie müssen testen, welcher Wert für Sie akzeptabel ist. Siehe auch Wasserstoff-Audio: Empfohlene LAME-Encoder-Einstellungen .

Mehrere Dateien kodieren

Sie können eine Bash "for-Schleife" verwenden, um alle Dateien in einem Verzeichnis zu kodieren:

$ mkdir newfiles $ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"$.mp3"; done 

Erhalten ffmpeg

Es wird empfohlen, ffmpegwenn möglich eine aktuelle Version von zu verwenden. Auf der FFmpeg-Download- Seite finden Sie Links zu Builds für OS X, Linux und Windows. Sie können auch einer Anleitung zum Kompilieren von FFmpeg folgen .

Okay, danke, die Befehle haben funktioniert, aber ich glaube nicht, dass es das tut, was ich wollte. Ich habe -q: a 0 gesetzt, was genau das ist, was ich für eine höhere Qualität von m4as erwartet habe (das Erzeugen großer Dateien mit höheren vbr-Raten), aber Dateien mit geringerer Qualität werden meiner Meinung nach immer noch in große Dateien konvertiert, mit vbrs von etwa 250-260 kb / s. Ich hätte erwartet, dass die Dateien, die etwa 96k im m4a-Format sind, mit dem Lame-Encoder im vbr-Modus in eine ähnliche Bitrate konvertiert werden. Ich gehe davon aus, dass ich nicht ganz verstanden habe, wie der vbr-Kodierungsmodus funktioniert. user3728501 vor 10 Jahren 1
19
T.Todua

Verwenden Sie FFmpeg (es gibt auch viele GUI-Versionen)

  1. MP3 ist bereits eingestellt (2017), veralteter Codec. Das Internet hat bereits auf AAC (effizienter und qualitativ hochwertiger Codec) umgestellt :

    ffmpeg -i filenameee.m4a -acodec copy output.aac 
  2. Wenn Sie jedoch immer noch MP3 verwenden möchten (weil es noch von mehreren Geräten unterstützt wird):

    ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3 
Da es sich um die Frage der Qualität handelt, ist es möglicherweise von Vorteil, wenn Sie statt 128 in 256k konvertieren. VessoVit vor 8 Jahren 4
@VessoVit Danke, ich habe aktualisiert T.Todua vor 6 Jahren 0
3
user205987

This worked for me:

ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3 
1
jbowman

Basierend auf vorhandenen Antworten habe ich ein bash-Skript geschrieben, das genau das tun soll, was die Frage auf einem Ubuntu-Computer stellt (getestet am 16.04). Sie müssen installieren, avprobewas im libav-toolsPaket enthalten ist. Sie können avprobemit dem folgenden Befehl installieren

sudo apt-get install libav-tools

ANMERKUNG: Es ist ratsam, ein Backup aller Ordner zu erstellen, in denen Sie dieses Skript ausführen, und sich nach Möglichkeit vor dem Ausführen zu informieren und zu verstehen, was es tut .

Ich habe also YMMV nicht sehr streng getestet.

#!/bin/bash  mkdir "mp3s" for f in *.m4a; do bitrate=$(avprobe "$" 2> >(grep bitrate) | sed 's/^.*bitrate://g' | sed 's/[^0-9]*//g') bitrate="$K" new_filename=$(echo "$" | sed 's/.m4a$/.mp3/g') ffmpeg -y -i "$" -acodec libmp3lame -ab "$" "mp3s/$" done 
0
Kaiser Lima

Wenn Sie mit 48 kHz und mindestens 24 Bit in der Eingabedatei arbeiten (von einem Dateieditor i.ex.), -q:a 0werden die 20 kHz bei keiner so großen Datei wie flac reproduziert ... Aber Audio mit niedriger Qualität, wenn Sie das Rauschen nicht verringern Von Hochfrequenzen (Zischen) durch Dithering oder Nasenkorrektur werden Audio-Editoren, die in Konvertierungen erstellt werden, wiedergegeben und dann als unhörbare HF-Dateien verwendet, jedoch als teures Rauschen.