Mangels Player für kommerzielle Blu-rays stehen Linux-Anwender dem Medium bislang skeptisch gegenüber. Dabei übersehen viele, dass man durchaus eigene HD-Disks unter Linux erstellen kann – auf Blu-ray wie auf DVD.
Allmählich wird Blu-ray als Speichermedium attraktiv: Mit Preisen von um die 2 Euro für eine BD-R und Blu-ray-Multibrennern, die beim Händler schon für knapp über 90 Euro zu haben sind, kommt das speicherstarke optische Medium endlich im Mainstream an. Obwohl es noch immer keinen Linux-Player für kommerzielle Blu-rays gibt, kann man eigene Scheiben durchaus unter Linux selbst erstellen – völlig ohne den Kopierschutz-Horror von AACS, BD+ und Konsorten.
Um Scheiben mit HD-Videos zu erstellen, benötigen Sie streng genommen noch nicht einmal Bluray- Medien oder einen entsprechenden Brenner: Das ursprünglich von Sony und Panasonic für HD-Camcorder spezifizierte Format AVCHD [1] ermöglicht es, auf DVDs oder DL-DVDs HDInhalte zu brennen, die die meisten Blu-ray-Player abspielen. Nahezu alle aktuell verkauften Player beherrschen das AVCHD-Format, lediglich einige ältere Modelle streiken – achten Sie auf das AVCHD-Logo auf dem Gerät. MPEG4 AVC, auch unter dem Namen H.264 bekannt, ist ein äußerst effizienter Codec, und der freie AVC-Encoder x264 [2] liefert insbesondere bei niedrigeren Bitraten die mit Abstand beste Qualität. So bekommen Sie mit den richtigen Einstellungen bis zu 3 Stunden Video in 1080p-Auflösung in guter Qualität schon auf eine 8 GByte große DL-DVD, bei 1,5 Stunden unterscheidet sich eine 8-GByte-AVCHD qualitativ kaum mehr von einer Blu-ray.
Es fehlen unter Linux bislang noch Frameworks wie beispielsweise das für DVD-Authoring zum Standard avancierte DVDauthor, sodass es noch kein Tool gibt, mit dem Sie Blu-ray- oder AVCHD-Menüs erstellen. Werkzeuge wie das russische TSmuxer [3] erlauben es jedoch, einen einzelnen Film so zu präparieren, dass er auf BD-R(E) oder DVD gebrannt beim Einlegen im Bluray- Player automatisch startet.
Der beschwerliche Weg zur eigenen Blu-ray oder AVCHD teilt sich in vier Arbeitsschritte: Erst gilt es, passende HD-Inhalte zu finden, diese anschließend Bluray/ AVCHD-kompatibel zu encodieren, sie dann in eine passende Filestruktur und einen geeigneten Container zu verpacken und zu guter Letzt im richtigen Format auf das gewünschte optische Medium zu brennen.
HD-Inhalte
Um eine Blu-ray oder AVCHD zu erstellen, brauchen Sie geeignete HD-Inhalte verfügen. Mit HD-fähigen Schnittprogrammen wie Kdenlive, OpenShot Video Editor oder Cinelerra schneiden Sie Ihre eigenen, mit dem HD-Camcorder aufgenommene Filme und exportieren diese anschließend als eine große HD-Videodatei. Auch im Netz gibt es durchaus legale HD-Inhalte, beispielsweise HD-Versionen von Youtube-Videos oder die freien Blender-Kurzfilme Elephants Dream, Big Buck Bunny und Sintel [4]. Auch im Internet Archive finden sich legale HD-Filme, beispielsweise der unter Creative Commons veröffentlichte Zeichentrickfilm Sita Sings the Blues [5] oder der George-Romero-Zombieklassiker “Die Nacht der lebenden Toten” [6], bei dem die Macher das Copyright vergaßen, sodass er frei kopiert werden darf.
Vorgaben
Der Blu-ray- und AVCHD-Standard legt genau fest, wie Video und Audio beschaffen sein müssen, damit Blu-ray-Player (oder die Playstation 3) sie abspielen. Dabei bildet die AVCHD-Spezifikation eine Untermenge der Blu-ray-Spezifikation.
Viel Konfusion herrscht darüber, worin sich Blu-ray und AVCHD denn nun unterscheiden. Sie ähneln sich stark, AVCHD weist aber in der Struktur und Benennung von Dateien leichte Unterschiede auf und hat einige zusätzliche Einschränkungen bei Bitrate und Codec. Gelegentlich stolpert man auch über die (falschen) Bezeichnungen BD5 oder BD9 für AVCHD. Dieses von Warner Home Video vorgeschlagene, aber nie offiziell von Blu-ray-Playern unterstützte Format entspricht von der Dateistruktur und in den Spezifikationen zu 100 Prozent Blu-ray, nur dient hier eine DVD als Medium.
Video-Spezifikationen
AVCHD erlaubt, wie der Name schon sagt, nur AVC als Videocodec, während eine Blu-ray auch VC-1 (die SMPTE-Bezeichnung für Microsofts WMV3) oder MPEG2 erlaubt. Wir beschränken uns in diesem Artikel deshalb ausschließlich auf AVC, dieser Codec der effizienteste ist und sich für beide Formate gleichsam eignet.
Doch nicht nur der Codec selbst, auch weitere Parameter müssen eingehalten werden: Beide Varianten setzen für HD zwingend ein 16:9-Format und quadratische Pixel voraus, das Video muss also exakt in Auflösungen von 1280×720 (720p) oder 1920×1080 (1080p) vorliegen. Es gibt nur eine Ausnahme, mit der Sony seine eigenen Vorschriften von quadratischen Pixeln bricht: Die anamorphe Auflösung 1440×1080. In diesem Format zeichnen jedoch nur in einige wenige HD-Camcorder auf, sodass wir es hier ignorieren. Auch SD-Auflösungen wie 480p oder 576p unterstützt AVCHD, sie sollen hier jedoch ebenfalls außen vorbleiben. Alle HD-Videos, die nicht exakt 1280×720 oder 1920×1080 entsprechen, müssen Sie also erst auf diese Auflösung skalieren beziehungsweise mit schwarzen Balken (der sogenannten “Letterbox”) erweitern.
Das stark qualitätssteigernde AVC-Feature CABAC (arithmetische Codierung) unterstützt sowohl Blu-ray als auch AVCHD. Vorsicht bei den Reference-Frames: Da diese zur Referenzierung vollständig im Speicher vorliegen müssen und dieser in Blu-ray-Playern stark beschränkt ist, erlauben der Blu-ray- und AVCHD-Standard in Level 4.1 bei 720p maximal sechs und bei 1080p maximal vier Reference-Frames.
Auch was die Framerate angeht, gibt es Einschränkungen: Blu-ray und AVCHD erlauben für 1080p ausschließlich 24 fps, für 1080i (interlaced) 50 und 60 fps, für 720p wahlweise 24, 50 oder 60 fps. Geringe Abweichungen wie 23,96 oder 25 fps beziehungsweise 59,9 fps funktionieren auch, bei Frameraten wie 29,97 oder 30 fps geht aber nichts mehr. Falls Ihr Video mit 30 fps vorliegt oder Ihr HD-Ausgabegerät 25 fps nicht unterstützt, probieren Sie es mit --fake-interlaced --pic-struct als zusätzlicher x264-Option.
Zu guter Letzt müssen Sie auch auf die Bitrate achten: Blu-ray erlaubt eine höhere Gesamtstream-Bitrate (bis zu 36 Mbit/s für BD-R, 48 Mbit/s für gepresste Blu-rays) als AVCHD (maximal 18 MBit/s), da eine DVD langsamer Daten liefert als eine Blu-ray – 2x-DVD entspricht 2,7 MByte/s, 2x-BD dagegen 9 MByte/s. Um auf der sicheren Seite zu bleiben, wählen Sie für den Videostream bei Blu-ray besser nicht mehr als 25 Mbit/s, bei AVCHD nicht mehr als 13 Mbit/s.
Audio-Spezifikationen
Bei den Audiocodecs erlaubt Blu-ray unkomprimiertes LPCM, Dolby Digital (AC3)/Digital+/TrueHD, DTS/DTS-HD sowie (seit Spezifikation 2.3) auch das chinesische Dynamic Range Audio (DRA). AVCHD kommt offiziell nur mit Dolby Digital mit 1 bis 6 Kanälen (64 bis 640 kbit/s) oder unkomprimiertem PCM (bis zu 1,5 Mbit/s, 2 Kanäle) zurecht, die Player spielen jedoch zumeist auch DTS – standardkonform ist das jedoch nicht.
Video-Encoding
Als Encoder dient der aus dem VideoLAN-Projekt hervorgegangene Opensource-Encoder x264, der wegen seiner Effizienz, Geschwindigkeit und seines hohen Optimierungsgrads auch in unserer Benchmarksuite LUbench zum Einsatz kommt. x264 können Sie via Libx264 über Ffmpeg oder Mencoder ansteuern, auch diverse Transcoder wie der in VLC integrierte Streaming Export Wizard, Transmageddon oder Arista nutzen ihn. Es gibt allerdings auch das Standalone-Programm x264, das jedoch nur unkomprimiertes YUV4MPEG als Input-Format akzeptiert.
Nur wenige x264-Frontends erlauben jedoch ein präzises Einstellen der für Blu-ray oder AVCHD notwendigen Parameter. Deshalb nutzen wir wie schon in unserem Benchmark eine selbstgebastelte Pipeline aus Mplayer und x264 (siehe Kasten “Video-Encoding in der Shell”). Da sich der Output von Mplayer in unkomprimiertem YUV4-MPEG nicht direkt über eine Pipe an x264 schicken lässt, nutzen wir dafür ein FIFO-File, auf das beide Programme zugreifen. Das immer 0 Byte große File erlaubt erst ein Schreiben, wenn daraus gelesen wird, und simuliert so ein langsames Medium. So müssen Sie nicht auf der Platte hunderte von GByte für den unkomprimierten YUV4-HD-Videostream vorhalten. Da Mplayer fast alles abspielt, wandeln Sie so jedes damit abspielbare Video in einen Blu-ray/AVCHD-kompatiblen Videostream um.
Video-Encoding in der Shell
Installieren Sie Mplayer und x264 aus beliebigen Repositories. Falls Sie einen beschnittenen Mplayer erwischen, der aus Patentgründen den Codec Ihrer Datei nicht abspielen will, laden Sie den Quellcode [7] herunter und kompilieren selbst. Die Entwickler von x264 ändern immer wieder die unterstützten Parameter – falls Ihr x264 die von uns verwendeten Parameter also nicht kennt, kompilieren Sie auch das selbst.
Zuerst legen Sie mit mkfifo stream.y4m die FIFO-Datei für den unkomprimierten YUV4-Stream an. In diese schreiben Sie mittels des Kommandos aus Zeile 1 von Listing 1. In einem anderen Terminal lesen Sie nun aus der Y4M-Datei und starten das Encoding (Zeile 2). Nur in einem Skript können Sie beide Befehle sukzessiv absetzen, indem Sie den Mplayer-Prozess mittels & in den Hintergrund schieben.
In den zweiten Befehl (x264) fügen Sie zusätzlich den Parameter für Reference- Frames ein – für 720p -r 6, für 1080p -r 4. Die weiteren Unterschiede zwischen AVCHD und Blu-ray beschränken sich auf den Wert für --crf, der letztendlich die Bitrate bestimmt, sowie die beiden Parameter --vbv-maxrate und --vbv-bufsize. Letztere setzen Sie für eine DVD auf 15000, für eine Blu-ray auf 40000 (--vbv-maxrate) respektive 30000 (--vbv-bufsize). Für 1080i Interlaced Video fügen Sie dem Befehl zusätzlich noch die Option --interlaced hinzu.
Mit diversen zusätzlichen Mplayer-Parametern können Sie das Video verändern, beispielsweise um es zu skalieren, aufzuhellen, schwarze Balken oder hart ins Video gerechnete Untertitel hinzuzufügen. Die Mplayer-Dokumentation [8] erklärt die äußerst umfangreichen Optionen. Für alle Auflösungen, die nicht exakt 1280×720 oder 1920×1080 entsprechen, skalieren Sie beispielsweise mittels -vf dsize=1280:720:0,scale=0:0,expand=1280:720 beziehungsweise -vf dsize=1920:1080:0,scale=0:0,expand=1920:1080 das Video auf die gewünschte Breite und erweitern (oder beschneiden) den Rest oben und unten auf exakt 720 beziehungsweise 1080 Pixel. Probieren Sie ohne den Parameter -vo yuv4mpeg:file=stream.y4m vor dem Encoden zuerst, ob alles wie gewünscht aussieht.
Listing 1
$ mplayer -vo yuv4mpeg:file=stream.y4m -nosound Quelldatei $ x264 --crf 22 --preset slow --tune film --weightp 0 --nal-hrd vbr --vbv-maxrate 15000 --vbv-bufsize 15000 --aud --keyint 24 --bframes 3 --slices 4 --level 4.1 --b-pyramid strict -o Ausgabe.264 stream.y4m
Wählen Sie die Bitrate so, dass Sie das Zielmedium möglichst optimal nutzen. Dauert etwa der Film nur eine halbe Stunde, können Sie für Blu-ray problemlos auf das empfohlene Maximum von 25 Mbit/s und bei AVCHD auf 13 Mbit/s hochgehen. Bei drei Stunden Film ist für eine AVCHD auf DL-DVD hingegen nur maximal 5 Mbit/s möglich. Beachten Sie dabei, dass Sie zum Videostream noch den Audiostream mit einrechnen müssen – und den Overhead des dafür nötigen MPEG-Transport-Streams, der am Ende alles noch etwa 6,5 Prozent größer macht. Eine BD-R (Single Layer) fasst maximal 23,30, eine DVD-DL 7,95 und eine DVD 4,37 GByte. Video und Audio sollten vor dem Umverpacken mit TSmuxer zusammen also nicht mehr als 21,8, 7,5 beziehungsweise 4,1 GByte groß sein.
Das Encoding dauert trotz der Performance von x264 auch auf schnellen Maschinen recht lange. Die Dauer hängt auch vom Video selbst ab – reales Video mit Rauschen dauert etwa deutlich länger als rauschfreies CGI-Video – sowie von der gewählten Bitrate: Eine höhere Bitrate bedeutet langsameres Encoding.
Um das Encoding zu beschleunigen, nutzen wir den CRF-Modus (Constant Rate Factor), der eine ähnliche Qualität bietet wie das doppelt so lange dauernde 2-Pass-Encoding. Beginnen Sie bei 1,5 Stunden Film etwa mit dem CRF-Faktor 22 und ändern Sie den Wert, falls nötig – je größer der CRF-Faktor, umso kleiner die Datei und umso niedriger die Bitrate. Wollen Sie sicher gehen, dass der erste Durchlauf schon die anvisierte Bitrate aufweist, nutzen Sie in etwas schlechterer Qualität stattdessen Single-Pass mit -B Bitrate_in_kbit/s statt --crf.
x264 unterstützt bis zu acht Kerne, auch die virtuellen Kerne von Intels Hyperthreading. Mit unseren qualitativ hochwertigen Einstellungen erreichen wir auf einem Sechskern (Core i7 980x) bei 720p-Video mit 24 fps ungefähr Echtzeit-Geschwindigkeit, das heißt 30 Minuten Film encoden in 30 Minuten. Das Tool Mediainfo [9] sollte sich auf jedem Rechner finden, auf dem Sie mit Video arbeiten. Es verrät Ihnen, welche Bitrate der erzeugte Stream letztendlich hat.
Audio-Encoding
Liegt die Audiospur bereits in Dolby Digital vor, extrahieren Sie dies einfach mittels
$ mplayer -dumpaudio -dumpfile Audiodatei.ac3 Filmdatei
Um inkompatible Audiostreams umzuwandeln, nutzen Sie einen beliebigen Audio-Encoder mit Dolby-Digital-Support. Recht einfach zu bedienen ist beispielsweise der überarbeitete VLC-Stream-Dateiexport (Menü Datei), mit dem Sie Audio einfach in Dolby Digital (AC3 beziehungsweise a52) umwandeln. Fügen Sie im Stream-Dialog (VLC 1.1.4) die Datei – entweder nur als Audio oder als Audio mit Video – hinzu und klicken Sie auf Stream (Abbildung 1).
Legen Sie dann zuerst ein entsprechendes AC3-Audio-Profil an: Bei Verkapselung wählen Sie raw, denn AC3-Dateien enthalten Rohdaten ohne Dateiheader. Video und Untertitel müssen Sie deaktiveren. Im Audio-Reiter (Abbildung 2) setzen Sie zuallererst den Haken bei Audio, den Codec auf a52/AC3 und die Abtastrate auf 48 kHz. Die Bitrate darf 64, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 576 oder 640 kbit/s betragen. Bitraten über 256 kbit/s sind üblicherweise allerdings dem 5.1-Mehrkanal vorbehalten, für gängiges Zweikanal-Stereo bringt mehr als 224 kbit/s keinen hörbaren zusätzlichen Qualitätsgewinn.
Klicken Sie im Stream-Assistenten in Reiter Datei auf Hinzufügen, um den Namen der Zieldatei eingeben zu können (Abbildung 3). Achten Sie darauf, keine Dateiendung für die Zieldatei zu vergeben, sonst startet das Transcoding nicht. Auch die Einstellung des Lautstärkereglers ist wichtig, denn dieser wirkt sich auch auf den Stream-Encode aus. Danach starten Sie das Transcoding mit einem Klick auf Stream. Geben Sie der Datei nach dem Transcoden die Dateiendung .ac3.

