DVD-Rippen und -Wandlung mit Linux

Diese Anleitung wurde zuletzt am 23. August 2002 geändert.

  1. Einführung
  2. Notwendige Software
    1. Ein Wort zu Codecs
    2. Allgemeine Libraries / Codecs
    3. MPlayer
    4. transcode
    5. RPMs erhalten
  3. Rippen der VOBs
    1. Interlaced Video
    2. ...Benutzung des Kommando-Zeilen-Interfaces
    3. ...Benutzen von dvd::rip
  4. Wandlung der DVD in eine AVI-Datei
    1. Seitenverhältnisse
    2. Benutzung von dvd::rip
      1. Schneiden und Zoomen
      2. Wahl der Kodierungs-Parameters
      3. Erstellen einer schnellen Vorschau
      4. Verhindern von Audio/Video Desynchronization
      5. Das Ganze ausführen
      6. Für fortgeschrittene Benutzer: transcode Kommandozeilen-Argumente
    3. Benutzung vonMEncoder
      1. Kodierung der Tonspur
      2. Erstellen einer Vorabansicht (Erster Durchgang)
      3. Erstellen einer Vorabansicht (zweiter Durchgang)
      4. Erstellen der endgültigen AVI-Datei (beide Durchgänge)
  5. Zusätzliche Tricks
    1. Reparieren einer nichtsynchronen Audio-Spur
    2. Zerteilen von AVIs
    3. Extrahieren des Tons aus VOBs/MPEGs/AVIs
    4. Benutzung separater Audio-Dateien
    5. Ein grafischer AVI-Editor: avidemux
  6. Links
    1. Libraries, codecs
    2. Media players
    3. Media encoders
    4. Other documentation
    5. Mailing lists
  7. Glossar
    1. CBR, VBR und ABR
    2. Global Motion Compensation (GMC)
    3. Letterboxing
    4. P/I/B-Frames, GOPs
    5. Quarter Pixel (QP)
  8. Verzeichnis der änderungen (Changelog)
  9. Infos über diese Anleitung

1. Einführung

Da hast Du nun also die schöne neue DVD gekauft. Du findest sie absolut Klasse und möchtest sicher sein, dass, was immer auch passiert, Du auf jeden Fall eine Kopie dieses Films besitzt. Aber, zum Kuckuck, wie bekommst Du ihn von der großen DVD auf so eine kleine CD? Und wohlgemerkt in guter Qualität? Lies einfach weiter.

WARNUNG! Diese Anleitung ist nichts für das mutlose Gemüt. Sie umfasst Dinge wie das Kompilieren von Code, Installieren von Software und die Benutzung der Kommandozeile. Wenn Du nicht weißt, wie configure; make; make install auszuführen ist, dann lese zunächst andere Dokumentationen und lerne es. Wenn Du das nicht willst, dann installiere Windows und benutze eines jener guten DVD-Ripping-Programme, die es dafür gibt. Ich möchte keinen Flame-Krieg "Linux gegen Windows". Es ist einfach so, dass dieser Vorgang unter Linux etwas schwieriger ist.

Du bist immer noch dabei? Wunderbar! Du bist dabei, eine Reise durch ein wunderschönes Land anzutreten...

Zurück zum Inhaltsverzeichnis


2. Notwendige Software

Zunächst möchte ich Dir einige Werkzeuge vorstellen, die Du benutzen wirst: Ich werde Dir zwei Methoden zur DVD-Wandlung zeigen - eine unter Verwendung von MEncoder und eine unter Verwendung von transcode. Nichtsdestotrotz benötigst du für beide Metoden einige Dateien.

2.1. Ein Wort zu Codecs

In einer idealen Welt würde es nur ein Codec geben - das beste. Aber diese Welt ist weit vom Ideal entfernt. Das Ergebnis ist, dass es eine große Anzahl von Video- und Audio-Codecs zur Auswahl gibt. Zunächst werde ich die verschiedenen Arten von Codecs erklären:

