Von YouTube & Co zum Wohnzimmer-3D
Auch wenn zahlreiche Entertainment-Geräte bereits Zugriff auf YouTube erlauben, in Sachen 3D gibt es noch Nachholbedarf. Bis das funktioniert, können Sie die Filme selbst konvertieren. Für das folgende Beispiel haben wir das Video von https://www.youtube.com/watch?v=YuxqPuhLBZg genommen: "3D -...
Auch wenn zahlreiche Entertainment-Geräte bereits Zugriff auf YouTube erlauben, in Sachen 3D gibt es noch Nachholbedarf. Bis das funktioniert, können Sie die Filme selbst konvertieren.
Für das folgende Beispiel haben wir das Video von https://www.youtube.com/watch?v=YuxqPuhLBZg genommen: "3D - The Coke Zero & Mentos Rocket Car". Zunächst muss das Video heruntergeladen werden. Dazu haben wir den Firefox mit installiertem Video "DownloadHelper"-Add-on (https://addons.mozilla.org/de/firefox/addon/3006) verwendet. Wichtig ist, dass Sie sich eine Version für den Download aussuchen, die im MP4-Format vorliegt. Wir haben uns für die 720p-Variante entschieden.
Zunächst einmal muss die Datei mit AVISynth geöffnet werden. Wir verwenden dazu das FFMPEGSource-Plug-in, dessen DLL nach dem Download zunächst in den AVISynth-Plug-in-Unterordner kopiert werden muss, damit das Skript die neuen Plug-in-Befehle nutzen kann.
Legen Sie eine Textdatei mit der Dateierweiterung .avs an (wichtig: unter Windows muss die Option "Dateierweiterungen ausblenden" in den Ordneroptionen abgeschaltet sein, ansonsten kann es sein, dass die Datei versteckt die Erweiterung .txt bekommt) und fügen Sie folgenden Inhalt hinzu:
audio=FFAudioSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
video=FFVideoSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
final=AudioDub(video, audio)
return final
Damit öffnen Sie Audio- und Videospur des Videos, fügen beide Streams zusammen und geben Sie gemeinsam an die aufrufende Videoanwendung zurück. Starten Sie VirtualDub und öffnen Sie darin die AVS-Datei, sehen und hören Sie das Video - ansonsten bekommen Sie eine entsprechende Hinweismeldung zurück.
Bei YouTube sind, wie bereits erläutert, linkes und rechtes Bild vertauscht. Indem wir das Video duplizieren, bei dem einen Video die linke Hälfte, bei dem anderen Video die rechte Hälfte wegschneiden (AVISynth-Befehl "Crop") und schließlich das Ergebnis vertauscht wieder zusammenfügen ("StackHorizontal"), machen wir diesen Umstand wieder rückgängig. Das komplette Skript sieht dann wie folgt aus - ausgehend von 720p-Größe, also 1280x720 Pixeln:
audio=FFAudioSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
video=FFVideoSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
final_l=AudioDub(video, audio)
final_r=final_l
final_l=final_l.Crop(640, 0, 0, 0)
final_r=final_r.Crop(0,0,-640,0)
final=StackHorizontal(final_l,final_r)
return final
Das Ergebnis des obenstehenden Skripts lässt sich jetzt bereits kodieren und auf einem 3D-fähigen Fernseher abspielen - mehr zur Kodierung auf der letzten Seite.
Wer keinen 3D-Fernseher hat, muss die Stereobilder vertauschen, auf doppelte horizontale Größe bringen ("Spline36Resize") und dann verfärben ("MergeRGB"). Das sieht dann wie folgt aus:
audio=FFAudioSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
video=FFVideoSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
final_l=AudioDub(video, audio)
final_r=final_l
final_r=final_r.Crop(640, 0, 0, 0)
final_l=final_l.Crop(0,0,-640,0)
final_l=Spline36Resize(final_l,1280,720)
final_r=Spline36Resize(final_r,1280,720)
final_l=ConvertToRGB32(final_l)
final_r=ConvertToRGB32(final_r)
final=MergeRGB(final_l.ShowRed, final_r.ShowGreen, final_r.ShowBlue)
return final
Damit erhalten Sie "einfache" Farbanaglyphen. Möchten Sie optimierte anaglyphen, wie sie Peter Wimmer auf seiner Seite vorstellt, werden ein paar Zeilen mehr (anstelle der einzelnen "MergeRGB"-Zeile) benötigt - für eigene Konvertierungen müssen Sie nur den Dateipfad zu Beginn anpassen:
audio=FFAudioSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
video=FFVideoSource("C:\3D_-_The_Coke_Zero_Mentos_Rocket_Car.mp4")
final_l=AudioDub(video, audio)
final_r=final_l
final_r=final_r.Crop(640, 0, 0, 0)
final_l=final_l.Crop(0,0,-640,0)
final_l=Spline36Resize(final_l,1280,720)
final_r=Spline36Resize(final_r,1280,720)
final_l=ConvertToRGB32(final_l)
final_r=ConvertToRGB32(final_r)
final_l=RGBAdjust(final_l,0, 0.7, 0.3)
final_l_1 = MergeRGB(final_l.ShowGreen, final_l.ShowRed, final_l.ShowRed)
final_l_2 = MergeRGB(final_l.ShowBlue, final_l.ShowRed, final_l.ShowRed)
final_l_3 = Merge(final_l_1, final_l_2)
final_l_3 = RGBAdjust(final_l_3,2.0,0,0)
final_l_3 = Levels(final_l_3,0,1.5,255,0,255,coring=false)
final_r = RGBAdjust(final_r,0, 1, 1)
final=Merge(final_l_3, final_r)
final=RGBAdjust(final,2.0,2.0,2.0)
return final
Auch dieses Ergebnis kann man nach entsprechender Kodierung mit einem Streaming-Client abspielen oder auf DVD bzw. Blu-ray brennen.