Stream um.” width=”300″ height=”261″ />
Abbildung 3: Sobald Sie Datei und Ziel-Codec ausgewählt haben, wandeln Sie den Ton mit einem Klick aufStream um.AVCHD/Blu-ray-Struktur
Nun starten Sie die TSmuxer-GUI (Abbildung 4) und wählen zuerst die von x264 erzeugte 264-Datei mit dem Video und danach die Dolby-Digital-Audiodatei aus (add) und stellen mit ausgewähltem Audiotrack die Sprache ein. Wählen Sie unten das gewünschte Format (Blu-ray disk oder AVCHD disk). In den Reitern oben können Sie weitere Optionen wie etwa Kapitelmarkierungen einstellen.
Auch das Erzeugen von SUP-Untertiteln, das Aneinanderhängen von Streams (nur mit identischem Encoding) oder das Aufsplitten (beispielsweise für die Festplatten-Version von AVCHD auf FAT32-Medien, wo Dateien maximal 4 GByte groß sein dürfen) beherrscht der russische Tausendsassa. Ändern Sie nicht die sonstigen Einstellungen, sonst wird der Stream womöglich inkompatibel. Passt alles, drücken Sie unten links auf Start muxing, und TSmuxer verpackt die Audio- und Videodaten in MPEG-2-Transport-Streams (M2TS) und erzeugt eine passende Blu-ray- oder AVCHD-kompatible Dateistruktur.
Als einzige Alternative zu TSmuxer gibt es unter Linux noch das längst nicht mehr gepflegte .NET-Programm TSremux (Abbildung 5), das wir mit leichten Änderungen auch unter Mono zum Laufen bekamen (TSremunix.exe). Das Programm in der frühen Version 0.0.21.2 weist allerdings Bugs auf und bietet nichts, was TSmuxer nicht auch (und viel besser) kann – und es unterstützt AVCHD nicht explizit. Zudem kommt es ausschließlich mit MPEG-TS-Dateien als Input klar, also müssen Sie ihr Video und Audio zuerst in MPEG-TS verpacken. Deshalb sollten Sie TSremux nur in dem (unwahrscheinlichen) Fall probieren, dass TSmuxer versagt.
Möchten Sie zusätzlich eine am Rechner oder diversen festplattenbasierten HD-Mediaplayern spielbare MKV-Datei Ihres HD-Films erzeugen, kombinieren Sie den Video- mit dem Audiostream (“Muxen”) in MKVmerge. Dieses Programm mit einem einfachen grafischen Benutzerinterface findet sich im MKVtoolnix-Paket, das Sie in allen Repositories finden. Die GUIs von MKVmerge und TSmuxer ähneln sich stark, sodass Sie sich schnell zurechtfinden. Wichtig bei MKVtoolnix ab Version 4.1: Stellen Sie sicher, dass bei Audio- und Videospur Compression im Reiter Extra Options auf None gesetzt ist, sonst läuft die Datei auf den meisten Hardware-Playern nicht.
Brennen
Nun müssen Sie die von TSmuxer erzeugte Blu-ray- oder AVCHD-Struktur noch passend brennen. Um zu testen, ob auch alles funktioniert, empfiehlt sich für den ersten Versuch eine wiederbeschreibbare DVD-RW beziehungsweise eine BD-RE. Zum Brennen verwenden Sie das für 20 Euro erhältliche Nero 4 Linux [10] – das einzige Programm, das unter Linux das Einstellen des UDF-Levels erlaubt. Denn sowohl Blu-ray als auch AVCHD müssen Sie unbedingt mit UDF Level 2.5 brennen. Das in den meisten Linux-Brennprogrammen zum Einsatz kommende mkudffs aus dem schon seit Jahren nicht mehr aktualisierten Linux-Paket Udftools erzeugt ISOs maximal in UDF Level 2.01.
Stellen Sie unter DVD bei DVD-ROM (UDF) zuerst Manuelle Einstellungen und dann UDF 2.5 ein (Abbildung 6), bei Bluray funktioniert es identisch. Neros Warnung, unter Linux könne man kein UDF 2.5 brennen, ignorieren Sie getrost: Sie stammt wohl noch aus Zeiten vor Kernel 2.6.26, mit dem UDF-2.5-Unterstützung in Linux Einzug hielt. Packen Sie die Ordner BDMV und CERTIFICATE ins Wurzelverzeichnis der Disk (Abbildung 7), sonst geht nichts. Vergeben Sie einen Namen für die Disk und klicken Sie auf Brennen.