Heute erscheinen die meisten Codecs mit einer speziellen Linux-Version (wie z.B. XviD, DivX 4/5 und andere.

Hier ist eine Liste der unterstützten Video-Codecs

Die Anleitung richtet ihr Hauptaugenmerk auf zwei Codecs: XviD und lavc. Die Gründe dafür sind, dass beide eine exzellente Qualität bieten, beide schnell sind und Du nur einen MPEG4-kompatiblen Decoder (wie DivX 5 oder XviD) auf einem Windowssystem zum Abspielen brauchst. Die Wiedergabe unter Linux ist überhaupt kein Problem - MPlayer oder Xine spielen fröhlich DivX 4/5, XviD und lavc-kodierte Filme.

Wieder eine Liste, dieses mal für Audio-Codecs:

Ich hoffe, dies hat die Dinge ein bischen geklärt.

2.2. Allgemeine Libraries / Codecs

Ich werde in diesem Kapitel nicht all zu sehr ins Detail gehen. Es gibt in jedem Paket weitere Dokumentation zur Installation. Siehe dort, falls Du Probleme haben solltest. Beachte, dass MPlayer ziemlich umfangreiche Anforderungen bezüglich der Versionen von gcc, binuntils und anderen zentralen System-Komponenten hat. Siehe
Die MPlayer-Installations-Dokumentation (in Englisch).

Beachte: Prüfe vor dem Download der Software, ob Deine Distribution bereits diese Software enthält. Ich verwende Debian Woody (testing) und habe festgestellt, dass sehr viel Software bereits als fertiges Paket vorhanden ist.

2.3. MPlayer

Du brauchst MPlayer. Es ist egal, ob Du später MEncoder oder transcode verwenden willst - Du brauchst in jedem Fall MPlayer. Also besorge MPlayer von
http://www.mplayerhq.hu/. Ich bevorzuge die CVS-Version, da sie häufig Features besitzt, die dem offiziellen Release fehlen. Tatsächlich basiert diese Anleitung auf Features seit wenigen Tagen in der CVS-Version existieren (heute ist der 30. April 2002). Tu einfach das Gleiche - sei tapfer und nimm die CVS-Version.

Wenn Du MEncoder zum Kodieren verwenden möchtest, empfehle ich außerdem die Verwendung von libavcodec. Bei Verwendung der CVS-Version von MPlayer musst Du libavcode herunterladen, die Release-Version von MPlayer beinhaltet bereits libavcodec. Die Anweisungen sind aus der MPlayer-Dokumentation entnommen:

Eine Bemerkung zum Kompilieren: Stelle sicher, nicht XviD support einzubinden. Stattdessen binde die Unterstützung für den libavcodec ein. Installations-Anweisungen stehen in der MPlayer-Dokumentation zur Verfügung. Ja, Du hast richtig gelesen: Kompiliere transcode mit XviD und MPlayer ohne XviD aber mit libavcodec. Der Grund dafür ist, dass MPlayer nicht für beide Codecs zur gleichen Zeit Unterstützung enthalten kann, da beide Codecs Variablen mit dem gleichen Namen verwenden.

2.4. transcode

Besorge transcode von der Homepage. Stelle sicher, dass es mit XviD-Unterstützung und Unterstützung für MPlayer's post processing-Funnktionen compiliert wird. Nochmals: Ich empfehle die Verwendung der CVS-Version.

Außerdem willst Du dvd::rip herunterladen, eine exzellente, Gtk+ basierte Benutzerobefläche für transcode. Du bekommst sie hier. Installations-Anweisungen sind enthalten.

2.5. RPMs erhalten

Ich kenne zumindest zwei Adressen, an denen du einige RPMs für die oben erwähnte Software erhälst.

Zurück zum Inhaltsverzeichnis


3. Rippen der VOBs

Dieser Teil ist ziemlich einfach. Alles was Du brauchst ist etwas freier Speicherplatz (eigentlich viel freien Speicherplatz). In Abhängigkeit davon, was Du wandeln willst, brauchst Du etwa 10GB freien Speicher. Solltest Du den nicht haben, investiere etwas Geld in ein neues Laufwerk, sie sind wirklich günstig zur Zeit (ca. 100 € für ein 80GB-Laufwerk).

Bevor Du fortsetzt, mache Dir Gedanken über den Regional-Code. Alle heute erhältlichen Laufwerke haben den sogenannten RPC-mode-2-Schutz. Das bedeutet, dass Du nur fünf mal den Regional-Code ändern kannst, bevor er gesperrt wird. Du erhältst Informationen über das Entfernen des Regional-Codes Deines Laufwerkes bei Digital Digest. Warum also erwähne ich dies? Die Ripping-Methoden, die hier erläutert werden, beruhen auf einer korrekten Wahl des Regional-Codes (lies: der gleiche Code, den auch die eingelegte DVD beinhaltet) oder gar keinen Regional-Code. Alle diesbezüglichen Fehlermeldungen beim Rippen sind eher kryptisch, und oftmals ist es nicht sehr klar, dass es sich um ein Regional-Code-Problem handelt. Behalte dies also im Hinterkopf.

Teste zunächst die DVD. Starte MPlayer und schau Dir den ersten Titel an: mplayer -dvd 1. Gefällt es Dir? Cool. Stelle fest, ob das Video interlaced ist oder nicht (siehe unten). Schließe den MPlayer.

3.1. Interlaced Video

Was Du auf einem Fernseher siehst, ist nicht 25 Bilder pro Sekunde. In Wirklichkeit siehst Du 50 Halb-Bilder pro Sekunde. Ein Bild enthält die ungeraden Zeilen, ein Bild die geraden Zeilen. Auf diese Art und Weise siehst Du 25 Bilder pro Sekunde (frames per second=fps). Das Problem ist, das diese Halb-Bilder zu unterschiedlichen Zeiten aufgenommen sind. Wenn Du schnelle horizontale Bewegung in Deinem Film hast, wirst Du ein Objekt oder eine Person in den ungeraden Zeilen an einer Position und in den geraden Zeilen an einer anderen Position sehen. Das ist für das endgültige Video nicht erwünscht. Schau Dir dieses "interlaced" Bild an, es stammt von meiner Ally McBeal DVD. Mit den geeigneten Filtern kannst Du den diesen Interlacing-Effekt abstellen (genannt de-interlacing... was für eine überraschung ;)) Hier ist das gleiche Bild mit aktiviertem de-interlacing.

Da Du nun eine Vorstellung davon besitzt, wie ein interlaced-Bild aussieht, solltest Du in der Lage sein, selbst zu entscheiden, ob Deine DVD Dateien mit oder ohne Interlacing enthält.

Bis zum Ende dieser Anleitung nehme ich folgendes an:

Bitte ersetze diese Pfade mit Pfaden, die zu Deinem System passen.

Es gibt viele Wege, die VOBs zu rippen. Ich werde zwei vorstellen: Benutzen des Kommandozeilen-Werkzeugs (vobcopy) und die Benutzung der transcode-GUI dvd::rip. Du musst nicht beides vornehmen :-)

