Shell Skript zum Erstellen von iPod / iPhone kompatiblen Hörbüchern im Format M4B

Geschrieben von Eric Scheibler am 07.11.2010

Voraussetzungen: Ein Hörbuch im MP3 Format bestehend aus einer oder mehreren MP3 Dateien, die sich entweder alle in einem Ordner oder in beliebig vielen Unterordnern befinden können.

Ziel: Erstellen der M4B Datei(en) unter Linux (getestet mit Debian 5.0). Da iTunes die Länge eines Hörbuchs nicht mehr korrekt angezeigt hat, wenn dieses länger als 8 Stunden war, splittet das Skript das Buch beim Erreichen der 8 Stunden Grenze in mehrere M4B Dateien auf. Die Grenze könnte auch bei 9 Stunden liegen, das habe ich nicht so genau ausprobiert, 8 Stunden Länge funktioniert einwandfrei.

Installation der benötigten Programme:

# apt-get install mp3wrap faac mp3info madplay mp3val

Installation des Skripts

MP3toM4B herunterladen und in einen belibigen Ordner abspeichern.

Möchte man das Skript ohne Pfadangabe direkt aus der Konsole heraus starten, so sollte man es nach /usr/bin kopieren. Anschließend muss es noch ausführwar sein, da es Jeder nutzen können soll, genügt folgender Befehl:

# chmod +x /usr/bin/mp3tom4b

Jetzt kann man den Konvertierungsprozess mit dem Befehl

mp3tom4b /pfad_zum_Hörbuchordner

starten. Relative Pfade werden nicht unterstützt. Anschließend werden Autor, Titel und Jahr des Buches abgefragt und als metainformationen in die .m4b Dateien eingebettet. Der prozess dauert auf einem Atom D510 Prozessor und einem 10 Stunden langen Hörbuch ca. eine Stunde.

Noch eine Anmerkung zur Stuktur des Quellordners. Oft liegt ein Hörbuch in mehreren Unterordnern wie beispielsweise “CD 1”, “CD 2” … vor. Solange es weniger als 10 CD’s sind, ist das kein Problem. Liegen jedoch 10 oder mehr CD’s in dem Ordner und haben diese die Ordnernamen “CD 1”, “CD 2”, …, “CD 10” gibt es ein Problem mit der Sortierung. Linux, bzw. “find” würden den Ordner namens “CD 10” vor “CD 1” einordnen und damit käme die Reihenfolge des Hörbuchs durcheinander. Als Lösung bietet sich an, die Ordner vor dem Konvertierungsprozess in “CD 01”, “CD 02”, …, “CD 10” umzubenennen, dann funktioniert es.

Außerdem gibt es Probleme, wenn das Hörbuch lediglich aus einer einzigen MP3 Datei besteht, die länger als 8 Stunden ist. Damit das funktioniert, muss die Datei vorher beispielsweise mit “mp3splt” manuell geteilt werden. man könnte das Skript auch diesbezüglich anpassen.

Sollte noch irgendwer Tipps zur Verbesserung des Skripts haben, wäre ich daran sehr interessiert.