Das Rootserver-Experiment

Erlebnisse eines Rootserver (Beinahe-) Neulings

Verantwortlich für den Inhalt dieser Seite ist Mattias Schlenker, Inhaber Mattias Schlenker IT-Consulting Mattias Schlenker work Dietrich-Bonhoeffer-Str. 3, 40667 Meerbusch. Germany work Fon +49 341 39290767. Meine USt-ID (VATIN) lautet: DE240998538. http://www.mattiasschlenker.de

Diese Seite läuft unter Wordpress 2.x.x. News und Kommentare können als RSS-2.0-Feed abonniert werden.

DVD nach MKV rippen

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.

3 Antworten auf “DVD nach MKV rippen”

  1. Eduard (January 2nd, 2013 um 1:55 am)

    Eine schöne Beschreibung. Ich habe noch nicht verstanden, warum du die Einzelschritte bevorzugst und mencoder nicht gleich alles auf einmal in einen Matroska-Container packen lässt?

  2. Jan (January 2nd, 2013 um 11:45 am)

    Hallo,

    warum MKV und nicht ein normaler mp4-Container?

  3. Mattias (January 2nd, 2013 um 9:05 pm)

    @1. Eduard: Ich hatte beim gemeinsamen kodieren immer “too many video packets in buffer” und damit auseinanderdriftenden Ton und Bild. Das kann man wohl mit zusätzlichen Parametern beheben, welche jedoch die Komplexität erhöhen. Zudem kann man bei diesem Verfahren vor dem Zusammenfügen die Einzeldateien überprüfen und muss dann nicht nochmal den gesamten Transcode-Lauf neu starten, wenn eine AID oder eine SID falsch war.

    @2. Jan: Die MPEG verlangt Lizenzgebühren für die Spezifikation, was freie Implementierungen erschwert. Zudem schreibt MPEG bestimmte Codecs vor. Matroska gibt mehr Freiheiten. Da wir kaum noch Apple Hardware im Haushalt haben und alle unsere Abspieler mit MKV und X264 und einigen weiteren klar kommen, habe ich mich für dieses offene und flexiblere Format entschieden.