3.2. ...Benutzung des Kommando-Zeilen-Interfaces

Starte vobcopy. Es wird automagisch den Inhalt der DVD auf Deine Festplatte kopieren.
  • Als erstes binde Dein DVD ein: mount /dvd
  • Dann lass vobcopy seine Arbeit tun: vobcopy -i /dvd -m
Dies wird die VOBs von der DVD kopieren und sie in das aktuelle Verzeichnis schreiben (was Du z.B. mit -o /space ändern kannst). Die Dateinamen werden nach dem DVD-Titel benannt (z.B. habe ich ALLY_MCBEAL_DISC21-1.vob, ALLY_MCBEAL_DISC21-2.vob etc.). Die Option -m veranlasst vobcopy, die komplette DVD zu kopieren, inklusive der .IFO-Datein. Dies ist nützlich, da sowohl MPlayer/MEncoder als auch transcode die kopierten Dateien genauso wie eine echte DVD behandeln können. Das dauert seine Zeit. Sei einfach geduldig.

Bemerkung des Autors (Robos): vobcopy hat einige Probleme beim Folgen von Angles. Möglicherweise erhälsts Du doppelte Szenen z.B. in "The Matrix". Ich arbeite daran.

Noch eine Bemerkung von Robos: Es gibt inzwischen ein neues Programm namens dvdbackup , das ebenfalls DVDs kopieren kann.

3.3. ...Benutzen von dvd::rip

dvd::rip kann fast das gleiche für Dich tun.
Starte dvd::rip durch Eingabe von dvdrip. Du siehst dann das Haupt-Fenster. Wähle Edit / Preferences und dvd::rip zeigt Dir den
Voreinstellungen-Dialog . Hier musst Du Deine Pfadangaben eingeben. Das erste ist der Pfad zum DVD-Gerät (device) und nicht zum mount point. Häufig ist dies /dev/dvd, welches ein symbolischer Link zu dem tatsächlichen Laufwerk sein kann, z.B. /dev/hdc.

Schliesse den Dialog. Nun starte ein neues Projekt (File / New Project). Es beginnt mit der Speicher-Tabelle. Gib wieder die korrekten Pfade ein. Beachte wie die anderen Namensfelder sich ändern, wenn Du den Projekt-Titel änderst.

Wechsel zur Rip Title tab und klicke auf den Read DVD Table of Contents (lies DVD-Inhaltsverzeichnis)-Knopf. Nach ein oder zwei Sekunden wird die Liste darunter mit Titeln, die auf der DVD gespeichert sind, gefüllt, Wähle nun einfach die Titel, die Du rippen möchtest (Du kannst mehrere Titel durch Drücken von Strg und klicken auf die Titel auswählen) Wähle Sprache und Angle. Lasse Specify Chapter Mode auf No (Nein). Letzter Schritt: Drücke Rip selected Title(s)/Chapter(s). Wiederum: Sei geduldig, trink etwas Milch, habe eine nette Unterhaltung mit Deiner Freundin.

Der Rest von dvd::rip wird später in Kapitel 4 behandelt.

Zurück zum Inhaltsverzeichnis


4. Wandlung der DVD in eine AVI-Datei

Hier hast Du die Wahl zwischen zwei Möglihckeiten - entweder transcode oder MEncoder. Beide haben Pro und Contras. Hier ist eine kurze Liste, die zumindest für die CVS-Versionen vom 28. April 2002 zutrifft.

4.1. Seitenverhältnisse

Bevor wir anfangen, möchte ich Dich in die meist gebräuchlichen Seitenverhältnisse, die Dir begegnen könnten, einführen. DVDs sind immer kodiert als 720x576 (5:4), obgleich das Bild beim Abspielen skaliert wird. übliche Video-Formate sind 4:3 = 1.33 für TV, 16:9 = 1.78 für normale Kinofilme und 2.35:1 für Cinemascope.

Hier eine Liste der üblichen Szenarien:

Keine Sorge, falls Du das nicht auf Anhieb verstehst. Schau dir dvd::rip's clipping und scaling Optionen für einen eher intuitiven überblick an.

4.2. Benutzung von dvd::rip

Die Benutzung von dvd::rip ist mit Abstand die beste und einfachste Methode Dein AVI-File zu erstellen. Wie bereits zuvor erwähnt, beruht es stark auf transcode, dass die eigentliche Aufgabe erledigt.

Nach dem Start von dvd::rip ripst Du die Titel, die Du wandeln möchtest auf Deine Festplatte. Siehe Kapitel 3 für eine detaillierte Beschreibung.

4.2.1. Schneiden und Zoomen

Nun wirf einen Blick auf die Clip & Zoom Tabelle. Hier kannst Du alle Parameter bezüglich Bildgröße und Ausschnitt einstellen. Zunächst hole ein Bild zum damit Arbeiten: Gib einfach eine Frame-Zahl (wie z.B. 200) in die Grab Preview Frame Eingabezeile und drücke auf Grab Frame from ripped VOB. Nach wenigen Sekunden zeigen die 3 Anzeigen darunter den angeforderten Frame.

transcode verwendet drei Schritte um das Bild zu seiner endgültigen Größe zu bringen: Erst schneidet es das nichtskalierte Bild, dann ändert es die Größe und schliessliche schneidet es nochmals. Jeder dieser Schritte kann ausgelassen werden; durch Auswahl von 0 für Clipping und durch die Original-Breite und Höhe für das ändern der Größe. Jedes Fenster zeigt das Ergebnis eines dieser drei Schritte. Wenn Du sehen willst, wie groß die Bilder tatsächlich sind, klicke einfach auf eines von ihnen und ein PopUp-Fenster öffnet sich mit dem Ergebnis.

