Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Dieser Artikel beschreibt das Erstellen von DVD-Sicherheitskopien mit MPlayer/MEncoder für die Extrahierung der Quelldaten von der DVD und die Konvertierung der Video-Spur, den vorbis-tools und normalize-audio für die Konvertierung der Audio-Spur/Spuren und MKVToolNix für das Zusammenfügen von Video, Audio und Untertiteln in einen Matroska-Container. Der freie x264 Codec entspricht MPEG-4 AVC und bietet eine deutlich bessere Bildqualität/Kompression als geläufige MPEG-4 ASP Codecs (z. B. XviD, DivX). D. h. höhere Bildqualität bei gleicher Bitrate oder kleinere Dateigröße bei gleicher Qualität. Einen ausführlichen Codec-Vergleich gibt es bei Doom9.org .
Die mit dem hier beschriebenen Verfahren erzeugten Dateien eignen sich nicht gut für den Einsatz auf aktuellen (Stand Oktober 2006) Hardware DVD-Playern, da es hier (noch) an der Unterstützung der verwendeten Formate mangelt. Die Wiedergabe auf PCs unter Ubuntu läuft sehr gut mit MPlayer, XINE, VLC (ab SVN 0.8.6), Totem-Xine (GStreamer bisher nur eingeschränkt).
Allgemein muss eine DVD gelesen werden können. Hierfür wird die Bibliothek libdvdcss benötigt (siehe DVD-Wiedergabe). Zusätzlich müssen folgende Pakete installiert [1] werden:
lsdvd (multiverse)
mplayer (multiverse )
mencoder (multiverse )
normalize-audio (universe )
vorbis-tools
gpac (multiverse )
mkvtoolnix (universe )
mkvtoolnix-gui (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install lsdvd mplayer mencoder normalize-audio vorbis-tools gpac mkvtoolnix mkvtoolnix-gui
sudo aptitude install lsdvd mplayer mencoder normalize-audio vorbis-tools gpac mkvtoolnix mkvtoolnix-gui
Zunächst wird die DVD auf die Festplatte gerippt.
Auf einer handelsüblichen DVD gibt es immer mehrere Tracks, von denen allerdings nur einer den eigentlichen Film enthält. Die anderen enthalten beispielsweise i.d.R. für den Rip uninteressante Werbetrailer oder Bonus-Material. Um diesem Track zu finden, gibt man einfach folgendes bei eingelegter DVD in die Konsole [2] ein:
lsdvd |grep Longest
oder auch
lsdvd /dev/sdc0 |grep Longest
Manchmal wird auch die Gerätedatei /dev/dvd
(nur bis Ubuntu 13.04) oder auch /dev/sr0
genutzt, je nachdem wie die DVD eingebunden wird. Die richtige Spur wird angezeigt.
In seltenen Fällen wird hier die falsche Spur ermittelt. Vor dem Rippen sollte man sich daher auf jeden Fall mit:
mplayer dvd://n
vergewissern, ob es die Richtige ist. Ansonsten manuell die Richtige suchen.
mplayer dvd://n -v -dumpstream -dumpfile Dateiname.vob
Ggf. ist es nötig, das zu benutzende Gerät bei diesem Befehl mit anzugeben: z.B. -dvd-device /dev/sr0
n
gibt die oben ermittelte Spur an, die gerippt werden soll, z.B. 1
-dumpstream -dumpfile Dateiname.vob
(speichert die gesamte Spur auf die Festplatte mit Namen Dateiname.vob)
Liegt die DVD nicht in einem Gerät, sondern als ISO-Datei vor, gibt man den Namen der Datei ebenfalls so an: -dvd-device /path/to/dvdfile.iso
Will man Vor- und Abspann nicht mit auf die Festplatte kopieren, so kann man optional mit dem Parameter -chapter x-y
erreichen, dass nur die Kapitel von x
bis y
einschließlich gerippt werden. Beinhaltet zum Beispiel das erste Kapitel nur den Vorspann und das 20. Kapitel nur den Abspann, so fügt man beim Rippen die Option
-chapter 2-19
an den o.g. Befehl an, also:
mplayer dvd://n -v -chapter 2-19 -dumpstream -dumpfile Dateiname.vob
Gibt man nur ein Startkapitel an, wird als Endkapitel 1 vorausgesetzt, also ab den Startkapitel der restliche Film gerippt
Zusätzlich kann man die gewünschten Untertitel im VobSub-Format rippen. Erzeugt werden die Dateien Dateiname.idx und Dateiname.sub. Oftmals ist es allerdings erwünscht, die Untertitelspuren in ein Textformat wie SubStation_Alpha umzuwandeln, da dieses sowohl kleiner ist (oftmals nur ca. 100kb), als auch deutlich schöner, und in beliebiger Schrift und Schriftgröße angezeigt wird.
mencoder dvd://n\ -nosound -ovc frameno -o /dev/null\ -slang de\ -sid 1\ -vobsuboutindex 0\ -vobsuboutid de\ -vobsubout Dateiname
-dvd://n
richtige Spur n auf der DVD
-nosound -ovc frameno -o /dev/null
kein Video und kein Audio (da ja nur die Untertitel herausgemuxt werden sollen)
-slang en
die Sprache der gewünschten Untertitelspur
-sid 1
die SubtitleID der gewählten Spur
-vobsuboutindex 0
der Index der herauszumuxenden Untertitelspur in den sub- und idx-Dateien <- bei mehreren Spuren sollte nach oben gezählt werden.
-vobsuboutid de
die Sprach-ID der herauszumuxenden Untertitelspur
-vobsubout Dateiname
Der Dateiname: es werden eine Dateiname.sub und eine Dateiname.idx erzeugt.
Informationen zur SubtitleID und zur Sprache der gewünschten Untertitelspur liefert:
mencoder dvd://1 -o /dev/null | grep sid
Nun kann mit Hilfe der beiden Dateien *.sub und *.idx und einem Programm wie Avidemux mit Hilfe von OCR-Texterkennung umwandelt. Näheres ist in Avidemux erklärt
Konvertierungsvorgänge von Filmen, die 1:30h und länger sind, dauern lange. Um so ärgerlicher ist es daher, wenn nach dieser Zeit das Ergebnis unzufriedenstellend ist. Daher kann es nützlich sein, aus der Dateiname.vob einen kurzen Ausschnitt herauszuschneiden und an diesem alle Vorgänge auszuprobieren.
mencoder Dateiname.vob\ -ovc copy -oac copy\ -ss 400\ -endpos 30\ -o kleine_testdatei.vob
Dateiname.vob
Große Datei, aus welcher ein kleiner Teil herausgeschnitten werden soll
-ovc copy -oac copy
Audio und Video wird 1:1 im gewählten Zeitraum kopiert
-ss 400
Stelle, ab welcher angefangen werden soll, die neue Datei zu erstellen, hier ab der 400sten Sekunde.
-endpos 30
Zeit, wie lange die neue Datei dauern soll, hier 30 Sekunden.
-o kleine_testdatei.vob
Name der neuen Vob-Datei die erstellt wird.
Nun kann man alle genannten Schritte mit der kleine_testdatei.vob ausprobieren und experimentieren.
Die nachstehenden Prozesse lassen sich für beliebig viele Audiospuren (z. B. weitere Sprachen, Audio-Kommentar, etc.) wiederholen. Auch Kombinationen verschiedener Formate (z B. Hauptspur Deutsch in Dolby Digital AC3, Hauptspur Englisch in Dolby Digital AC3, Kommentarspur in Vorbis mit -q3
) sind problemlos möglich.
Das Beibehalten der originalen Tonspur bietet die beste Qualität, wenn man es nicht auf die kleinstmögliche Dateigröße absieht.
mplayer Dateiname.vob -aid 128 -dumpaudio -dumpfile Dateiname.ac3
-aid 128
(die erste Tonspur, 129
wäre die zweite, etc.)
-dumpaudio -dumpfile Dateiname.ac3
(speichert Audio auf die Festplatte mit Namen Dateiname.ac3
)
Wenn man die AC3-Spur nicht kopieren möchte, muss man diese zunächst wie folgt rippen:
mplayer Dateiname.vob -ao pcm:fast:file=Dateiname.wav -vc null -aid 128 -vo null
Die Option aid 128
steht für die erste Tonspur, 129
wäre die zweite, etc.
Die nachfolgenden Beispiele zeigen die Flexibilität des MPlayers. Die Rauten (#) sind hierbei Platzhalter für den DVD-Titel und dessen Kapitel:
mplayer -vc null -vo null -ao pcm:fast:waveheader:file=test.wav dvd://# -chapter #-#
Möchte man beispielsweise aus dem zweiten Titel der DVD die Kapitel 3 bis 4 extrahieren, ändert sich die Eingabe wie folgt:
mplayer -vc null -vo null -ao pcm:fast:waveheader:file=test.wav dvd://2 -chapter 3-4
Verfügt die DVD über mehrere Tonspuren pro Titel (z.B. Englisch, Deutsch, Französisch), kann über den Parameter -aid die gewünschte Tonspur gewählt werden:
mplayer -vc null -vo null -aid 128 -ao pcm:fast:waveheader:file=test.wav dvd://# -chapter #-#
Wenn man sich nicht sicher ist, welche -aid
-Nummer die gewünschte ist, kann man die DVD kurz mittels mplayer per
mplayer dvd:// -v
abspielen und den Wert ablesen. Die Ausgabe im Terminal sieht dabei in etwa so aus:
There are 1 titles on this DVD. There are 1 angles in this DVD title. audio stream: 0 format: ac3 (stereo) language: Deutsch aid: 128.
Die originalen Tonspuren sind meist relativ leise. Mit "normalize-audio
" kann man die Lautstärke um ein paar Dezibel anheben. Dieser Schritt ist optional und kann auch übersprungen werden.
normalize-audio Dateiname.wav
oggenc -q5 Dateiname.wav
Die Option -q5
entspricht einer Bitrate von ca. 160 Kb/s (und ist die Qualität, bei der man von "Transparenz" spricht. Die meisten Hörer können hierbei keinen Unterschied zum Original feststellen).
Der nachfolgende Befehl extrahiert den Ton in eine MP3-Datei namens test.mp3. Die Rauten (#) sind hierbei Platzhalter für den DVD-Titel und dessen Kapitel:
mencoder dvd://# -dvd-device /dev/sr0 -chapter #-# -aid 128 -oac mp3lame -lameopts aq=2:abr=192 -ovc copy -of rawaudio -o test.mp3
Möchte man beispielsweise aus dem zweiten Titel der DVD die Kapitel 3 bis 4 extrahieren, ändert sich die Eingabe wie folgt:
mencoder dvd://2 -dvd-device /dev/sr0 -chapter 3-4 -aid 128 -oac mp3lame -lameopts aq=2:abr=192 -ovc copy -of rawaudio -o test.mp3
Der folgende Befehl verwendet ein FIFO, um die Audiospur direkt in AAC umzuwandeln. Es kann alternativ auch erst eine WAV erzeugt werden.
mkfifo audiodump.pcm faac -q 100 -P -R 48000 -X audiodump.pcm -o track1.aac & mplayer track1.vob -ao pcm:fast:nowaveheader:file=audiodump.pcm -vc null -aid 128 -vo null >/dev/null rm audiodump.pcm
Mit folgendem Befehl kann man die 5.1 Kanäle einer DVD-Audiospur erhalten und in ein 5.1 AAC übertragen.
mkfifo audiodump.pcm faac -q 100 -I 5,6 -P -R 48000 -C 6 -X audiodump.pcm -o track1.aac & mplayer track1.vob -ao pcm:fast:nowaveheader:file=audiodump.pcm -vc null -vo null -channels 6 -aid 128 >/dev/null rm audiodump.pcm
Dieser Schritt ist nur nötig, wenn der gerippte Film eine bestimmte Dateigröße (z.B. 700 MB) erhalten soll und funktioniert mit folgender Formel
Bitrate = (Ziel_Dateigröße_in_Mbyte - Audio_Dateigröße_in_Mbyte) * 1024 * 1024 / Länge_in_Sekunden * 8 / 1000
Kurz:
Bitrate = Ziel_reine_Videogröße_in_Mbyte / Länge_in_Sekunden * 8388,608
Um z.B. einen Film von 2 Stunden Länge, mit einer bereits komprimierten Audiospur von 60 MB, auf die Größe einer 700-MB-CD zu komprimieren, müsste die Bitrate wie folgt ermittelt werden
(700 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 = ca. 745 kbps
Die genaue Länge des Videos in Sekunden kann man mit dem Befehl
mplayer -frames 0 -identify Dateiname.vob 2>/dev/null|grep ID_LENGTH
herausfinden.
Allerdings sollte man die ermittelte Bitrate lieber etwas abrunden, wenn man den fertigen Film auf CD brennen will. Andernfalls riskiert man, dass die erstellte Datei ein paar KB oder MB zu groß für das Medium ist.
Das Beschneiden (Cropping) bezeichnet das Entfernen der schwarzen Balken um das Originalbild.
mplayer Dateiname.vob -vf cropdetect
spielt die gerippte Datei Dateiname.vob
mit dem Videofilter (-vf) cropdetect
ab. MPlayer ermittelt automatisch, an welchen Stellen das Bild beschnitten werden muss, um störende schwarze Balken zu entfernen, die zudem unnötig Bits kosten würden. Die Werte werden im Terminal ausgegeben.
[CROP] Crop area: X: 13..708 Y: 0..575 (-vf crop=688:576:18:0).0 [CROP] Crop area: X: 13..708 Y: 0..575 (-vf crop=688:576:18:0).0 [CROP] Crop area: X: 13..708 Y: 0..575 (-vf crop=688:576:18:0).0
Man navigiert am besten mit den Cursor-Tasten bzw. Bild-Tasten durch den Film, bis sich die Werte im Terminal nicht mehr ändern. Danach kann man die Wiedergabe mit Q abbrechen und die Werte kopieren/notieren. In obigem Beispiel 688:576:18:0.
Um die bestmögliche Qualität und/oder eine bestimmte Dateigröße zu erhalten, encodiert man die Videospur in zwei Durchgängen. Der erste Durchgang ermittelt hierbei eine Statistik über den Encodieraufwand jedes einzelnen Bildes und schreibt diese in die Datei divx2pass.log. Der zweite Durchlauf bedient sich eben dieser Statistik und verwendet für Szenen mit viel Bewegung mehr Bits als für solche mit weniger Bewegung. Dadurch ist gewährleistet, dass in komplexeren Szenen die Bitrate variabel erhöht werden kann und in ruhigen, weniger anspruchsvollen Bereichen Bits eingespart werden können.
Die nachfolgenden Beispiele verwenden die Werte aus den bisher durchgeführten Schritten für das Beschneiden (688:576:18:0) und die Bitrate (745) und müssen immer angepasst werden! Alle Encodieroptionen sind auf sehr hohe Qualität ausgerichtet und können so übernommen werden.
Vorausgesetzt wird PAL-Video. Die umfassende Behandlung von Deinterlacing würde den Rahmen dieses Artikels sprengen. Es sei daher auf diesen Wikipedia-Artikel und die MPlayer Dokumentation verwiesen. Als Deinterlacing-Filter leistet pp=lb
(linear blend) gute Dienste. Im folgenden Beispiel wäre in diesem Fall -vf crop=688:576:18:0,harddup\
durch -vf crop=688:576:18:0,pp=lb,harddup\
zu ersetzen. Soll NTSC-Video kodiert werden, empfiehlt sich -vf pullup,softskip,crop=688:576:18:0,harddup\
bzw. -vf pullup,softskip,crop=688:576:18:0,pp=lb,harddup\
. Des Weiteren muss -ofps
gemäß der MPlayer-Dokumentation angepasst werden. Bei progressivem NTSC z. B. -ofps 24000/1001
.
In diesem Beispiel wird das Bild nicht skaliert. Die ursprüngliche Bildgröße wird beibehalten und später das korrekte Seitenverhältnis im Matroska-Container gespeichert (z.B. 4/3). Aus Qualitätsgründen ist es generell nicht ratsam, das Bild zu vergrößern. Sollte man dennoch eine Skalierung in Betracht ziehen (z.B. Bildverkleinerung um mit niedriger Bitrate besser komprimieren zu können), ist die richtige Reihenfolge der Filter zu beachten: cropping
vor deinterlacing
vor scaling
. In diesem Beispiel wäre für eine Verkleinerung z.B. -vf crop=688:576:18:0,pp=lb,scale=512:384,harddup\
zu setzen.
mencoder -v\ Dateiname.vob\ -aspect 16/9\ -vf crop=688:576:18:0,harddup\ -ovc x264 -x264encopts subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:weight_b:turbo=1:pass=1:psnr:threads=0:bitrate=745\ -ofps 25\ -oac copy\ -of rawvideo\ -o Dateiname.264
-aspect 16/9
Gibt das Pixelseitenverhältnis an, das ist günstig, da dieses auch nach dem Croppen gleich ist. Üblich sind hier 16/9, diese Werte stehen oft auf der Rückseite des DVD Covers.
-vf crop=688:576:18:0
(Werte für die Bildbeschneidung müssen angepasst werden)
harddup
(Verbessern der Mux- und A/V-Synchronisationszuverlässigkeit)
-ovc x264 -x264encopts subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid:weight_b:turbo=1:pass=1:psnr:threads=0:bitrate=745
(bitrate
muss angepasst werden)
-ofps 25
(25 Bilder pro Sekunde)
-oac copy
(schleift die Audiospur aus Synchronisationsgründen mit durch)
-of rawvideo
(speichert nur die Videodaten)
mencoder -v\ Dateiname.vob\ -aspect 16/9\ -vf crop=688:576:18:0,harddup\ -ovc x264 -x264encopts subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:weight_b:pass=2:psnr:threads=0:bitrate=745\ -ofps 25\ -oac copy\ -of rawvideo\ -o Dateiname.264
-aspect 16/9
Gibt das Pixelseitenverhältnis an, das ist günstig, da dieses auch nach dem Croppen gleich ist. Üblich sind hier 16/9, diese Werte stehen oft auf der Rückseite des DVD-Covers.
-vf crop=688:576:18:0
(Werte für die Bildbeschneidung müssen angepasst werden)
harddup
(Verbessern der Mux- und A/V-Synchronisationszuverlässigkeit)
-ovc x264 -x264encopts subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid:weight_b:pass=2:psnr:threads=0:bitrate=745
(bitrate
muss angepasst werden)
-ofps 25
(25 Bilder pro Sekunde)
-oac copy
(schleift die Audiospur aus Synchronisationsgründen mit durch)
-of rawvideo
(speichert nur die Videodaten)
Der Prozess der Videokodierung nimmt viel Zeit in Anspruch. Auf einem AMD Athlon64 3000+ schafft der erste Durchlauf ca. 16 und der zweite Durchlauf ca. 8 Bilder pro Sekunde. Es werden nur die reinen Videodaten gespeichert, da MEncoder derzeit noch nicht direkt in einen geeigneten Container wie MP4 oder Matroska speichern kann.
Dank Moritz Bunkus kann man die Zusammenführung der Dateien in einen Matroska-Container über eine grafische Benutzerschnittstelle namens MKVMerge erledigen. Man startet das Programm entweder aus einem Terminalfenster via
mmg
oder über das Anwendungsmenü "Multimedia -> MKV Dateien erstellen (mkvmerge GUI)". Als Quelldateien dienen die bisher erzeugten Dateien (entweder per Drag & Drop, oder über die Schaltfläche "Hinzufügen"):
Dateiname.264
oder Dateiname.mp4
(die Videodatei)
Dateiname.ac3
(die originale Audiodatei)
Dateiname.ogg
(optionale weitere Audiodateien)
Dateiname.idx
(die Untertitel-Index-Datei. Dateiname.sub
wird automatisch eingefügt)
In der Box "Tracks" können die eingefügten Spuren dann angeklickt und mit verschiedenen Einstellungen versehen werden. Die Möglichkeiten variieren je nach Spurtyp. Es ist ratsam, zumindest für die Audiospuren die Sprache unter "Language" auszuwählen. Die Untertitel sind sprachlich bereits eingeordnet und werden bei der Erzeugung der Matroska-Datei verlustfrei komprimiert.
Falls man oben beim Encodieren kein Pixelseitenverhältnis angegeben wurde, muss dies nun im MKV-Container nachgeholt werden. Dies geschieht über die Auswahl unter "Aspect ratio" (z. B. 4/3 oder 16/9). Bei der Wiedergabe der DVD oder der bereits gerippten VOB-Datei gibt MPlayer das korrekte Seitenverhältnis (z. B. Movie-Aspect is 1.33:1 - prescaling to correct movie aspect
) aus. Das Seitenverhältnis wäre in diesem Beispiel also 4/3=1.33.
Jetzt ist in der Box "Output filename" der Dateiname und Speicherort auszuwählen. Ohne Änderung wird Dateiname.mkv im aktuellen Verzeichnis erzeugt.
Ein Klick auf "Muxen starten" erzeugt die gewünschte Datei.
Diese Revision wurde am 3. Dezember 2015 13:35 von aasche erstellt.