Yamagi.org - Finger


DVD-Backup zu Matroska-Video mit mencoder

20.05.2009


Nachdem ich aus gegebenem Anlass einmal ausgetueftelt habe, wie man aus
zickigen DVDs ein Matroska-Video erstellt, hier eine kurze Anleitung.

Verwendete Software:
  - cpvts: Kopiert eine DVD 1:1 auf die Festplatte, entfernt dabei den
    CSS Kopierschutz. Leider nicht in den Ports vorhanden, Google findet
    es aber :) Aus den Ports sollten multimedia/libdvdread und
    multimedia/libdvdcss installiert sein.
  
  - mencoder: Encoder des mplayer-Projektes, im Wesentlichen ein
    Frontend auf libavcodec. In den Ports unter multimedia/mencoder.

  - oggenc: Zum Encoden von Wave-Dateien ins ogg/Vorbis Format. Teil von
    audio/vorbis-tools.

  - dvdxchap: Dieses Tool erzeugt eine Kapitelbeschreibung der DVD,
    welche von mkvmerge gelesen werden kann. Teil von
    multimedia/ogmtools.

  - mkvmerge: Tool zum Erstellen der Matroskadatei. Zu finden unter
    multimedia/mkvtoolnix.

Wieso Matroska und nicht OGM, werden sich nun einige Fragen. An sich
nehmen sich beide Formate nicht viel, sie koennen in etwa das Gleiche.
Es gibt jedoch einen entscheidenden Unterschied. Matroska kann grafische
Untertitel, wie die DVD sie mitbringt. OGM kann nur textbasierte
Untertitel, die Untertitel der DVD muessen konvertiert werden. Ein
Vorgang, der kaum voll automatisiert geht, man muss die konvertierten
Untertitel korrekturlesen, was sehr nervig ist.

Der Trick beim Rippen ist, dass mencoder den Sound einfach uebernimmt,
ihn also 1:1 umwandelt. Um die Synchronitaet zum Bild zu halten, werden
in das das Bild Frames eingefuegt oder entfernt. Rippt man nun nur das
Bild und den Ton nicht, sprich man nutzt die Option -noaudio, ist es
anschliessen praktisch unmoeglich den den Sound synchron zum Bild
einzumischen. Daher sollte immer mit Ton gerippt werden, auch wenn die
Tonspur am Ende nicht genutzt werden soll.

Wir legen ein Verzeichnis an, in welches die DVD kopiert wird.
  mkdir dvd/

Im ersten Schritt wird die DVD auf die Festplatte uebertragen. Dies ist
sehr anzuraten, da die Festplatte schneller als die DVD ist, also
spaeter zeit gespart wird. Ausserdem ist man CSS gleich los.
  cpvts -d /dev/cd0 -a dvd/

Nun kopieren wir das Bild und eine beliebige Tonspur in eine AVI-Datei
um. Wir encoden aus dieser heraus, da es erfahrungsgemaess bessere
Synchronitaet gewaehrleistet als ein direktes Rippen von der DVD.
  mencoder -oac copy -ovc copy -dvd-device dvd/ -o film_roh.avi dvd://N

Anschliessend wird encodet, ein klassisches 2-Pass Encoding. Es kann
jeder Codec genutzt werden, hier nehme ich MPEG4.
  mencoder -cache 65536 -oac mp3lame -lameopts cbr:br=256 -ovc lavc
  -lavcopts vcodec=mpeg4:vbitrate=1500:threads=8:vpass=1:v4mv:mbd=2
  :autoaspect:turbo film_roh.avi -o film_bild_pass1.avi

  mencoder -cache 65536 -oac mp3lame -lameopts cbr:br=256 -ovc lavc
  -lavcopts vcodec=mpeg4:vbitrate=1500:threads=8:vpass=2:v4mv:mbd=2
  :autoaspect film_roh.avi -o film_bild_pass2.avi

Nun den Ton extrahieren und in ein Vorbis-Strom konvertieren. Dies kann
nicht ueber den Umweg ueber eine WAVE-Datei erfolgen, da deren maximale
Laenge nicht selten zu kurz ist. Zuerst wird also eine Fifo erstellt.
  mkfifo sound.fifo

Nun wird oggenc gestartet:
  oggenc -r -C 6 -R 48000 -q 6 -o audio1.ogg sound.fifo

Und mplayer um den Stream zu uebergeben:
  mplayer -ao pcm:file=sound.fifo:fast:nowaveheader -vo null -vc
  null -aid 128 -af channels=6 -dvd-device dvd/ dvd://N

Dies wiederholen wir mit allen Audiostreams, die wir haben wollen.
Anschliessend kommen wir zu den Untertitel.

 mencoder -dvd-device dvd -vobsubout subtitles -vobsuboutindex 0 -sid
 0 -nosound -ovc copy -o /dev/null dvd://1

Auch dies wird mit allen Untertiteln wiederholt. Abschliessend fehlen
noch die Kapitel:
 dvdxchap dvd/ > chapters.txt

Damit haben wir alles und koennen unsere Matroskadatei erstellen. Die
genauen Optionen sind in der Manpage zu mkvmerge(1) erklaert, dass hier
nur als Beispiel. Escapes per \, da sonst das finger-Script die
Doppelstriche als Formatierung interpretiert...
  mkvmerge \-\-title "Unser Film" \-\-track-name 0:"Main Feature" -A 
  \-\-aspect-ratio 0:16/9 film_bild_pass2.avi \-\-language 0:de 
  \-\-track-name 0:"German" audio1.ogg \-\-language 0:ja \-\-track-name 
  0:"Japanese 5.1" audio2.ogg \-\-language 0:de \-\-track-name 
  0:"German Subtitle" subtitlese.idx \-\-chapters chapters.txt 
  -o unser-film.mkv

Das war es, wir haben nun ein 1:1 Abbild der DVD. Es sind 5.1
Audiospuren in allen gewuenschten Sprachen enthalten, ebenso Untertitel
und die Kapiteleinteilung. Wer es moechte kann in die gleiche Datei auch
noch das Bonusmaterial einfuegen. Die Datei kann von vielen Mediaplayer
abgespielt werden, zum Beispiel mplayer oder VLC bieten sich dort an.

Vorheriger Beitrag | Home | Seite | Naechster Beitrag