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).
Folgende Pakete müssen 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
Allgemein muss eine DVD gelesen werden können. Hierfür wird beispielsweise libdvdcss2 benötigt. Hinweise auf der Wiki-Codec-Seite
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 auch /dev/dvd
, /dev/dvd0
und ab dem 2.6.28 Kernel oft auch: /dev/sr0
, 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 jedenfall mit
mplayer dvd://n
vergewissern, ob es die Richtige ist. Ansonsten manuell die Richtige suchen.
mplayer dvd://n -v -dumpstream -dumpfile Dateiname.vob
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)
Ggf. ist es nötig, das zu benutzende Gerät bei diesem Befehl mit anzugeben: z.B. -dvd-device /dev/sr0
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 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
Rippt den gewünschten Untertitel im VobSub-Format. 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 -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 nicht die AC3-Spur kopieren möchte, muss man sie zunächst wie folgt rippen
mplayer Dateiname.vob -ao pcm:fast:file=Dateiname.wav -vc null -aid 128 -vo null
-aid 128
(die erste Tonspur, 129
wäre die zweite, etc.)
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
-q5
Qualität ca. 160 kb/s (entspricht der Qualität, bei der man von "Transparenz" spricht. Die meisten Hörer können hierbei keinen Unterschied zum Original feststellen)
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.
Ab MKVMerge 2.0 ist dieser Schritt nicht notwendig. Man kann direkt die .264
-Datei öffnen.
Mit folgendem Befehl packt man die Videodaten in einen MP4-Container, mit dem MKVMerge im Gegensatz zu den Rohdaten umgehen kann
MP4Box -add Dateiname.264 Dateiname.mp4
Dank Moritz Bunkus kann man die Zusammenführung der Dateien in einen Matroska-Container über eine grafische Benutzerschnittstelle namens MKVMerge erledigen. Man startet entweder aus einer Konsole
mmg
oder über das GNOME-Menü "Anwendungen -> Unterhaltungsmedien -> MKV files creator"
In die Box "Input files" gehören die bisher erzeugten Dateien (entweder per Drag & Drop, oder über den Button "add")
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, wenn man allerdings der Anleitung gefolgt ist kann folgenden ignoriert 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 "Start muxing" erzeugt die gewünschte Datei.
Mit dvdbackup können 1:1 Kopien von DVDs über das Terminal angefertigt werden. Alternativ kann man den Hauptfilm, Titelzusammenstellungen und Einzeltitel sichern.
Folgendes Paket muss installiert [1] werden:
dvdbackup (universe, Lucid)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install dvdbackup
sudo aptitude install dvdbackup
Der Programmaufruf erfolgt über das Terminal [2]:
dvdbackup -M
Zusätzliche Parameter:
dvdbackup | |
Befehl | Beschreibung |
dvdbackup -M -i /dev/dvd -o ~/dvdbackup | Diese Aktion sichert die komplette DVD. |
dvdbackup -F -i /dev/dvd -o ~/dvdbackup | Sicherung des Hauptfilms. |
dvdbackup-t X -i /dev/dvd -o ~/dvdbackup | Sicherung des Kapitels X von DVD. |
dvdbackup -h | Zusätzliche Informationen aufrufen. |