Der ultimative Blu-Ray Transcoding Guide
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw…lu-ray-logo.jpg]
Ich habe mich nun entschlossen, mein angesammeltes Wissen aus dem Bereich der Blu-Ray Videoverarbeitung weiterzugeben, und zwar in Form eines Guides, in dessen Rahmen auch eine Beispiel-BD verarbeitet werden soll. Ergänzt wird dies durch allgemeine Informationen über Blu-Rays und unterschiedliche Blu-Ray Standards im Bereich Video, Audio, Untertitel und Metadaten, sowie Hilfestellung zur Verarbeitung ebensolcher.
Achtung: Trotz des protzigen Adjektivs "ultimativ" erhebt diese Anleitung noch keinen Anspruch auf Vollkommenheit. Sie ist vielleicht noch stellenweise fehlerhaft oder unvollständig. Derartige Unzulänglichkeiten werden natürlich noch durch mehr und mehr Feinschliff beseitigt. Dies kann und wird hoffentlich vor allem durch Feedback von Lesern erreicht werden!
I.) Was soll hier nicht gezeigt werden?
Eigentlich wollte ich noch auf die finale Antwort von Ernesto warten, da noch die Entscheidung bezüglich des Posts ausstand, doch da nun keine illegale Handlung mehr Bestandteil der Anleitung ist, und keine Handlung, die eine illegale voraussetzt, denke ich, daß der Post gefahrlos möglich sein sollte. Ich habe mich also entschlossen, in der Beispielverarbeitung keinerlei Arbeitsschritte zu demonstrieren, die..
- ..das Umgehen einer Kopierschutzmaßnahme zeigen (AACS, BD+) oder..
- ..auf Material aufsetzen, dessen Verarbeitung das Umgehen einer Kopierschutzmaßnahme voraussetzen würden.
Weiters habe ich es mir persönlich auferlegt, keine Anfragen bezüglich Software in diesem Thread zuzulassen, die für das Umgehen von Blu-Ray Kopierschutzmaßnahmen genutzt werden könnte. Derartige Anfragen, oder auch die Diskussion über derartige Software oder generische Angriffe auf AACS, BD+ oder künftige ähnlich geartete Schutzsysteme werden umgehend an die Boardmoderation für die Löschung weitergereicht!
Wenn ihr also Informationen zum "Knacken" einer BD Verschlüsselung sucht: NICHT HIER!
II.) Was soll hier gezeigt werden?
Gezeigt oder beschrieben werden soll die gezielte Verarbeitung von bestimmten Containerformaten, nämlich folgenden:
- BDAV/MPEG-2 Transport Stream (*.m2ts, gezeigt wird Demultiplexing/Demuxing)
- Matroska MKV (*.mkv, gezeigt wird Multiplexing/Muxing)
Weiters das Decoden folgender Audio- und Videostreams, sowie Auslesen von Untertitelstreams:
- Untertitel: SUP Bild-Untertitelformat
- Video: H.264/MPEG-4 AVC
- Video: SMPTE/VC-1
- Audio: DTS (DTS, DTS-HD High Resolution, DTS-HD Master Audio)
- Audio: Dolby AC3 (AC3, EAC3, Dolby True-HD)
- Audio: LPCM
Dann natürlich das Encoden bzw. Erstellen von diversen Streams, oftmals im selben Arbeitsschritt:
- Untertitel: SRT Text-Untertitelformat
- Video: H.264/MPEG-4 AVC
- Audio: Dolby AC3
Um all dies anhand eines praktischen Beispiels zu demonstrieren, soll eine OpenSource Demoproduktion als Testmaterial herhalten, und zwar die x264 Demo Blu-Ray, die ohne Kopierschutz auskommt, unter CreativeCommons OpenSource Lizenz steht, und die freien Animationsfilme "Big Buck Bunny" sowie "Elephants Dream" beinhaltet. Achtung: Wenn ihr dieses Demo-Image herunterladet, sollte euer System über einen UDF 2.5 Dateisystemtreiber verfügen. Unter Windows XP muß dieser nachinstalliert werden (Google!), freie Optionen sind verfügbar. Unter Windows Vista/7 ist UDF 2.5 mit an Bord. Wenn ihr das ISO mit einem Tool wie Daemon Tools o.ä. einhängen möchtet, müßt ihr dafür sorgen, eine Version dieser Software einzusetzen, die neu genug ist, um Blu-Ray Images zu unterstützen!
Als Speziallösung demonstriert soll auch der AviSynth Frameserver werden, der in bestimmten Fällen vonnöten sein kann. Vor dem praktischen Anwendungsfall soll noch kurz erwähnt werden, über welche Software man verfügen sollte, bevor es losgeht. Nicht JEDE Software wird in allen Fällen benötigt, aber um bestens vorbereitet zu sein, sollte man über eine komplette Sammlung verfügen.
ACHTUNG, Update (2012): Mittlerweile ist AviSynth im unten besprochenen VC-1 Videostream Fall NICHT mehr vonnöten! Neuere Versionen von x264 können diese Elementarstreams nun direkt verarbeiten, nachdem man sie aus den M2TS Containern auf einer entsprechenden Blu-Ray geholt hat. Dadurch kann dieser komplizierte Zwischenschritt für VC-1 Video entfallen, ich bitte das beim Weiterlesen unten im Kopf zu behalten. Wo also steht daß man AviSynth "braucht", ist das in Wahrheit nicht mehr der Fall!
III.) Die Software
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw/voodooalert/bd/logos-1.png][Blockierte Grafik: http://www.xin.at/thrawn/pics/hw/voodooalert/bd/logos-2.png][Blockierte Grafik: http://www.xin.at/thrawn/pics/hw/voodooalert/bd/logos-3.png]
Folgende Software sollte man also haben:
- [Haali Media Splitter] (Containersplitter/-demultiplexer)
- [FFDShow Tryouts] (gut konfigurierbare Codecsammlung)
- [eac3to] (Kommandozeilen-Tool für Audiotranscoding und tlw. *.mkv Container-Remuxing)
- [x264] (Kommandozeilen-Tool für Video-Encoding)
- [tsMuxeR + GUI] (Tool für *.m2ts Container-Demuxing)
- [SupRip] (OCR (Optical Character Recognition) Tool zur Umwandlung von Untertiteln, nicht zu verwechseln mit SubRip, welches vergleichbare Funktionalität für DVD Subs anbietet!)
- [AviSynth] (Frameserver)
- [BDEdit] (Blu-Ray Strukturanalysetool)
- [MKVtoolnix] (MKV Container-Muxer GUI, die auf mkvmerge aufsetzt.)
- [ArcSoft DTS Decoder / ArcSoft Total Media Theatre] (kommerzielle BD Wiedergabesoftware, die einen hochwertigen DTS-HD HR und DTS-HD MA Decoder mitbringt. Gut, aber nur optional!)
- [Windows Media Player], [MediaPlayer Classic Homecinema] oder [VLC] als Mediaplayer (optional).
Wie in der Liste jetzt nur teilweise zu sehen ist, handelt es sich zum Großteil um OpenSource Software oder zumindest Freeware, lediglich ArcSoft TotalMedia Theatre 3, die aktuelle Version des ArcSoft Wiedergabepaketes ist hier kommerzieller Natur. Das Paket kann mit eac3to zum Zweck höherwertigerer Audioumwandlung genutzt werden, es handelt sich dabei aber um kein Muß!
Der Mediaplayer ist ebenfalls in allen Fällen optional, schließlich muß man sich das erzeugte Video ja nicht unbedingt auf einem PC ansehen, hilfreich ist es zur Sicherstellung eines sauberen Transcodes aber auf jeden Fall.
Ein Hinweis noch: Teilweise wird im Rahmen dieser Anleitung auf 64-Bit Software zurückgegriffen. Aus Kompatibilitätsgründen empfehle ich aber, wo auch nur möglich unter Windows auf 32-Bit Software zu setzen, da es gerade im Mediabereich unter Windows sehr problematisch sein kann, etwas anderes zu tun!
Damit hätten wir's, schreiten wir zum praktischen Anwendungsfall:
1.) Das Demultiplexing des Blu-Ray Quellmaterials
In diesem Arbeitsschritt verwendete Software:
- tsMuxeR GUI
- BDEdit
- eac3to
Jede Blu-Ray liegt in einer standardisierten Struktur vor, so wie es auch schon bei der DVD der Fall war. Wie schon bei der DVD sind auch bei der Blu-Ray nicht alle Ordner von Bedeutung. In unserem Fall liegen die wichtigsten Daten im Unterordner ".\BDMV\STREAM\", diese Dateien haben die Endung *.m2ts, und stellen die A/V Containerfiles der BD dar (so wie *.VOB auf einer DVD).
Auch interessant können die Dateien im Ordner ".\BDMV\PLAYLIST\" sein, welche die Endung *.mpls aufweisen. Diese Playlisten sind in bestimmten Fällen interessant, nämlich dann, wenn der zu rippende Film nicht innerhalb eines einzelnen *.m2ts Containers vorliegt.
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw…erstructure.gif]
Bei kommerziellen Blu-Rays liegt der Hauptfilm üblicherweise innerhalb eines einzelnen Containers, der ca. zwischen 16GB und 45GB messen kann. Sieht man ein solches File, kann man sich sicher sein, daß man seinen Filmcontainer schon gefunden hat. Sind die Daten aber auf viele kleine *.m2ts Dateien mit einer Größe von z.B. 100MB - 3GB aufgeteilt, so ist der Film höchstwahrscheinlich splitted. Um dann die korrekten Dateien zu finden, benötigt man die Playlisten. Um in einem solchen Fall die korrekte Playlist des Hauptfilms zu identifizieren, muß man wissen, wie lange der Film genau ist (in Minuten). Dann kann man BDEdit starten, und die Blu-Ray Struktur öffnen (den "BDMV" Folder angeben), und im Falle unserer Beispiel-BD würde das so aussehen (auch wenn es bei "Elephants Dream nicht wirklich vonnöten ist):
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw/voodooalert/bd/bdedit_1.gif]
Nun wechselt man auf den PLAYLIST Reiter, und kann ganz links oben die Playlisten der BD durchblättern Im Bereich "Playlist" zeigt die sechste Spalte die Spieldauer des Films an, so wie hier zu sehen:
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw/voodooalert/bd/bdedit_2.gif]
Nun braucht man also nur noch die Playlist zu finden, deren Spieldauer sich mit der des Hauptfilms der BD exakt deckt! So kann man auch jene Filme verarbeiten, bei denen der Hauptfilm auf sehr viele kleine *.m2ts Container aufgeteilt wurde, über die Playlisten! Hat man nämlich die entsprechende Playlist gefunden, kann man selbige ganz einfach im tsMuxeR öffnen, so wie es auch bei *.m2ts Containern möglich ist. Unsere Playlist für "Elephants Dream" würde hier "00002.mpls" heißen, diese Datei wäre also in so einem Fall einfach in tsMuxeR zu öffnen.
In unserem Fall aber sind drei Kurzfilme auf der OpenSource Sample-BD, und ich weiß bereits, daß der gewünschte "Elephants Dream" zur Gänze im Container 00003.m2ts residiert, es wird also nicht nötig sein, auf Playlisten zurückzugreifen.
Ich öffne also wie in den meisten Fällen nicht die Playlistendatei, sondern direkt die 00003.m2ts Containerdatei mit tsMuxeR GUI, und das sieht dann so aus:
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw/voodooalert/bd/tsmuxer.gif]
Nun selektiert man die gewünschten Spuren, die man demultiplexen möchte, in unserem Falle sind das alle. Bei kommerziellen BDs würde man hier diverse Untertitel- und Audiospuren deselektieren, die man nicht braucht, z.B. Ton in den unterschiedlichsten Sprachen.
ACHTUNG, IM SONDERFALL: Liegt ein VC-1 Videostream vor, ist dieser hier nicht zu selektieren! Elementare VC-1 Videostreams sind etwas unbrauchbar! In so einem Fall läßt man selbigen mit tsMuxeR besser im Container, und arbeitet mit eac3to, welches gleich besprochen werden wird!
In diesem Fall ist das Video H.264, wir demuxen also alles.
ACHTUNG! Hier sollte man sich unbedingt den fps Wert merken, dieser wird später zwingend benötigt! Dieser kann z.B. bei 24 oder 24000/1001 liegen (das entspräche ~23.97fps), also notieren:
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw…tsmuxer_fps.gif]
Sollte der Videostream aber VC-1 sein, so muß man sich mit eac3to helfen. Da elementare VC-1 Streams nicht von x264 gelesen werden können, braucht man einen Container drumherum, mit dem x264 auf Umwegen etwas anfangen kann, MKV zum Beispiel! eac3to ist zwar eigentlich ein Audioencoder, kann aber auch praktisch als Remultiplexer eingesetzt werden, um das VC-1 inklusive der Metadaten aus dem *.m2ts Container in einen *.mkv zu remuxen. Dabei muß man eac3to die Tracknummer des Videostreams plus Quelldatei angeben (Tracknummer meistens "2"), und dann noch die Zieldatei. Das würde z.B. so gehen:
Die Syntax ist also:
Für das VC-1 wird dann später auch noch ein Frameserver besprochen, aber erst im Transcoding-Abschnitt. Fürs erste ist das Demuxen damit abgeschlossen.
In unserem Fall haben wir jetzt drei Elementarstreams hier liegen, eine "00003.track_4113.264" Datei (Video), Eine "00003.track_4352.dts" Datei (Audio) und eine "00003.track_4608.sup" Datei (Untertitel in Bildform). Da wir H.264 Video vorliegen haben, wird das Transcoding wesentlich simpler als im VC-1 Fall.
Das Demuxen ist damit abgeschlossen! In unserem Fall sehen wir hier als Ergebnis die Elementarstreams:
[Blockierte Grafik: http://www.xin.at/thrawn/pics/hw…muxed_files.gif]