Abbildung 7: Das kommerzielle Nero 4 Linux kann als einziges Linux-Programm AVCHD- und Blu-ray-Videos brennen.
Geschafft
Nach Abschluss des Vorgangs liegt im Brenner nun eine DVD oder Blu-ray mit HD-Video, die in Blu-ray-Playern oder auf der Playstation 3 läuft. Sie können diese Disk auch mit einem beliebigen Brennprogramm vervielfältigen, da ihr jeglicher Kopierschutz fehlt.
Glossar
-
SMPTE
-
Society of Motion Picture and Television Engineers, ein Standardisierungsgremium für Videotechniken.
Infos
[1] AVCHD-Homepage: http://www.avchd-info.org
[2] x264-Homepage: http://www.videolan.org/developers/x264.html
[3] TSmuxer: http://www.smlabs.net/tsmuxer_en.html
[4] Blender-Filme: http://www.blender.org/features-gallery/movies/
[5] Sita Sings the Blues: http://www.archive.org/details/Sita_Sings_the_Blues
[6] Romero-Film in 1080p: http://www.archive.org/details/Night.Of.The.Living.Dead_1080p
[7] Mplayer-Homepage: http://www.mplayerhq.hu/
[8] Mplayer-Doku: http://www.mplayerhq.hu/design7/documentation.html
[9] Mediainfo: http://mediainfo.sf.net
[10] Nero 4 Linux: http://www.nero.com/deu/linux4.html










