FFMPEG: Konvertieren Sie m4a in MP3 ohne erheblichen Verlust
Ich habe eine Menge Audiodateien (ungefähr 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
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 und andere von so geringer Qualität wie 96k sind m4as.
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 sie in etwas viel Niedrigeres als 96k konvertiert werden. (Im Moment werden die Dateien in etwa 50k konvertiert.)
Weiß jemand, wie ich das machen kann? Was ich wirklich tun möchte, ist ffmpeg anzuweisen, alle M4A-Dateien in einem Verzeichnis in MP3 ' s zu konvertieren, während die aktuelle Audioqualität so gut wie möglich erhalten bleibt. (Von natürlich gibt es wahrscheinlich einige zusätzliche Verluste durch die Konvertierung von verlustbehafteten in verlustbehaftete Dateiformate.)
Danke für deine Hilfe. Wenn dies nicht möglich ist, gibt es eine Art Skript, das die erforderliche Qualität beim individuellen Konvertieren von Dateien erkennt?
PS: Ich arbeite an einem Intel Mac, habe aber auch eine Ubuntu Box.
5 answers
Variable Bitrate (VBR) verwenden
Sie können die Option -q:a
in ffmpeg
verwenden, um eine MP3-Ausgabe mit variabler Bitrate (VBR) zu erstellen:
ffmpeg -i input.m4a -c:v copy -c:a libmp3lame -q:a 4 output.mp3
Welche -q:a
Werte verwenden
Von FFmpeg Wiki: MP3 - :
Qualität mit
-q:a
(oder dem Alias-qscale:a
) kontrollieren. Werte sind encoder-spezifisch, also für libmp3lame ist der Bereich 0-9 wo ein niedrigerer Wert ist eine höhere Qualität.
- 0-3 erzeugt normalerweise transparent Ergebnisse
- 4 (Standard) sollte sein in der Nähe der Wahrnehmungstransparenz
- 6 erzeugt normalerweise eine "akzeptable" Qualität.
Die Option
-q:a
wird der Option-V
im eigenständigen Befehlszeilenschnittstellentoollame
zugeordnet.
Sie müssen experimentieren, um zu sehen, welcher Wert für Sie akzeptabel ist. Siehe auch : Audio: Empfohlene LAME Encoder Einstellungen.
Kodierung mehrerer Dateien
In Linux und macOS können Sie eine Bash "for loop" verwenden, um alle Dateien in einer directory:
$ mkdir newfiles
$ for f in *.m4a; do ffmpeg -i "$f" -codec:v copy -codec:a libmp3lame -q:a 2 newfiles/"${f%.m4a}.mp3"; done
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-03 20:31:25
Verwenden FFmpeg befehlszeilenversion.
MP3 ist offiziell eingestellt (von 2017) und veralteter Codec (ich nenne es jetzt tot). World hat bereits auf AAC (effizienterer und qualitativ hochwertigerer Codec) umgestellt, und jeder sollte dies anstelle von MP3 verwenden:
ffmpeg -i filenameee.m4a -acodec copy output.aac
Update: Obwohl ich das nicht empfehle, produzieren leider einige minderwertige und veraltete Hardware-Entwickler immer noch Appliances, die mp3
und einige verwenden die Leute verlangen immer noch nach diesem Format... Nun, hier ist es:
ffmpeg -i filenameee.m4a -acodec libmp3lame -ab 256k output.mp3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-03 17:00:02
Das hat bei mir funktioniert:
ffmpeg -i testing.m4v -b:a 192K -vn testing.mp3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-04-25 08:07:19
Auf der Grundlage vorhandener Antworten habe ich ein Bash-Skript geschrieben, das genau das tun sollte, was die Frage auf einem Ubuntu-Computer stellt (getestet am 16.04). Sie müssen avprobe
installieren, das sich im Paket libav-tools
befindet. Sie können avprobe
mit dem folgenden Befehl
sudo apt-get install libav-tools
HINWEIS: Es wäre ratsam, eine Sicherungskopie eines Ordners zu erstellen, in dem Sie dieses Skript ausführen, und sich nach besten Kräften darum zu bemühen, zu lesen und zu verstehen, was es tut bevor ausgeführt wird.
I haben nicht sehr streng so YMMV 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 07:04:48
Wenn Sie mit 48 kHz und mindestens 24 Bit in der Eingabedatei arbeiten (aus einem Dateieditor z.B.) -q:a 0
reproduziert die 20 kHz bei keiner so großen Datei wie flac... Aber niedrige Audioqualität es sei denn, Sie reduzieren das Rauschen von hohen Frequenzen (Zischen) durch Dithering oder Nose Reduction Audio-Editoren, in Konvertierungen erstellt, die reproduziert werden, dann wird Datendatei als unhörbar HF verwenden, aber teuer Lärm.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-05-02 22:27:58