DivX-kompatible H.264/Matroska-Dateien unter Linux erstellen
Vor einem Jahr schrieb ich, wie mich mein Blog so praktisch erinnert, ein paar Zeilen über DivX und XviD. Die haben durchaus noch ihre Geltung -aber wie’s der Zufall und die fortschreitenden Versionsnummern so wollen- inzwischen gibt es noch ein paar wesentlich interessantere Dinge in diesem Zusammenhang – und die liefert diesmal DivX:
Mit der aktuellen Version setzen die Macher von DivX zum einen auf H.264 als Codec, was bestimmt nicht die schlechteste Wahl ist. Zum anderen, nämlich beim Containerformat, auf Matroska – womit das veraltete AVI-Format und das schrullige .divx endlich begraben sein dürften, eine Alternative zu Apples .proprietärem und eher .zickigigem .mp4 geschaffen wurde und tatsächlich einem reinrassigen Open-Source-Format zur verdienten Aufmerksamkeit verholfen wurde. Trotz seiner hervorragenden Möglichkeiten (es lassen sich z.B. mehrere parallele Audiospuren, Untertitel, DVD-Menus, Kapitel, Titelbilder etc. in einer einzigen MKV-Datei abspeichern) hielt das .mkv-/MKV- oder Matroska-Format bisher selbst unter den eingefleischten Linuxzeloten eher eine Exotenrolle inne. Obwohl VLC, Mplayer und Totem Matroska längst unterstützen, wollte wohl niemand einem Insulaner, wie MKV so recht vertrauen. Sofern die proprietäre Welt und damit die Hersteller von Hardware- und mainstreamtauglichen Softwareplayern, DivX wie gewohnt unterstützen, wird sich dies allerdings in Bälde durchschlagend ändern.
Was aber hat man als von DivX und Konsorten nicht eben häufig mit GUIs, Encodern und ähnlichem Spielzeug bedachter Linux/Unix-User davon? Eine ganze Menge, natürlich und auch schon losgelegt:
Benötigt: mencoder, libx264 (debian-multimedia, sources.list1), mkvtoolnix ( http://www.bunkus.org/videotools/mkvtoolnix/, Debian-Testing)
ausserdem: ogmtools, libfaac (Debian-Testing)
folgende Ergänzung in der /home/$USER/.mplayer/mencoder.conf bringt uns die beiden Encoding-Profile „h264“ und „2h264“ für ein sehr brauchbares all-round Zweipass-H264-Encoding und somit den ersten von zwei Schritten zum fertigen MKV bzw. DivX7-Movie:
[h264] ovc=x264=1 oac=lavc=1 lavcopts=acodec=libfaac:vpass=1:turbo=1 passlogfile="mencoder-2pass.log" x264encopts=qp=26:bframes=2:b_pyramid:deblock=2,2:subq=3:pass=1:turbo=2 [2h264] ovc=x264=1 oac=lavc=1 lavcopts=acodec=libfaac:vpass=2 passlogfile="mencoder-2pass.log" x264encopts=qp=26:bframes=2:b_pyramid:deblock=2,2:subq=3:pass=2
die Absicht dahinter erstreckt sich darauf, nicht jedesmal wieder den ganzen Sermon von gleichbleibenden Optionen eingeben zu müssen.
Statt dessen können wir jetzt mit
mencoder -profile h264 dvd://Titelnummer mencoder -profile 2h264 -o movie.avi dvd://Titelnummer
fast perfekte H.264-Clips erzeugen. Leider nur „fast“, denn erstens kommt leider nur eine AVI-Datei dabei heraus und zweitens… kommt leider nur eine AVI-Datei heraus – das heisst, die Audio-Spur ist zwar bereits in AC3, aber leider nicht so synchronisiert, wie wir es für H.264 brauchen. Noch nicht:
mplayer -dumpaudio -audiofile Titel.aac
isoliert die AC3-Audiospur. Mit dem Aufruf des MKV-GUIs, lässt sich das AVI in ein zu erzeugendes MKV hereinholen, die Audio Spur, die noch im AVI liegt deaktivieren! Anschliessend Titel.aac hinzufügen. Als MKV muxen. Theoretisch fertig. Praktisch wollen wir aber noch Kapitel in der Matroska-Datei.
dvdxchap -t TITELNUMMER >titel1.txt
erledigt das Exportieren der Kapitelinformation des ersten Titels die Datei titel1.txt. Mit dem Kapiteleditor aus dem MKV-GUI lässt sich diese laden und als titel1.xml wieder speichern. Der Kapiteleditor ist ein eigenständiges Programm, d.h. wir müssen unter „global“ die Datei titel1.xml in das MKV importieren und können jetzt alles miteinander „muxen“ also als Matroskadatei abspeichern. Fertig.
Alternativ lässt sich anstatt mkvmerge auch mp4creator benutzen, um aus den eben erzeugten Audio- und Videostreams iPhone/iPod/Blackberry-kompatible MP4-Dateien zu erzeugen.
Das GUI bietet noch etlichen Schnickschnack mehr: Dateien als Attachment einfügen, Sprache festlegen etc. ppp. Ausprobieren schadet nichts.
# debian-unofficial deb http://ftp.debian-unofficial.org/debian testing main contrib non-free restricted
Wieso nicht beim Profile h264 und 2h264 die audiodatie einfach weglassen? Kommt doch beim mkvmerg doch eine neue dazu?
Nicht ganz. Erstens müsste man für ein gelungenes 2-Pass Encoding die Audiospur selbst dann miterstellen, wenn man sie hinterher ersetzt, sonst passt zum Schluss die Gesamtlänge/Synchronizität nicht (ich habe das wirklich erschöpfend ausprobiert und bin deshalb schliesslich bei H.264 gelandet).
Zweitens kommt die „neue“ Audiodatei für mkvmerge aus der alten Videodatei:
mplayer -dumpaudio -dumpfile AUDIO.aac
erledigt das normalerweise – und genau dieses AUDIO.aac bindet man dann mit mkvmerge wieder ein, nachdem man die Tonspur aus der Videodatei verworfen hat.