Möglicherweise hast Du die drop-down-listbox unter den drei Vorschau-Fenstern bemerkt. dvd::rip biete eine große Zahl an Voreinstellungen zum Arbeiten an. Die einfache Auswahl eine dieser Voreinstellungen gibt Dir eine gute Startposition. Alle Voreinstellungen die 'autoadjust...' heißen, versuchen die korrekte Schnitt-Region automatisch zu ermitteln. Nach der Auswahl einer Voreinstellung drücke den Apply Preset Values Knopf. Nun verstelle die Werte bis du mit dem Ergebnis zufrieden bist.

Die big frame, medium frame und small frame Teile beziehen sich auf die endgültige Bildgröße, die erreicht werden soll. big erhält fast die volle DVD-Auflösung, medium liegt irgendwo zwischen 500 und 600 für die Breite und small liegt irgendwo um 350.

Eine Anmerkung zum Verändern der Größe: Use fast resizing (benutze schnelle Größenänderung) hat großen Einfuß auf die Bildverarbeitung aber erfordert, dass die Ziel- Breite und Höhe durch 32 teilbar ist. Keine Sorge dvd::rip wird Dir sagen, wenn Du kein "Fast Resizing" nutzen kannst. Beachte: Wenngleich es möglich ist, tatsächlich die Bilder zu vergrößern, rater ich stark davon ab. Es gibt mehrere Nachteile: Zum einen braucht der Encoder viel mehr Bits um die gleiche Qualität zu erreichen, die Du auch erreichst, wenn Du ein kleineres Bild kodierst und dieses dann beim Abspielen vergrößerst, und zudem kann es auch zu Bildverzerrungen kommen (Peter Schuller berichtete mir von einem solchen Fall). Skaliere immer nach unten (=kleiner).

4.2.2. Wahl der Kodierungs-Parameters

Wir sind fertig mit dieser Tabelle. öffne die
Transcode Tabelle. Entscheide zuerst welches Video-Codec Du verwenden möchtest. Wenn Du DivX5 für Linux installiert hast, kannst Du es verwenden, aber ich würde die Verwendung von XviD empfehlen. Wenn Du die CVS-Version von XviD heruntergeladen hast, dann ist dazu die Option xvidcvs (offensichtlich) zu wählen. Sollte transcode später mit einigen obskuren Fehlermeldungen abbrechen, kannst Du xvid ausprobieren.

Erinnerst Du Dich, dass ich Dich bat, zu prüfen, ob das Video interlaced ist? Jetzt brauchen wir diese Information. Falls Dein Video nicht interlaced ist, lasse einfach deinterlacing und antialias auf off. Andernfalls wähle 3 - Zoom To Full Frame. Dies ist der langsamste aber am besten aussehende Deinterlacer. Hier ist nochmal das Interlaced Bild-Beispiel aus Ally McBeal. Du kannst das Ergebnis aus 3 - Zoom To Full Frame unter first deinterlaced picture betrachten.

Ein weiterer De-Interlacing-Filter steht durch ein externes Plugin zur Verfügung (keine Sorge, Du hast es bereits beim Installieren von transcode selbst mitinstalliert). Schau nach unten recht. Dort ist ein Eingabefeld mit der Bezeichnung transcode options. Alle hier eingegebenen Optionen werden einfach an transcode weitergegeben. Das können wir für das De-Interlacing nutzen. Hier ist das gleiche Bild wie oben deinterlaced mit einem anderen Deinterlacer. Dieser Deinterlacer ist schneller als die 3 - Zoom To Full Frame-Option. Wenn Du diesen Deinterlacer verwenden willst, dann setze deinterlace auf off und gebe -J dilyuvmmx in die Eingabezeile ein.

dvd::rip versucht die Bildrate automatisch zu ermitteln. Falls dies fehlschlägt kannst Du es hier korrigieren. Use YUV internal sollte immer auf yes stehen, es sei denn der Ausgabe-Codec unterstützt keine YUV-Modes. XviD unterstützt aber YUV. Es angeschaltet zu lassen gibt einen großen Geschwindigkeitsschub. DivX multipass sollte auch auf yes stehen, es sei denn, Du möchtest lediglich eine Vorschau. Für das endgültige AVI-File solltest Du immer 2-Pass-Kodierung verwenden. Auch wenn diese Option DivX multipass bezeichnet ist, arbeitet sie auch prima mit XviD

Die Audio-Optionen sollten selbsterkärend sein. Du wählst entweder die Tonspur in MP3 umzukodieren (unter Verwendung der angegebenen Bitrate) oder die Original AC3-Tonspur ohne Veränderung beizubehalten. AC3-Audio stellt Surround-Sound zur Vefügung und all diese Vorteile, aber benötigt mehr Platz als MP3-Sound. Es ist wirklich Deine Wahl. Wenn Du MP3 wählst, stelle sicher, dass die MP3 Quality auf 2 steht. Gemäßt der lame-Dokumentation (lame wird zur MP3-Kompression verwendet) höhere Qualitätseinstellungen wie 1 oder 0 - beste aber langsamste sind viel langsamer aber erzeugen keine bezeichnend bessere Qualität. Volume rescale erlaubt die Normalisierung des Tons, die kein separates (externes) Programm benötigt. dvd::rip scant automagisch die Tonspur und stellt einen rescale-Wert zur Verfügung

