Ich habe eine Menge Audiodateien (ca. 1000), die ich von m4a in mp3 konvertieren möchte, damit ich sie auf einem CD-Player mit USB-Anschluss abspielen kann.
Ich habe versucht, etwas Einfaches wie ffmpeg -i FILE.m4a FILE.mp3
zu machen, aber 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 m4as sind und einige eine niedrige Qualität wie 96k m4as haben.
Es scheint keinen Sinn zu machen, 320k zu erzwingen, da einige Dateien um ein Vielfaches größer werden, als sie sein müssen. Ebenso macht es keinen Sinn, alle meine 320k-Dateien zu zerstören, indem man sie in etwas viel Niedrigeres als 96k konvertiert. (Momentan werden die Dateien auf ca. 50.000 konvertiert.)
Weiß jemand, wie ich das machen kann? Was ich wirklich tun möchte, ist, dass ffmpeg alle M4A-Dateien in einem Verzeichnis in MP3s konvertiert, wobei die aktuelle Audioqualität so gut wie möglich beibehalten wird. (Natürlich kann die Konvertierung von verlustbehafteten in verlustbehaftete Dateiformate zu zusätzlichen Verlusten führen.)
Danke für Ihre Hilfe. Wenn dies nicht möglich ist, gibt es eine Art Skript, das die erforderliche Qualität erkennt, wenn es Dateien einzeln konvertiert?
PS: Ich arbeite an einem Intel Mac, habe aber auch eine Ubuntu-Box.
Sie können die Option -qscale:a
in ffmpeg
verwenden, um eine MP3-Ausgabe mit variabler Bitrate (VBR) zu erstellen. Aus FFmpeg-Wiki: Kodieren von VBR-MP3-Audio (variable Bitrate) :
Steuern Sie die Qualität mit
-qscale:a
(oder dem Alias -q:a
). Die Werte sind encoderspezifisch. Für libmp3lame beträgt der Bereich 0-9, wobei ein niedrigerer Wert eine höhere Qualität bedeutet. 0-3 führt normalerweise zu transparenten Ergebnissen, 4 (Standardeinstellung) sollte der Wahrnehmungstransparenz nahe kommen, und 6 führt normalerweise zu einer "akzeptablen" Qualität. Die Option-qscale:a
ist der Option-V
im eigenständigen LAME-Befehlszeilenschnittstellentool zugeordnet.
Sie müssen experimentieren, um herauszufinden, welcher Wert für Sie akzeptabel ist. Siehe auch Wasserstoff-Audio: Empfohlene LAME-Encoder-Einstellungen .
Sie können eine Bash "for loop" 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/"${f%.m4a}.mp3"; done
ffmpeg
holenEs wird empfohlen, wenn möglich einen aktuellen Build von ffmpeg
zu verwenden. Auf der Seite FFmpeg-Download finden Sie Links zu Builds für OS X, Linux und Windows. Sie können auch einer Anleitung folgen, um FFmpeg zu kompilieren.
MP3 ist bereits eingestellt (in 2017), veralteter Codec. Das Internet hat bereits auf AAC umgestellt (effizienter und qualitativ hochwertiger Codec):
ffmpeg -i filenameee.m4a -acodec copy output.aac
Wenn Sie dennoch MP3 verwenden möchten (da es noch von mehr Geräten unterstützt wird):
ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
Das hat bei mir funktioniert:
ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3
Auf der Grundlage der vorhandenen Antworten habe ich ein Bash-Skript geschrieben, das genau das tun soll, was in der Frage auf einem Ubuntu-Computer (getestet am 16.04) steht. Sie müssen avprobe
installieren, das im libav-tools
-Paket enthalten ist. Sie können avprobe
mit dem folgenden Befehl installieren
Sudo apt-get install libav-tools
HINWEIS: Es ist ratsam, eine Sicherungskopie aller Ordner zu erstellen, in denen Sie dieses Skript ausführen, und sich nach besten Kräften um das Lesen und Verstehen der Funktionsweise zu bemühen. vor dem Laufen.
Ich habe YMMV also nicht sehr rigoros getestet.
#!/bin/bash
mkdir "mp3s"
for f in *.m4a;
do
bitrate=$(avprobe "${f}" 2> >(grep bitrate) | sed 's/^.*bitrate://g' | sed 's/[^0-9]*//g')
bitrate="${bitrate}K"
new_filename=$(echo "${f}" | sed 's/.m4a$/.mp3/g')
ffmpeg -y -i "${f}" -acodec libmp3lame -ab "${bitrate}" "mp3s/${new_filename}"
done
Wenn Sie mit 48 kHz und mindestens 24 Bit in der Eingabedatei arbeiten (aus einem Datei-Editor, z. B.), wird -q:a 0
die 20 kHz bei keiner so großen Datei wie flac wiedergeben ... Aber Audio von geringer Qualität, es sei denn, Sie reduzieren die Rauschen von hohen Frequenzen (Rauschen) durch Dithering- oder Nasenreduzierungs-Audio-Editoren, die in Konvertierungen erstellt wurden und reproduziert werden. Anschließend wird die Datendatei als unhörbares, aber teures HF-Rauschen verwendet.