3D Konvertierung via Avisynth und Graph Edit.

  • Hallo zusammen.
    ich wollte heute ein 3D Video (Side by Side) über Avisynth und Graphedit zu einem Optimierten Anaglyphen Red Cyan Film konvertieren.
    Gut, zuerst habe ich meine (MKV) Quelle per Drag and Drop in Graphedit eingefügt.
    Danach ging ich folgender Maßen vor:
    Konvertierung von 3D-Videos

    Hier mein Fenster:
    [Blockierte Grafik: http://img847.imageshack.us/img847/6273/unbenannt1mz.jpg]

    Klicke ich oben auf Play, funktioniert das scheinbar einwandfrei.
    Doch füge ich mein Avisynth Script in VirtualDubMod oder einem anderen Programm ein, bekomme ich folgende Fehlermeldung:
    [Blockierte Grafik: http://img846.imageshack.us/img846/3851/unbenannt2x.jpg]

    Welchen Fehler habe ich gemacht?
    Und wie bekomme ich das gelöst?

    Einmal editiert, zuletzt von AnImeFaN1991 (13. März 2011 um 21:19) aus folgendem Grund: Änderung des Titel!

  • Zitat

    Welchen Fehler habe ich gemacht?


    k.A. hast ja Dein AvisynthSkript nicht gepostet,..
    Speicherst Du denn den Graph den Du verwendest auch ab und lädst diesen in Avisynth mittels DirectShowSource?
    Eventuell ist das Problem auch der Filter des Stereoscopic Players, den zumindest der Player ist normalerweise ja auch 4 Minuten oder so eingeschränkt,..

    Zitat

    Und wie bekomme ich das gelöst?


    Würde eher wie bei http://www.pantarheon.org/AviSynth3DToolbox/ vorgehen, nur nicht DirectShowSource sondern FFMpegSource2 verwenden,..

    Cu Selur

  • Am Stereoscopic Player sollte es nicht liegen, da ich eine Privat Lizens verwende.
    Das Avisynth Script sieht bisher nur so aus:

    Code
    DirectShowSource("C:\3D.grf", audio=false)

    Ich bin ebenfalls vor paar Minuten auf diese Seite gestoßen.
    Allerdings komme ich da nicht so ganz mit.
    Möchte ja nur ein Stereoskopisches Ergebniss (Rot / Cyan) erzeugen.

  • Es scheint zu funktionieren - Vielen Dank :)!
    Ich werde heute Abend mal das ganze encodieren.
    --------------------------------------------------
    Hier mal meine Vorgehensweiße (Als Videoquelle diente eine Side by Side 1080p MKV-Datei):

    1. MKV mit DGAVCIndex öffnen und als Projekt speichern (bsp: Video.dga).
    2. Erstelle ich nun eine AVS Datei mit folgendem Inhalt.

    Code
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGAVCDecode.dll")AVCSource("C:\Video.dga") # Pfade MUESSEN angepasst werdencrop( 0, 0, -960, 0) # Remove RIGHT


    Nun wird dieses Script mit dem Namen "left.avs" abgespeichert.
    Weiter geht es mit der rechten Seite:

    Code
    LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\DGAVCDecode.dll")AVCSource("C:\Video.dga") crop( 0, 0, -960, 0) # Remove LEFT


    Dieses Script wird als "right.avs" abgespeichert.

    Jetzt werden beide Scripte zusammengefügt!
    So wird ein neues Avisynthscript angelegt und mit folgendem Inhalt gefüllt:

    Code
    Import("C:\Program Files (x86)\AviSynth 2.5\plugins\Pantarheon3D.avsi")
    
    
    lv = Import("C:\left.avs").ConvertToRGB
    rv = Import("C:\right.avs").ConvertToRGB
    
    
    RCAnaglyph(lv, rv)
    ConvertToYV12() 
    LanczosResize(1280,720) #  Resize to 720p
  • Gehe auch stark davon aus, dass das auch alles in einem Skript funktioniert:

    Cu Selur

  • Ja du hast recht, beim erstellen des Beitrages ist mir wohl auch ein Fehler beim kopieren unterlaufen.
    Richtig ist es, wenn man natürlich für die linke Seite so croppt:

    Code
    crop( 0, 0, -960, 0)


    Und für die rechte dann:

    Code
    crop( 960, 0, 0, 0)

    Ich habe Selur's Script verwendet, da alles in EINEM Script deutlich schneller geht!

    So sieht mein fertiges Script nun aus:

    Vielen Dank für deine Hilfe!
    Ich werde auch in Zukunft dieses Script verwenden.

  • Es gibt übrigens auch ein einzelnes AviSynth-Plugin, das genau das gleiche macht - allerdings habe ich festgestellt, dass dieses Plugin nur bei rot/cyan Ausgabe ordentlich funktioniert (bei grün/magenta und blau/gelb gibt es eine Verschiebung der kompletten Farbgebung).

    Vielleicht noch erwähnenswert: selbst WENN es mit dem Transformation-Filter vom Stereoscopic Player klappen würde, wäre dessen Verwendung nicht sehr empfehlenswert - der scheint sich nämlich seine Einstellungen nicht zu merken.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Ich habe das Script nun einige Male verwenden können.
    Das Ergebniss ist echt gut!
    Doch nun habe ich "Side-by-Side" 1080p Video das nicht nebeneinander, sondern untereinander vorliegt.
    Wie muss passe ich hier mein Script an?

  • left = video.crop( 0, 0, -960, 0) # Remove RIGHT
    right = video.crop( 960, 0, 0, 0) # Remove LEFT

    und die Crop Syntax ist:
    Crop(int "left", int "top", int "width", int "height")
    mit:
    left = video.crop( 0, 0, 0, -540) # Remove BOTTOM
    right = video.crop(0, 540, 0, 0) # Remove TOP
    sollte es passen

  • Noch ein anderer Ansatz: Die "Ausschnittsvergrößerung" der Resize-Funktionen nutzen, anstatt erst mal zu croppen. Allerdings würde dann RCAnaglyph() bereits mit der skalierten Fläche arbeiten; das wäre vielleicht etwas langsamer, dafür aber auch etwas exakter hinsichtlich der Positionen.

    ...
    left = *Resize(1280, 720, 0, 0, -960, 0).ConvertToRGB()
    right = *Resize(1280, 720, 960, 0, 0, 0).ConvertToRGB()
    return RCAnaglyph(left, right).ConvertToYV12()

    Außerdem zu beachten:

    Je nach Original-Material kann es sinnvoll sein, bei ConvertToRGB() und ConvertToYV12() die Parameter "interlaced={false|true}" und "matrix={PC.601|Rec709|PC.709}" anzugeben.

    Auch wenn 32 bit mehr als 24 bit sind, kann ConvertToRGB32() schneller arbeiten als ConvertToRGB24(), weil 4-Byte-Pixel schneller als 3-Byte-Pixel verarbeitet werden können, da sie in Prozessorregistern und Hauptspeicher direkt als DWORD behandelt werden können, optimal für eine 32-bit-Architektur.

    Video lässt sich besser komprimieren, wenn man die Schärfe nicht übertreibt. Spline16Resize() ist erheblich schneller als LanczosResize(), muss aber nicht wirklich schlechter aussehen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!