Dieser Blogpost soll in erster Linie eine Notiz für mich selbst sein, wie man eine DVD in eine MKV mit H.264-Video, Untertiteln und mehreren Audiospuren umwandelt. Ich verwende Stereo-Audio im MP3 kodiert – einfach weil an keinem unserer Abspielgeräte 5.1 Audio angeschlossen ist. Wer 5.1 haben möchte, kann gerne die rohen AC3-Spuren übernehmen. Die Beispiele legen alle Dateien im aktuellen Arbeitsverzeichnis ab. Daher empfehle ich, einen neuen Ordner anzulegen, der nach dem Merge von Audio- und Videospuren gelöscht werden kann.
DVD kopieren
Als allererstes kopiere ich die DVD mittels dvdbackup. Damit das mit CSS verschlüsselten DVDs funktioniert, muss eine entsprechende Version der libdvdcss installiert sein. Irgendwo unterhalb von /usr/share/doc gibt es ein Shell-Script, welches dies erledigt:
find /usr/share/doc -name '*css*.sh'
Üblicherweise kopiere ich die ganze DVD und nicht nur das Main-Feature. Das erledigt der Schalter “-M” wie “Mirror”, daneben sind Eingabegerät und Zielordner notwendig:
dvdbackup --verbose -M -i /dev/sr0 -o ./
Es entsteht ein Ordner mit dem Namen des Volumes. Das kann “DVD_VOLUME” sein oder “VIDEO_TS” oder “NAME_DES_FILMS”. Wieder mit “dvdbackup” erfahren Sie einiges über die ID des Main Features und Blickwinkel sowie Tonspuren:
dvdbackup --verbose -I -i VIDEO_TS
Die Ausgabe sieht etwa so aus:
Hauptfilm:
Titelzusammenstellung, die den Hauptfilm enthält, ist 5
Das Seitenverhältnis des Hauptfilms ist 16:9
Der Hauptfilm hat 1 Blickwinkel
Der Hauptfilm hat 4 Tonspuren
Der Hauptfilm hat 6 Unterbildkanäle
Der Hauptfilm hat maximal 37 Kapitel pro Titel
Der Hauptfilm hat maximal 6 Audiokanäle pro Titel
Oft wichtig ist, ob Titelzusammenstellung 5 weitere Titel enthält:
Titelzusammenstellung 5
Das Seitenverhältnis der Titelzusammenstellung 5 ist 16:9
Titelzusammenstellung 5 hat 1 Blickwinkel
Titelzusammenstellung 5 hat 4 Tonspuren
Titelzusammenstellung 5 hat 6 Unterbildkanäle
Der in Titelzusammenstellung 5 enthaltene Titel ist
Titel 1:
Titel 1 hat 37 Kapitel
Titel 1 hat 6 Audiokanäle
Beim Encodieren mit mencoder ist demnach “dvd://5″ oder “dvd://1″ später die Titelangabe, für dvdxchap ist “-t 5″ oder “-t 1″ anzugeben.
Chapter auslesen
Während die DVD im Laufwerk liegt, lesen Sie noch die Chapter aus:
dvdxchap -t 1 /dev/sr0 > chapters.txt
Anschließend kann die DVD aus dem Laufwerk genommen und beiseite gelegt werden.
Encodierung des Videos
Das Video encodiere ich im Twopass-Verfahren. Beim ersten Lauf erkennt mencoder die Stellen, die höhere Bitraten erfordern, beim zweiten Lauf wird die eigentliche Transkodierung erledigt. Das Audio schalte ich in beiden Durchläufen komplett ab, ebenso Untertitel:
mencoder -dvd-device VIDEO_TS dvd://1 -nosub -vf harddup -nosound \
-ovc x264 -x264encopts \
bitrate=1500:subq=5:bframes=3:b_pyramid=normal:weight_b:turbo=1:threads=auto:pass=1 \
-o /dev/null
mencoder zeigt beim Start einige Hinweise auf Tonspuren und verfügbare Untertitel an. Diese sollten Sie per Copy and Paste für später sichern:
audio stream: 0 format: ac3 (5.1) language: en aid: 128.
audio stream: 1 format: ac3 (5.1) language: de aid: 129.
audio stream: 2 format: dts (5.1) language: de aid: 138.
audio stream: 3 format: ac3 (stereo) language: en aid: 131.
number of audio channels on disk: 4.
subtitle ( sid ): 1 language: en
subtitle ( sid ): 3 language: de
subtitle ( sid ): 5 language: de
subtitle ( sid ): 7 language: tr
subtitle ( sid ): 9 language: de
subtitle ( sid ): 11 language: de
number of subtitles on disk: 6
Und nun zum zweiten Durchlauf. Hier entsteht eine AVI-Datei, welche lediglich die H.264 kodierte Videospur enthält – das Containerformat ist zunächst noch AVI:
mencoder -dvd-device VIDEO_TS dvd://1 -nosub -vf harddup -nosound \
-ovc x264 -x264encopts \
bitrate=1500:subq=5:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b:threads=auto:pass=2 \
-o video.avi
Audio transcodieren
Das Audio extrahiere und konvertiere ich in AVI-Dateien, die wiederum nur eine Audiospur und eine Videospur mit Dummy-Codec “frameno” enthalten. Zuerst Englisch, hier mit ID 128:
mencoder -dvd-device VIDEO_TS dvd://1 -oac mp3lame -lameopts abr:br=192 -aid 128 -ovc frameno -o audio_en.avi
Deutsch mit Audio ID 129:
mencoder -dvd-device VIDEO_TS dvd://1 -oac mp3lame -lameopts abr:br=192 -aid 129 -ovc frameno -o audio_de.avi
Untertitel extrahieren
Auch Untertitel kann mencoder extrahieren. Audio ignorieren wir und die Videoframes kopieren wir – nach /dev/null. Die SIDs entnehmen wir der Ausgabe oben. Zuerst Englisch:
mencoder -dvd-device VIDEO_TS dvd://1 -nosound -sid 1 -vobsubout subs_en -ovc copy -o /dev/null
Dann Deutsch:
mencoder -dvd-device VIDEO_TS dvd://1 -nosound -sid 3 -vobsubout subs_de -ovc copy -o /dev/null
Oft finden sich mehrere Untertitelspuren einer Sprache auf der DVD, in der Regel handelt es sich dann um Spuren mit zusätzlicher Beschreibung der Hintergrundgeräusche – “Deutsch für Hörgeschädigte” o.ä., ganz praktisch wenn man ein Video ansehen will, wenn ein Baby im Zimmer schläft.
Alles zusammenfügen
Mittels “mkvmerge” füge ich nun Videospur, beide Tonspuren und die Untertitel zusammen. In diesem Fall besagt “-A -S video.avi”, dass von dieser Datei keine Audiospur und keine Subtitel übernommen werden sollen. “-D -S audio_de.avi” bedeutet, dass diese Datei keine Videospur und keine Untertitel mitbringt, unterschlägt man “-D”, wird die Pseudo-Videospur mit Codec “frameno” übernommen:
mkvmerge --title 'Name des Films' -o Dateiname.mkv \
--chapters chapters.txt \
-A -S video.avi \
-D -S audio_de.avi -D -S audio_en.avi \
subs_de.idx subs_en.idx
Fertig! Ergänzungsbedarf gibt es möglicherweise beim Cropping (21:9-Material wird mit schwarzen Balken ausgeliefert) oder bei den Audioformaten. Zum Start sollte die beschriebene Vorgehensweise aber genügen und zu ganz guten Ergebnissen führen. Anregungen gerne in den Kommentaren.