Oben rechts befindet sich die Bitraten-Option. Du kannst einfach die Rip-Größe durch Wahl der Anzahl und Größe der CDs, die Du verwenden willst einstellen. Verändern der Target Size (Zielgröße) oder der Video Bitrate funktioniert auch. dvd::rip aktualisiert automatisch die errechneten Werte darunter, sodass es einfach ist, die optimale Bitrate zu ermitteln.

4.2.3. Erstellen einer schnellen Vorschau

In den meisten Fällen solltest Du dvd::rip eine kleine Vorabansicht erstellen lassen. Das tust Du duch Angabe eine Frame Range. Ich verwende meist ein 30 Sekunden-Sample, das entspricht 750 Bildern bei 25 fps (<Anzahl der Sekunden> * <Bildrate> = <Anzahl der zu kodierenden Frames>) und starte irgendwo im Film (so bei 200 oder 300 frames). Gute Werte könnten z.B. 200 - 950 sein. Du solltest außerdem transcode einen hohen nice-Wert (was einer niedrigen Prozess-Priorität entspricht) geben, sodass es nur freie CPU-Zeit verwendet. Wenn Du wirklich dein Preview jetzt und sofort haben möchtest, kannst Du auch vorübergehend DivX Multipass abschalten. Vergiss nicht, es später wieder einzuschalten!

Wenn Du fertig bist klicke auf Transcode. Nach einigen Minuten wird Dein AVI/MPEG fertig sein. Nun schau es Dir an (z.B. mit mplayer my-new-file.avi) Dies ist ein guter Moment um zu sehen, ob deinterlacing wie erwartet arbeitet und um zu prüfen ob Audio und Video synchron laufen. Wenn ja, bist Du bereit. Andernfalls lies weiter:

4.2.4. Verhindern von Audio/Video Desynchronization

Wenn Deine Audio- und Videospur bei der Vorschau nicht synchron zueinander abgespielt werden (oder auch beim Abspielen der DVD selbst), kannst Du transcode einen Frame-Offset für die A/V-Synchronisation geben. Das tust Du durch Angabe des Parameters -D nr in der transcode options Eingabezeile in der TranscodeTabelle. nr ist die Anzahl der Frames die die Audiospur verzögert ist. Diese Zahl kann auch negativ sein. Ein Frame ist 40ms lang bei 25 fps. Im Allgemeinen ist die Frame-Länge (1000 / fps) ms lang. Für meine Ally McBeal-DVD benötige ich eine Korrektur von -2, was -80ms entspricht: -D -2. Nun erstelle erneut eine Vorschau (die anderen Parameter sollten die gleichen bleiben) und prüfe die Tonspur erneut. Falls nötig wiederhole diesen Schritt bis Du mit dem Ergebnis zufrieden bist.

4.2.5. Das Ganze ausführen

Wenn die Vorschau gut ist, kannst Du mit der Wandlung beginnen. Stelle sicher, dass DivX Multipass wieder eingeschaltet ist, falls Du es für die Vorschau abgestellt hast. Klicke dann entweder auf Transcode oder auf Transcode + Split falls Du Deine Dateien automagisch nach den Angaben unter Video Bitrate Calculation geteilt haben möchtest.

Jetzt ist eine gute Zeit für soziale Kontakte :-)

4.2.6. Für fortgeschrittene Benutzer: transcode Kommandozeilen-Argumente

Dieses Kapitel erklärt die transcode Kommandozeilen-Optionen, die von dvd::rip genutzt werden. Dies ist nicht entscheidend für den Wandlungs-Prozess, Du kannst diesen Teil also auch überspringen. Ich schreibe ihn für diejenigen, die einen tieferen Einblick haben möchten, was dvd::rip und transcode tun.

In dvd::rip drücke Strg-t, um die Kommandos, die dvd::rip ausführt, zu sehen. Im Moment wollen wir uns auf die letzten Kommandos konzentrieren, Transcode command. Hier ein Beispiel für meine Star Trek: The Next Generation DVD ohne die ganzen mkdir und cd Kommandos:

  1. transcode -i /space/tng-biggoodbye/vob/004 -w 4357,250,100 -a 1 -b 128,0,0 -s 3.311 -V -f 25 -B 12,10,8 -R 1 -x vob,null -o /dev/null -y xvidcvs,null
  2. transcode -i /space/tng-biggoodbye/vob/004 -w 4357,250,100 -a 1 -b 128,0,0 -s 3.311 -V -f 25 -B 12,10,8 -R 2 -x vob -o /space/tng-biggoodbye/avi/004/tng-biggoodbye-004.avi -y xvidcvs
Ein Blick auf das erste Kommando und seine Parameter:
Die zweite Kommandozeile weicht nicht so sehr davon ab. Sie überspringt alle Optionen die die Ausgabe abschalten würden (wie -o real-file-name und -y xvidcvs). Für eine vollständige Kommandoreferenz siehe die transcode und lameman pages.

Eine letzte Anmerkung: Du wirst sehen, dass transcode seit Version 0.6.0pre6-20020529 Unterstützung für das libavcodec üver ein von mir geschriebenes noch expermentelles Export-Modul enthält. Du kannst dies aktivieren durch Verwendung von -y ffmpeg4 (zur Erinnerung: libavcodec ist Teil von ffmpeg) anstelle des vorherigen Codecs. dvd::rip unterstützt dies zur Zeit noch nicht (lies: der Codec ist nicht in der Liste der auswählbaren Codecs).

