Hallo zusammen,
mit dem folgenden Artikel möchte ich meine bisherigen Erkenntnisse und Erfahrungen mit der Wiedergabe von 3D Filmen - speziell Blu-ray 3D und 3D MKVs - für die Allgemeinheit und zwecks Selbstnotiz dokumentieren.
Mein Software und Hardware Setup:
Code: Alles auswählen
__________________________________ __________________
| | | |
| Software: | >>==================>> | Toshiba 42WL863G |
| Debian GNU/Linux Wheezy (amd64) | HDMI 1.4(a) | Aktiver 3D TV |
| Windows 7 (x64) | HDMI 1.3 Kabel | HDMI 1.4 |
| | |__________________|
| Hardware: | __________________
| Intel Core i5-2500K | | |
| NVIDIA Geforce 560 Ti | >>==================>> | Logitech Z5500 |
| DVI-HDMI-Adapter | S/PDIF (Koaxial) | 5.1 Audiosystem |
|__________________________________| |__________________|
Kurz und Knapp
Zum jetzigen Zeitpunkt ist es nicht möglich, Blu-ray 3D Medien dreidimensional nativ mit freier Software abzuspielen.
Ausführliche Version
Die Formate
Zum jetzigen Zeitpunkt haben sich zwei verschiedene Formate für 3D Filme etabliert. Kommerzielle 3D Filme werden als Blu-ray 3D ausgeliefert, während im Internet häufig 3D Filme als Side-by-Side oder Top-and-Bottom MKV angeboten werden.
Blu-ray 3D
Die Blu-ray 3D Spezifikation definiert einen "Compatible"-Mode und einen "Non-compatible"-Mode, wobei bisher offenbar ausschließlich Ersterer verwendet wird. Stereoskopische Blurays lassen sich mit jedem handelsüblichen 2D Bluray Player abspielen, wobei hier hier natürlich kein stereoskopisches (3D) Bild, sondern immer nur das Bild für das linke Auge dargestellt wird.
Die Abwärtskompatibilität zu den 2D Blu-ray Playern wird gewährleistet, in dem im Unterordner /BDMV/STREAM/ einer Blu-ray weiterhin der zweidimensionale Film als MPEG-2 Transport Streams (*.m2ts Dateien) vorhanden ist. Die 3D-fähigen Blu-ray Player lesen hingegen die *.ssif Dateien im Unterordner /BDMV/STREAM/SSIF einer Blu-ray, die sog. "Stereoscopic Interleaved files". Diese "Stereoscopic Interleaved files" verweben/verschachteln (interleave) zum Einen den 2D-kompatiblen MPEG-2 Transport Stream (aka Main-TS) und zum Anderen einen 3D-erweiterten Transport Stream (aka Sub-TS) ineinander (siehe [1] und [2]). Um den 2D-kompatiblen Film nicht zweimal auf der Blu-ray zu speichern (unter /BDMV/STREAM und unter /BDMV/STREAM/SSIF), werden sog. Hard-Links verwendet (siehe [3]). Die Verwendung von Hard-Links ist bei Blu-rays möglich, weil deren Dateisystem UDF 2.6 sie unterstützt. Vereinfacht ausgedrückt zeigen die *.m2ts Dateien unter /BDMV/STREAM und der 2D-kompatible Main-TS unter /BDMV/STREAM/SSIF auf dieselben
Speicherbereiche im Dateisystem. Dies ist übrigens auf der Grund dafür, warum ein Blu-ray 3D ISO rund 50 Gb groß ist, der Windows Explorer der Blu-ray jedoch eine Größe von rund 90 Gb bescheinigt.
Der 2D-kompatible Main-TS ist eine normale H264/AVC Datei (MPEG-4 MVC Base view video stream ist kompatibel zu MPEG-4 AVC), sprich sie kann von VLC, mplayer und Anderen angezeigt werden. Der 3D-erweiterte Sub-TS liegt jedoch als "MPEG-4 MVC
Dependent view video stream" vor. Der Sub-TS wird zusammen mit dem Main-TS verwendet, um daraus das Bild für das rechte Auge zu berechnen (vgl. S. 37 in [1]). Obschon ein Teil von Multiview-Video-Coding bereits z.B. in mplayer implementiert wurde (siehe [4]), so ist es bisher doch noch nicht möglich, Blu-ray 3D Medien mit freier Software abzuspielen.
Side-by-Side oder Top-and-Bottom MKVs
Side-by-Side oder Top-and-Bottom MKVs lassen sich im Gegensatz zu Blu-ray 3D auch unter Linux abspielen. Bei Side-by-Side 3D Filmen werden die Bilder für das linke und das rechte Auge nebeneinander als zusammengesetztes Bild kodiert. Entsprechend haben Full-Side-By-Side (Full-SBS) 3D Filme eine Auflösung von 3840x1080 Pixel. Bei Half-Side-by-Side werden die Bilder für beide Augen auf die Hälfte der ursprünglichen Breite geschrumpft, die Auflösung bleibt dementsprechend bei 1920x1080 Pixeln. Die Qualität von Half-SBS 3D Filmen ist zwar gerinder als Full-SBS Filme. Sie können jedoch aufgrund der Full-HD Auflösung (1920x1080) über jeden 2D-fähigen Player mit regulärem HDMI Anschluss ausgegeben werden. Der 3D-Fernseher spaltet das Bild wieder in zwei getrennte Bilder auf und gibt sie getrennt für beide Augen aus. Außerdem ist Half-SBS bei passiven 3DTVs (mit Polfilter) ausreichend, weil diese sowieso nur die halbe horizontale HD-Auflösung pro Auge ausgeben können. Das Top-and-Bottom Verfahren funktioniert analog
zum Side-by-Side Verfahren, nur das die Bilder nicht nebeneinander sondern übereinander angeordnet werden. Prinzipiell kann jeder 2D-fähige Abspieler wie z.B. VLC, mplayer oder XBMC die Side-by-Side oder Top-and-Bottom MKVs abspielen.
3D Übertragungsarten
Prinzipiell sind alle Blu-ray Player mit HDMI 1.3 (z.B. PS3) und aufwärts in der Lage Blu-ray 3D Filme auch in 3D abzuspielen. Der Fernseher muss jedoch mindestens HDMI 1.4 (bzw. deren Übertragungsmodi) unterstützen. Bei Blu-ray Playern mit HDMI 1.3 muss man jedoch einige Einschränkungen beachten: Die Firmware des Players muss zur 3D Ausgabe die Blu-ray 3D (die "Stereoscopic Interleaved files") interpretieren können. Außerdem können über HDMI 1.3 nur Bilder mit max. 1080i und nicht 1080p an den Fernseher übertragen werden (siehe [6]). Erst HDMI 1.4 und neuer erlauben es, 3D-Bilder in 1080p24 & 1080p30 via Frame-Packing oder Full-Side-by-Side zu übertragen. Um eine Blu-ray 3D in voller Pracht in 3D zu genießen, sind also ein HDMI 1.4 fähiger Player und Fernseher notwendig. Zur Verbindung der beiden Geräte kann weiterhin ein HDMI 1.3 fähiges Kabel verwendet werden, sofern man auf die Ethernet-über-HDMI-Funktionalität verzichten kann.
Neben HDMI existieren eine Reihe weitere Techniken, um stereoskopische Bilder darzustellen. So bietet bspw. NVIDIA die 3D-Lösung "Quad Buffered Professional Stereo" für den professionellen Einsatz unter Windows & Linux basierend auf NVIDIA Quadro Grafikkarten (siehe [8]). Für Endanwender & Gamer sind jedoch NVIDIA 3D Vision & NVIDIA 3DTV Play wesentlich interessanter. Mit NVIDIA 3D Vision können rund 600 Spiele (nur Direct3D, kein OpenGL, siehe [10]) in 3D gespielt werden, das Schauen von Blu-ray 3D ist mit entsprechender Software (siehe unten) ebenfalls möglich. Bei NVIDIAs 3D Vision sind ein 3D Vision Kit (Shutterbrille + USB Dongle), ein kompatibler 120Hz Monitor, eine Geforce Grafikkarte und ein Windows Rechner notwendig. NVIDIA 3DTV Play bietet letztlich die gleiche Funktionalität wie NVIDIAs 3D Vision, allerdings sind hierfür nur ein HDMI 1.4 3D Fernseher, eine Geforce Grafikkarte und ein Windows Rechner notwendig. Das 3D Vision Kit und der 120Hz Monitor entfallen bei NVIDIA 3DTV Play (siehe [11]).
Sowohl NVIDIA 3D Vision als auch NVIDIA 3DTV Play erfordern aber speziell angepasste Abspielsoftware um 3D Blu-rays in 3D abzuspielen (siehe unten)!
BEACHTE: Die 3D Formate und die 3D Übertragungsmodi sind völlig unabhängig voneinander! Prinzipiell ist es möglich, eine Blu-ray 3D via Half-Side-by-Side zu übertragen. Genauso kann eine 720p Top-and-Bottom MKV via 1080p24 und Frame-Packing angezeigt werden.
Freie 3D Software
Kommerzielle Blu-ray 3D Filme sind üblicherweise mit einem Kopierschutz versehen (AACS und/oder BD+). Das Sicherheitssystem rund um die Blu-ray ist vollumfassend, sprich von der Blu-ray bis hin zum Wiedergabegerät werden die Daten im Normalfall verschlüsselt übertragen (z.B. HDCP bei HDMI). Somit ist es eher unwahrscheinlich, dass jemals eine freie und legale Software zum Abspielen von kopiergeschützten Blu-rays erscheinen wird. Um Blu-ray Filme mit freier Software abzuspielen, müsste man den Kopierschutz vorher mit illegaler Software wie Anydvd HD entfernen oder den Blu-ray Film mittels MakeMKV in eine MKV umwandeln. Beides ist jedoch z.B. in Deutschland und in den USA verboten.
Ein weiteres Hindernis von Blu-rays ist BD-J (Blu-ray Disc Java). Mit BD-J können interaktive Anwendungen, Menüs und Spiele auf Blu-rays realisiert werden. Prinzipiell ist die Wiedergabe von BD-J Software mit freier Software durch die Bibliothek libbluray-bdj möglich (siehe [12]), funktioniert jedoch nicht immer. In diesem Fall muss man auf die fancy BD-J Apps verzichten und die Transport Streams direkt abspielen.
Das Abspielen von Blu-ray 3D Filmen in 2D ist normalerweise kein Problem, hierzu werden einfach - wie weiter oben beschrieben - die *.m2ts Dateien im Ordner /BDMV/STREAM/ einer Blu-ray mit VLC, mplayer, XBMC oder ähnlicher Software abgespielt. Auf die gleiche Weise können Half-Side-by-Side Filme per Half-Side-by-Side Übertragung abgespielt werden (H-SBS MKV in 1080p per regulärem HDMI). Hierbei muss man lediglich den 3D Fernseher in den 3D Side-by-Side Modus umschalten.
Zum Abspielen von Blu-ray 3D Filmen in 3D existiert bisher schlicht keine freie Software, die in der Lage ist, die *.ssif Dateien im Unterordner /BDMV/STREAM/SSIF einer Blu-ray zu lesen und abzuspielen (siehe Abschnitt zu Blu-ray 3D Format oben). Dies gilt sowohl für kopiergeschützte als auch ungeschützte 3D Blu-rays. Um Blu-ray 3D Filme in 3D abzuspielen, muss man auf Windows und proprietäre Player ausweichen (siehe unten).
Um mit freier Software 3D Filme in Full-HD/1080p zu schauen, bleiben letzten Endes nur Full-Side-by-Side oder Full-Top-and-Bottom 3D Filme. Hierzu braucht man zum Einen eine der oben vorgestellten 3D Übertragungswege (z.B. HDMI 1.4 oder NVIDIA 3D Vision) und zum Anderen eine Software wie Bino (siehe [5]). Bino ist eine Software zum Abspielen von 3D Filmen mit der Möglichkeit, verschienende 3D Übertragungswege zu wählen wie HDMI-Frame-Packing, Half-/Full-Side-by-Side, Half-/Full-Top-and-Bottom oder Left-Right-Alternating (siehe [13]). Um aber z.B. HDMI-Frame-Packing einzusetzen, muss man erstens dem X-Server manuell eine weitere "Auflösung" (Modeline) hinzufügen, weil die zusätzlichen 3D Modi wie Frame Packing nicht per EDID übertragen werden (siehe [14]). Eine beispielhafte xorg.conf Konfigurationsdatei findet sich unter [15]. Anschließend wählt man in Bino den korrekten Eingabemodus aus, gibt als Ausgabe HDMI-Frame-Packing vor und startet den Film. Diese Art der Wiedergabe mittels HDMI-Frame-Packing ist bei
einigen Fernsehern möglich. Meine Konfiguration bestehend aus einer NVIDIA Geforce 560 Ti, dem proprietären NVIDIA Grafiktreiber und einem Toshiba 42WL863G ließ sich allerdings nicht zur Zusammenarbeit mittels Frame-Packing überreden. Der Grund hierfür ist wahrscheinlich, dass der NVIDIA Grafiktreiber nur bei Übergabe eines speziell präperiertem Frames per Direct3D in den Frame Packing Modus schaltet (siehe Abschnitt zur Entwicklung von 3D Software). Eine weitere (ungetestete) Variante wäre, den Fernseher mit doppelter Höhe (1920x2160 Pixel) ohne den 45-Pixel breiten Frame-Packing Balken anzusteuern und Bino auf Top-and-Bottom Übertragung zu schalten.
Kommerzielle 3D Software
Derzeit ist die einzige Möglichkeit Blu-ray 3D Filme abzuspielen, eine kommerzielle Software unter Windows zu verwenden. Hierzu zählen zum Beispiel der Stereoscopic Player von Peter Wimmer (siehe [16]), dem NVIDIA 3D Vision Video Player (einer kostenfreien OEM Version des Stereoscopic Players, siehe [17]), Cyberlink PowerDVD 12, ArcSoft TotalMedia Theatre 5 (TMT5) oder Corel WinDVD Pro 11. Bei Auswahl einer Software zur Wiedergabe der 3D Filme muss darauf geachtet werden, ob die jeweilige Hardware Konfiguration auch unterstützt wird. Die aufgeführten Produkte lassen sich zum Beispiel mit NVIDIA 3D Vision und NVIDIA 3DTV Play nutzen.
BEACHTE: Keine kommerzielle Software zum Abspielen von 3D Blu-rays erlaubt das Einstellen eines Audio Delays / Verzögerung, weder PowerDVD 12, TMT5 noch WinDVD Pro 11!!! Jeder 3D Fernseher verfügt über einen kleinen oder größeren Input Lag. Das heißt, das Bild wird nicht sofort dargestellt, sondern erst mit einer Verzögerung von einigen Millisekunden. Im Standard 3D Modus beträgt die gemessene Verzögerung des Toshiba 42WL863G ganze 350ms! Dieses Input Lag führt ohne die Möglichkeit einer Sound Verzögerung dazu, dass der Sound hörbar früher auftritt, als das zugehörige Bild erscheint! Lediglich mit dem Stereoscopic Player (siehe [16]) ist es indirekt gelungen, ein Audio Delay einzustellen. Hierzu installiert man die Software ffdshow (siehe [19]), konfiguriert dort das Audio Delay für jeden Lautsprecher und wählt schließlich im Stereoscopic Player unter Datei->Einstellungen->Decoder für jedes Audioformat den ffdshow Audio Decoder aus.
TIPP: Der Input Lag lässt sich kostengünstig und ausreichend genau messen, indem ein Video mit Timecode (siehe [18]) simultan auf einem PC Monitor und dem 3D Fernseher (im 3D Modus) wiedergegeben wird ("Bildschirm klonen"). Anschließend schießt man mit einer (schnellen) Kamera ein paar Bilder und berechnet die Differenz der beiden dargestellten Timecodes.
Entwicklung von 3D Software
Um zukünftig kopierschutzfreie 3D Blu-rays in 3D wiedergeben zu können, müssen drei Voraussetzungen erfüllt werden. Erstens muss MPEG-4 Multiview-Video-Coding in der Wiedergabesoftware bzw. deren Bibliotheken implementiert werden. Es existieren offensichtlich einige Beispielimplementierungen für MVC wie z.B. von Nokia (siehe [20]). In einigen freien Projekten wurde bereits mit der Implementierung begonnen (siehe [25]).
Zweitens muss Unterstützung für die *.ssif Dateien ("Stereoscopic Interleaved files") der Blu-ray 3D programmiert werden. Dies dürfte nicht trivial werden, weil der genaue Aufbau wohl per Reverse Engineering ermittelt werden muss. Die offizielle Spezifikation kostet rund $800 (siehe [26]).
Drittens muss die Wiedergabesoftware befähigt werden, in einen geeigneten 3D Modus wie Frame-Packing via HDMI zu schalten. Der NVIDIA Graphics SDK 11 (siehe [21]) enthält einige Beispiele für NVIDIA 3D Vision / 3DTV Play. Die NVIDIA Präsentation zur GDC09 (S.36-43 unter [22]) zeigt an ausgewähltem C++ Code, wie die Frames aufbereitet und an Direct3D übergeben werden müssen, damit der NVIDIA Treiber sie in 3D darstellt (Weitere Infos unter [23] und [24]).
Fazit
Bis 3D Filme von Blu-ray 3D mit freier Software wiedergegeben werden können, wird noch einige Zeit ins Land ziehen.
[1] S. 35ff in
http://www.tyrell-innovations-usa.com/s ... c18780.pdf
[2]
http://forum.videohelp.com/threads/3283 ... ost2033751
[3]
http://en.wikipedia.org/wiki/Hard_link
[4]
http://ffmpeg.org/pipermail/ffmpeg-deve ... 92420.html
[5]
http://bino3d.org/
[6]
http://www.hartware.net/news_48191.html
[7]
https://en.wikipedia.org/wiki/HDMI#Version_1.4
[8]
http://www.nvidia.com/object/quadro_ste ... ology.html
[9]
http://www.nvidia.com/object/3d-vision- ... ments.html
[10]
http://3dvision-blog.com/tag/quad-buffer-opengl-stereo/
[11]
http://www.nvidia.com/object/3dtv-play-overview.html
[12]
http://packages.debian.org/wheezy/libbluray-bdj
[13]
http://bino3d.org/doc/bino.html#Output-Techniques
[14]
https://lists.gnu.org/archive/html/bino ... 00001.html
[15]
https://lists.gnu.org/archive/html/bino ... I0Fkmi.txt
[16]
http://3dtv.at/Index_de.aspx
[17]
http://www.nvidia.de/object/3d-vision-v ... er-de.html
[18]
http://www.mediacollege.com/downloads/v ... clock.html
[19]
http://ffdshow-tryout.sourceforge.net/
[20]
http://research.nokia.com/page/4988
[21]
http://developer.nvidia.com/game/nvidia-graphics-sdk-11
[22]
http://developer.download.nvidia.com/pr ... nd_Out.pdf
[23]
http://www.mtbs3d.com/phpBB/viewtopic.php?f=60&t=4026
[24]
http://www.mtbs3d.com/phpBB/viewtopic.php?f=105&t=5072
[25]
http://wiki.videolan.org/SoC_2011/Stere ... c_encoding
[26]
http://forum.doom9.org/showthread.php?p ... ost1462078
Viele Grüße
WANA