VobSub (idx/sub) Ripping Tutorial

  • Einleitung
    Im Zuge der Diskussion um verspätete DL-Versionen bzw. Original-DVD-Untertitel schlug lovecraft vor, ich könne mal ein Tutorial für die DVD-9- und sonstigen Uploader schreiben, für den Fall, dass sie demnächst noch separate Subpacks hochladen wollen, so wie von TVS vorgemacht. Here we go.


    Vobsub ist ein grafikbasiertes Untertitelformat, das den Originalsubs der DVDs entspricht. Es besteht aus den zwei Dateien idx/sub (nicht zu verwechseln mit dem gleichnamigen, textbasierten sub des MicroDVD-Formats) und wird mittlerweile als externer Sub für AVIs von vielen Standalones aber auch als interner Sub, z.B. in MKV-Containern von Mediaplayern unterstützt.


    Da es sich bei den Untertiteln um 4-farbige (3 Farben + Hintergrund) Bitmaps handelt, die über das Video gelegt werden, sind sie natürlich größer als textbasierte Untertitel, gleichen diesen Nachteil aber durch ihre Originaltreue (korrekte Farbe, Positionierung, Schriftart inkl. Sonderzeichen, bspw. von Fremdsprachen) und nicht vorhande OCR-Problematik beim Rippen aus.


    idx
    Die Indexdatei (Bsp. siehe Postingende) listet Sprachen (wie bei DVD 1-32, voreingestellte Sprache), Settings (Positionierung, verwandte Farbpalette für PC oder Standalone-Wiedergabe) und Timings (evtl. Delay, Beginn der jeweiligen items) auf.


    sub
    In der Sub-Datei sind die einzelnen Bitmaps abgespeichert und zwar jedes item in allen vorhandenen Sprache hintereinander, so dass während der Wiedergabe ohne Verzögerung gewechselt werden kann. Da jedes einzelne Bitmap mit der entsprechenden Streamnummer gekennzeichnet ist, kann man die Reihenfolge der Sprachen nicht einfach durch Anpassen der idx-Datei ändern, sondern braucht Tools, die auch die sub-Datei neu schreiben.



    Ripping
    Vobsubs könnte man theoretisch direkt von der Original-DVD rippen, die immer vertrackteren Kopierschutzvarianten der DVDs machen das aufgrund der absichtlich falschen IFOs jedoch oft unmöglich. Dadurch ergibt sich häufig eine Asynchronität, der manuell nur sehr schwer beizukommen ist. Das erschwert leider auch die früher mögliche Automatisierung (obwohl ich überzeugt bin, dass Release-Groups da ihre eigenen Tools entwickelt haben).


    Für Normalsterbliche gilt allerdings, die Subs mit aktivem An*DVD im Hintergrund zu rippen oder die DVD damit zuvor auf Platte zu ziehen, vorzugsweise als ISO. Abgesehen davon, dass eine Datei praktischer als zig IFOs, BUPs und VOBs ist, kann man diese mounten und dann im DVD Decr*pter die VTS/PGCs raussuchen, in denen die einzelnen Folgen gespeichert sind.


    Das ist, wie man anhand der Titel-Nummern meiner Beispiel-DVD Greys Anat*my 5.4 (ja ich weiß, Freundin halt!) in Rippern wie DVDf*b oder DVD Shr*nk sieht, nicht ohne weiteres erkennbar:





    Mit Kopierschutz würden sich für die Folgen teilweise geringfügig andere Laufzeiten ergeben, die zu Asynchronität bei Untertiteln und Ton führen würden, so stellen sich aber die 4 Folgen der DVD korrekt dar:


    Episode 12: 41:19 min
    Episode 13: 47:29 min (erweiterte Episode)
    Episode 14: 41:17 min
    Episode 15: 41:19 min


    Öffnet man die DVD nun im Decrypter und schaltet in den IFO-Mode, kann man anhand der Laufzeiten erkennen, welches VTS/PGC welche Episode enthält:




    Wie man an der Laufzeit erkennt, enthält VTS 2/PGC 4 die Episode 12. Es ist nicht Episode 15 mit der gleichen Laufzeit, denn trotz der Unterschiede zwischen VTS und Titelnummerierung, ist die Reihenfolge unabhängig vom Authoring immer identisch. Episode 15 kann also nicht schon in VTS 1 gewesen sein.


    Bei manchen DVDs stecken allerdings alle Episoden in einer großen PGC von knapp 3 Stunden Länge und sind dann nochmal von separaten PGCs aus referenziert. Sie sind also nicht doppelt auf der DVD, verwirren damit aber Tools wie AutoGK, die sie nicht richtig trennen können und dann alle Folgen in ein AVI kodieren. In dem Fall muss man alle Episoden einzeln rippen und erst dann kodieren.


    Sieht es aber so einfach aus wie in diesem Beispiel, startet man parallel VSrip, den Vobsub Ripper Wizard und lädt dann die der gewünschten Episode entprechende VTS:



    Hat man die richtige erwischt, erkennt man das an der zur Ansicht im DVDD identischen Struktur:



    Im Beispiel sind alle Spuren ausgewählt, was von Vorteil sein kann, da es DVDs gibt, die weder Deutsch noch Englisch als 1. Spur haben, manche Mediaplayer diesen Stream 0 (da beginnt computertypisch die Zählung) aber benötigen. In manchen Fällen kann es auch praktisch sein, erst im Nachinein die überflüssigen Streams zu entfernen. In jedem Fall sollte man alle englischen und deutschen Spuren mitnehmen, da man nicht unbedingt vorher weiß, ob in einer Episode chinesisch oder klingonisch gesprochen und separat untertitelt wird. Diese Untertitel sind nämlich nicht immer hardcoded, also ins Bild eingefügt, sondern auch mal als forced subs realisiert, also als zusätzliche Spur, die nicht abschaltbar ist, was aber von den Playern ignoriert werden kann. Das ist bspw. in der 3-stündigen Miniserie von Battlestar Galactica aus dem Jahr 2003 der Fall, wo einem ohne Sub die Erklärung entgeht, warum da jemand zu Anfang allein in einer Raumstation hockt und wartet.


    Um den Prozess etwas zu beschleunigen, sollte man für den gerippten Sub einen festen Zielordner bzw. Dateinamen festlegen und nach jedem Rip mit SHIFT-F6 im Total Commander auf den gleichen Namen (natürlich unter Beibehaltung der unterschiedlichen Extension) umbennen. Die überflüssigen Chunk-Dateien, die VSrip manchmal anlegt, sollte man aber vor dem Rippen des nächsten Subs löschen, weil die das Programm irritieren können.


    Nachbearbeitung
    Hat man die gewünschten Folgen gerippt, kann man sie nach richtiger Benennung, also bspw.


    GA5x012.avi
    GA5x012.idx
    GA5x012.sub


    und Installation von Vobsub mit quasi jedem Mediaplayer angucken. In der Tray erscheint ein grüner Pfeil mit dem man durch Rechtsklick zwischen den einzelnen Untertitelspuren umschalten kann.



    Mit der Fernbedienung des Standalone kann das Durchschalten bei vielen Spuren recht nervig sein, vor allem weil die meisten die Default-Spur (Language index in use in der idx-Datei) ignorieren. Hat man sich also für ein paar Spuren entschieden, kann man die in Vobsubstrip auswählen und die idx/sub neu schreiben lassen:



    Dadurch fallen die unerwünschten Spuren weg, es ändert sich aber nicht die Reihenfolge der verbliebenen Spuren:



    Will man partout Deutsch als erste Spur, kann man den Sub in den Subtitle Creator laden und dort neu abspeichern (Save Vobsub as), pro Speichervorgang eine Spur. Will man also auch Englisch behalten, lädt man einfach den alten Sub nochmal und "überschreibt" dann den neuen, wobei die englische Spur dann als 2. hinter die deutsche gehängt wird.


    Vereinfacht wird das Ganze inzwischen durch das Tool VobSub Shuffle mit dem man die Reihenfolge der Streams ändern und Streams löschen kann, sogar für komplette Unterverzeichnisse (VobSubStrip ist also unnötig):



    Im obigen Beispiel behalte ich also


    13: de (Deutsch)
    2: de (Deutsch)
    0: en (English)


    was den deutschen forced subs (Schilder, etc.), deutsch und englisch enstpricht.


    Wie man sieht, ist das Rippen mit VSrip weniger aufwendig als die Bitmaps per OCRing in Text umzuwandeln, komplett automatisiert ist es aber leider nicht. Das Vobsub-Paket bietet zwar eine Batchdatei-Funktionalität, die in der beiliegenden vobsub-auto.txt erklärt ist, aber auch die ist nicht vollautomatisch, pro Episode benötigt man eine Datei. In unserem Fall würde die Datei params.txt zum Rippen der ersten Episode so aussehen:


    Code
    1. v:\video_ts\vts_02_0.ifo <- gewünschte VTS
    2. D:\Rips\GA5x12 <- Zieldatei
    3. 4 <- gewünschte PGC
    4. 0 <- alle Angles
    5. ALL <- alle Sprachen
    6. CLOSE


    und mit rundll32 vobsub.dll,Configure params.txt aufgerufen.


    Auf Doom9 hat jemand ein Tool geschrieben, mit dem man diesen Vorgang automatisieren kann, leider funktioniert Vobsub aber bei meiner Beispiel-DVD nicht, sondern bricht mit einem "Indexing Failed" ab. Sollte also jemand Vorschläge haben, wie man das Rippen weiter automatisieren oder sonstwie verbessern kann, immer her damit.



    Beispiel-idx (items auf je eins pro Sprache gekürzt)