4.3. Benutzung vonMEncoder

Wie zuvor erwähnt, gibt es im Moment noch keine GUI für den MEncoder. Daher werde ich keine Screenshots zeigen und Du musst alles von Hand machen. Es ist ein Prozess der "3-Pass-Kodierung" genannt wird.

4.3.1. Kodierung der Tonspur

Der erste Schritt ist die Kodierung der Tonspur. Stelle sicher, dass du weisst, welche Sprache Du verwenden willst - Du benötigst entweder die Audio ID (d.h. 128 für den ersten Stream, 129 für den zweiten, usw.) oder den zwei-Buchstaben-Länder-Code (wie en für Englisch or de für Deutsch). Du kannst diese Codes durch Ausführen von MPlayer im Verbose-Mode ermitteln: mplayer -dvd 1 -v. Das Programm sollte eine Menge Zeilen ausgeben. Suche nach Zeilen die diesen ähneln: [open] audio stream: 0 audio format: ac3 language: en aid: 128
[open] audio stream: 1 audio format: ac3 language: de aid: 129
[open] audio stream: 2 audio format: ac3 language: es aid: 130

Hier habe ich drei Audio-Streams: Englisch, Deutsch, Spanisch und ihre IDs

Rufe nun MEncoder auf, um die Tonspur für dich zu kodieren
nice -+19 cat /space/*vob | nice-+19 mencoder -ovc frameno -o frameno.avi -oac mp3lame -lameopts abr:br=128 -alang de -
Hier ist eine Erklärung der verwendeten Kommandozeilen-Argumente:

Warte eine Weile und Du hast Deine Tonspur. MEncoder gibt auch einige Vorschläge für die Video-Bitrate an:
Recommended video bitrate for 650MB CD: 1845
Recommended video bitrate for 700MB CD: 1992
Recommended video bitrate for 800MB CD: 2287

Wie Du erkennst, sind diese Werte ziemlich hoch - aber das ist darauf zurückzuführen, dass eine Ally-McBeal-Folge nur 41 Minuten lang ist. Also würde ich zwei Episoden pro CD erzeugen und dem Video eine Bitrate von etwa 1000 geben.

4.3.2. Erstellen einer Vorabansicht (Erster Durchgang)

Nun ist es Zeit sich zu entscheiden, welcher Video-Codec verwendet werden soll. Ich nehme an, dass eine AVI-Datei mit einem der verschiedenen DivX-Encoder erstellt werden soll. MEncoder unterstützt DivX 4 oder DivX 5 (das gilt auch für Windows - Du hast entweder v4 oder v5 installiert) genauso wie XviD oder lavc. Obwohl die meisten von Euch nichts von libavcodec oder dem ffmpeg-projekt zuvor gehört haben, sei Dir angeraten dass lavc den Codecs DivX 4 or 5 weit überlegen ist und mindestens so gut ist wie XviD. Daher will ich nur Beispiele für lavc zur Verfügung stellen, zumal Du dafür keine speziellen Codecs zum späteren Abspielen benötigst. MPlayer spielt sie (natürlich) prima ab, und für Windows benötigst Du einfach DivX 5 (die kostenlose Ausgabe ist absolut ausreichend). Auf geht's.

Wir wollen nun die Kommandozeilen-Optionen zusammenstellen:

Füge die gesamte Kommandozeile zusammen:
nice -+19 mencoder -nosound -o /dev/null -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1 -vop scale=640:480 -npp lb -ss 0:20 -endpos 0:30 /space/first.vob

4.3.3. Erstellen einer Vorabansicht (zweiter Durchgang)

Für dieses Schritt können wir den größten Teil der vorhergehenden Kommandozeile beibehalten. Natürlich ändern wir vpass=1 in vpass=2 um dem Encoder mitzuteilen, dass es diesmal der zweite Durchgang ist. Natürlich sollten wir diesmal die endgültige Ausgabe speichern und ersetzen daher -o /dev/null mit etwas Brauchbarem, z.B. -o ally-preview.avi.

Hier die Kommandozeile:
nice -+19 mencoder -oac copy -o ally-preview.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2 -vop scale=640:480 -npp lb -ss 0:20 -endpos 0:30 /space/first.vob
Nachdem MEncoder fertig ist, sehen wir uns die Vorabansicht an. Berichtige, sofern nötig, die Einstellungen. Wiederhole die Erstellung der Vorabansicht, bis Du zufrieden damit bist.

4.3.4. Erstellen der endgültigen AVI-Datei (beide Durchgänge)

Die Aufrufe der endgültigen Optionen lassen einfach die Optionen -ss und -endpos weg. Unglücklicherweise kann MEncoder nicht mehrere Eingabe-Dateien von der Kommandozeile lesen. Daher verwenden wir das cat-Kommando. Gib einfach
cat /space/*vob | nice -+19 mencoder -oac copy -o /dev/null -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=1:vqmin=1:vqmax=31 -vop scale=640:480 -npp lb -
cat /space/*vob | nice -+19 mencoder -oac copy -o ally.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1000:vhq:vpass=2:vqmin=1:vqmax=31 -vop scale=640:480 -npp lb -

ein.
Beachte, dass -ss scheinbar nicht zusammen mit der cat *vob | mencoder...-Variante funktioniert. Also muß für die Vorschau einfach die erste VOB-Datei als letztes Argument angegeben werden (siehe oben)

Nun geh und hol Dir ein Bier und ein gutes Buch.

Zurück zum Inhaltsverzeichnis


Zurück zum Inhaltsverzeichnis


6. Zusätzliche Tricks

Es gibt einige weiter Themen bezüglich der Video-Produktion.

6.1. Reparieren einer nichtsynchronen Audio-Spur

Dies funktioniert nicht mit AVIs die VBR/ABR MP3s verwenden. Dieser Schritt benutzt avisync, welches Teil des transcode Pakets ist.

avisync ist leicht zu benutzen: gib einfach eine Eingabe-Datei (-i name.avi), eine Ausgabe-Datei (-o newname.avi) und den Sync-Offset in Frames (-n count) an. Aus der avisync-Hilfe: count>0: Audio startet mit frame 'count'. count<0: stelle 'count' audio frames voran. Ein Beispiel:
avisync -i ally-not-synched.avi -o ally-synched.avi -n -2

6.2. Zerteilen von AVIs

Dies funktioniert nicht mit AVIs, die VBR/ABR MP3s benutzen. Dieser Schritt benutzt avisplit, welches Teil des transcode-Paketes ist. Benutze es nur mit AVIs die von transcode erzeugt wurden.

avisplit ist leicht zu benutzen: Gib einfach eine Eingabe-Datei (-i name.avi) und an welcher Stelle die Datei aufgeteilt werden soll. Du kannst die Datei nach eine festen Größe spalten: (-s Größe_in_Megabyte), nach einer Anzahl von Frames (-f f1-f2) oder nach eine Anzahl von Sekunden -t s1-s2). Ein Beispiel:
avisplit -i ally-big-file.avi -o ally -s 100
Dies erzeugt Dateien mit den Namen ally-0000.avi, ally-0001.avi etc., die jeweils maximal eine Größe von 100 MByte haben.

6.3. Extrahieren des Tons aus VOBs/MPEGs/AVIs

MPlayer kann leicht dazu verwendet werden, den Ton zu extrahieren. Die Option -vo null veranlasst MPlayer, die Videospur nicht auszugeben. Ich liste nicht alle möglichen Optionen auf. Im Allgemeinen verwende -dumpaudio -dumpfile newaudio.extension wenn du die tonspur ohne Bearbeitung extrahieren willst und -ao pcm -aofile newaudio.wav Wenn Du die Datei als .WAV benötigst.

6.4. Benutzung separater Audio-Dateien

Manchmal willst Du eine andere Ton-Datei zusammen mit Deinem Video abspielen. MPlayer macht dies ziemlich einfach: mplayer -audiofile anotherlang.mp3 myvideo.avi spielt das Video aus myvideo.avi und den Ton aus anotherlang.mp3. Eine Menge Windows media player unterstützen ebenfalls externe Audio-Dateien. Auf diese Art und Weise kannst Du mehrere Sprach-Versionen als separate Audio-Dateien verfügbar machen. Eine häufig verwendete Kombination ist die Verwendung des englischen Audio-Tracks im AVI-File und die zusätzliche Erzeugung anderer Audio-Tracks als separate Files.

6.5. Ein grafischer AVI-Editor: avidemux

Wenn Du schon einmal unter Windows Videobearbeitung gemacht hast, dann kennst Du wahrscheinlich auch den exzellente OpenSource-Videoeditor VirtualDub. Ein OpenSource-Werkzeug für Linux, das darauf abzielt, dem Benutzer eine ähnliche Funktionsvielfalt wie VirtualDub zu bieten, ist avidemux. Damit kannst du ganz einfach bestimmte Teile deines Films herausschneiden, verschiedene Filter anwenden, Filme erneut enkodieren und noch eine ganze menge mehr machen. Ich empfehle Dir, dass Du es Dir einfach einmal anschaust, auch wenn die Benutzung der Kommandozeile für Dich so natürlich ist wie sie es für mich ist.

Zurück zum Inhaltsverzeichnis


7 Links

7.1. Libraries, codecs

7.2. Media players

7.3. Media encoders

7.4. Other documentation

Sowohl MPlayer als auch transcode bringen normale Unix-man-pages mit: man mplayer, man mencoder und man transcode zeigen diese Seiten. Zusätzlich liefert die Angabe von -h oder --help als einzigem Parameter zu einem dieser Programme eine Liste der Kommandozeilenoptionen (die allerdings evtl. nicht komplett ist).

7.5. Mailing lists

Ich empfehle sehr, dass Du die Mailing-Listen nach Informationen durchsuchst/durchstöberst und sie Dir selbst abonnierst. Eine Menge Informationen sind dort verfügbar, die nicht in der Haupt-Dokumentation oder der Kommandozeilen-Referenz auftauchen.

Zurück zum Inhaltsverzeichnis


8. Glossar

8.1. CBR, VBR und ABR

Diese drei Abkürzungen stehen für Constant Bit Rate, Variable Bit Rate und Average (=durchschnittliche) Bit Rate.

Mit CBR verwendet der Encoder die gleiche Anzahl von Bits in jedem Frame, unabhängig davon, wieviele Bits er tatsächlich bräuchte. Dies hat den Nachteil, das z.B. ein komplett schwarzes Bild oder absolute Stille in einem Audio-Frame eine Menge Bits veschwendet, während Bilder oder Audio-Frames mit einer Menge Elementen von diesen Bits profitieren könnten.

VBR nimmt nun soviele Bits, wie tatsächlich gebraucht werden. So bekommt ein komplett schwarzes Bild nur einige wenige Bits und ein komplexes Bild bekommt soviele Bits wie es benötigt. Während dies die beste Qualität erzeugt, ist die endgültige Dateigröße nicht mehr vorhersagbar.

Das ist die Stelle, an der ABR in Spiel kommt. Du gibst eine durchschnittliche Bitrate an,die Du erreichen möchtest, und der Encoder verteilt die Bits, die ihm zur Verfügung stehen. So spart der Encoder bei schwarzen Bildern Bits ein, die dann komplexeren Bildern zur Verfügung stehen. Es ist somit ein Kompromiss zwischen Qualität und Vorhersagbarkeit der Dateilänge.

8.2. Global Motion Compensation (GMC)

Global motion compensation (GMC) hilft beim Zoomen und Schwenken der Kamera, wenn sich Objekte nur in ihrer Größe oder Position verändern, ihren Typ dabei aber beibehalten. Die Aktivierung von GMC ist für Naturfilme oder Landschafts-Dokumentationen zu empfehlen, die komprimiert werden sollen.

8.3. Letterboxing

Vielleicht ist Dir aufgefallen, dass Videos manchmal vor dem Kodieren mit schwarzen Balken eingerahmt sind. Dieser Vorgang nennt sich letterboxing. Er kann bei einigen Abspielern dabei helfen, das korrekte Seitenverhältnis zu erhalten. Andere nutzen die schwarzen Balken zum Anzeigen von Untertiteln. Der Nachteil ist, dass diese schwarzen Balken das Bild vergrößern und daher mehr Bandbreite zum Kodieren benötigen, obgleich komplett schwarze Teile nicht sehr viel Platz beanspruchen - aber gerade die Übergänge zwischen dem Bild und den schwarzen Streifen brauchen sehr viele Bits.

8.4. P/I/B-Frames, GOPs

Dies stammt aus
doom9's Forum:

Dies ist eine kurze Erklärung einer MPEG "GOP", oder "Group of Pictures".

GOP:

I-frame: P-frame: B-frame:

Für jeden Macroblock in einem P-Frame entscheidet der Encoder, ob er diesen Block bereits aus dem vorhergeheneden Frame kennt, oder ob es sich um einen komplett neuen Frame handelt. Im ersten Fall codiert er nur die Unterschiede (INTER mode). Im letzen Fall codiert er den gesamten Macroblock (INTRA mode).

Die Situation für B-Frames ist wie die folgende: "Ich kennen diesen Block nicht" (INTRA mode), "Ich kenne diesen Block vom vorhergehenden I- oder P-Frame (backward mode)", "dieser Block sieht aus wie ein Block im nächsten Frame (forward mode)", oder "dieser Block sieht aus wie eine Mischung des vorhergehenden und des nachfolgenden Frames (bidirectional mode".

MPEG1 GOPs sind immer "IBBPBBPBBPBB" (dies ist die Reihenfolge in der die Frames angezeigt werden, nicht notwendigerweise die Reihenfolge in der sie kodiert/gespeichert werden). MPEG2 GOPs sehen genauso aus. Sie können auch drei B-frames enthalten. Der DivX5 MPEG4 codec benutzt nur "IBPBPBPBPB", da es leichter zu implementieren ist, und weil B-Frame-Support for MPEG4-Codecs ziemlich neu ist. Du kannst in Zukunft mehr B-Frames erwarten.

8.5. Quarter Pixel (QP)

Quarter pel oder Quarter Pixel wirkt auf die Präzision beim Filtern von Macroblöcken. DivX 4 arbeitet mit Half Pel (1.5, 1.5); 1.25, 1.75, etc. sind beginnend mit DivX 5 möglich. Die konventionelle Teilung eines Bildes in Macroblöcke wird auf der Basis von Integer-Zahlen - 16x16 oder 8x8 - unter Verwendung der ergänzenden Information von dem, was als Virtual Block bekannt ist, verfeinert. Dies erlaubt es, Bewegungen von Objekten in Bildern realistischer wiederzugeben.

Zurück zum Inhaltsverzeichnis


9. Verzeichnis der änderungen (Changelog)

Noch zu erledigen:
23. August 2002:
27. Juli 2002:

3. Juni 2002:
5. Mai 2002:
3. Mai 2002:
2. Mai 2002:
1. Mai 2002:
30. April 2002:

Zurück zum Inhaltsverzeichnis


10 Infos über diese Anleitung

Diese Anleitung wurde von Moritz Bunkus geschrieben. Ich bin ein 24 Jahre alter Informatik-Student an der Technischen Universität Braunschweig, Deutschland. Offensichtlich habe ich zuviel Freizeit zum verschwenden :) Dies ist die erste Ausgabe dieser Anleitung. Bitte schreibt Feedback - was mochtes du? Was mochtest du nicht? Wo sollte ich weitere Informationen bereitstellen? Bitte berichtigt auch Fehler, die ich gemacht habe. Und bitte erzählt mir von Programmen / Werkzeugen / Scripts / Dokumentation, die ich nicht erwähnte. Du erreichst mich via Email unter
moritz@bunkus.org Der Originaltext wurde von Moritz Bunkus in englischer Sprache verfasst. Die vorliegende deutsche übersetzung stammt von Nicolai Lissner.

Copyright (c) 2002 Moritz Bunkus.
Es ist erlaubt, dieses Dokument unter Einhaltung der GNU Free Documentation License, Version 1.2 oder neuer, wie sie von der Free Software Foundation herausgegeben wird, zu verteilen und/oder zu modifizieren.

Zurück zum Inhaltsverzeichnis