M4A zu MP3 Massenumwandlung (Debian / 09.04.2025)
Das Script wandelt rekursiv beginnend ab einem Pfad ($1) M4A-Audiodateien in MP3 um. Die Qualität bleibt nahezu gleich. Der Pfad ist dem $1-Argument zu übergeben.
🧾 Was macht das Skript?
📁 1. Eingabeparameter prüfen
-
Erwartet ein Verzeichnis als erstes Argument
-
Wenn kein Argument oder kein Verzeichnis → Fehlermeldung + Exit
🔍 2. Suche nach .m4a
-Dateien
-
Durchsucht rekursiv das Verzeichnis
-
Ignoriert Groß-/Kleinschreibung (
-iname
) -
Liefert eine Liste aller
.m4a
-Dateien
🔁 3. Verarbeitung jeder Datei
Für jede .m4a
-Datei:
a. Bestimme Zieldateiname .mp3
:
b. Überspringen, wenn .mp3
bereits existiert:
c. Umwandlung per ffmpeg
:
-
Eingabe: M4A-Datei
-
Ausgabe: MP3 mit LAME-Codec (
libmp3lame
) -
Qualität:
-qscale:a 4
= gute VBR-Qualität (~160 kbps) -
-y
= automatische Überschreibung (falls Datei entstehen würde) -
< /dev/null
= verhindert interaktive Prompts
d. Erfolgskontrolle
✅ Ausgabe:
-
Gibt für jede Datei an, ob sie:
-
übersprungen wurde
-
erfolgreich konvertiert wurde
-
einen Fehler erzeugt hat
-
🧰 Benötigte Pakete / Tools
Tool | Zweck | Installationsbefehl (Debian/Ubuntu) |
---|---|---|
find |
Datei-Suche | in findutils enthalten (Standard) |
ffmpeg |
Konvertierung M4A → MP3 | sudo apt install ffmpeg |
Script:
#!/bin/bash
DIR="$1"
if [ -z "$DIR" ] || [ ! -d "$DIR" ]; then
echo "Usage: $0 /pfad/zum/verzeichnis"
exit 1
fi
find "$DIR" -type f -iname "*.m4a" | while read -r M4A; do
MP3="${M4A%.m4a}.mp3"
# Nur umwandeln, wenn mp3 nicht schon existiert
if [ -f "$MP3" ]; then
echo "Überspringe (bereits vorhanden): $MP3"
continue
fi
echo "Wandle um: $M4A → $MP3"
ffmpeg -i "$M4A" -codec:a libmp3lame -qscale:a 4 "$MP3" -y < /dev/null
if [ $? -eq 0 ]; then
echo "Erfolg: $MP3"
else
echo "Fehler bei: $M4A"
fi
done