Zwei avs kombinieren

  • Hallo,
    ich habe eine avs-Datei, in der ich die Start- und Endframes für eine Filterung notiert habe. Da ich keinen entsprechenden Filter gefunden habe, um die Fischaugenverzerrung einer Kamera zu entzerren, habe ich in mühseliger Handarbeit das Video in zig Streifen per crop zerlegt und die Streifen mittels crop und resize auf die gewünschte Höhe gebracht. Das ganze mit Stackhorizontal() wieder zusammengeführt, funktioniert prima, mir gefällt es besser als das Original. Nun ist das Video aber nur szenenweise mit der "blöden" Fischaugenkamera gedreht.

    Gibt es eine Möglichkeit, das ganze Video einzuladen, und nur für die angegeben Frames die zweite avs zu aktivieren?

    Zitat

    Import("d:\entzerren.avs")
    directshowsource("bill960519.asf", fps=30).changefps(25)
    entzerren(last,2873,3022)
    entzerren(last,3269,3622)
    entzerren(last,4570,4784)
    entzerren(last,4827,4974)


    So ähnlich müsste das aussehen, geht natürlich nicht, da entzerren ja keine Funktion ist.
    Das Entzerren-Skript sieht ungefähr so aus

    Edit: Ich schau morgen wieder rein. Greetz

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Oh man ... das hat bestimmt Spaß gemacht, und nicht wirklich 100% Erfolg gebracht. Kann man nur hoffen, dass es einen Fokal-Korrektur-Filter für AviSynth gibt.

    Bis dahin: Wer hier eine Funktion benutzen will, der muss sie dort deklarieren.

    entzerren.avsi

    PHP
    function entzerren(clip c)
    {
      a1 = c.Crop(...)
      # usw.
    
    
      return StackHorizontal(...)
    }

    Die Endung ".avsi" ist nicht notwendig, nur hier und da gern verwendet als der kleine Hinweis darauf, dass man dieses Skript importieren muss, weil es bloß Funktionsdeklarationen enthält, selbst aber nichts direkt tut -- also Import("entzerren.avsi") dann.

  • Oh man ... das hat bestimmt Spaß gemacht, und nicht wirklich 100% Erfolg gebracht. Kann man nur hoffen, dass es einen Fokal-Korrektur-Filter für AviSynth gibt.

    Stimmt, war ne schöne Fummelei.:D
    Erfolg siehe angehängte Bilder.

    Wäre tatsächlich hilfreich, wenn man dafür einen Filter hätte, am Besten, wenn man mittels Masktools die Konturen heraussuchen und übernehmen könnte. Ich schreib das jetzt mal so hier hin, vielleicht liest das ja einer der Meister.;)

    Bis dahin: Wer hier eine Funktion benutzen will, der muss sie dort deklarieren.

    Danke hierfür.:ja:
    Habe es allerdings nur auf Umweg hinbekommen, nur die Teile des Videos zu entzerren, die es brauchten.
    Musste dafür 151 Trimbefehle aneinanderreihen, und für jeden zweiten die Funktion aufrufen. Dann schnell noch return mit den getrimmten und durch "+" wieder verbundenen Teilen.
    Ein Glück, dass ich mir die Aufzählung durch "copy and paste" in Excel erleichtern konnte^^, wozu man so was missbrauchen kann:ani_lol:

    Habe mich noch nicht mit der horizontalen Verzerrung beschäftigt, mach ich vielleicht, wenn ich den nächsten Arbeitswutanfall bekomme.:D

  • Oh, seh ich mir mal an, befürchte aber, dass die Verzerrung vom Zentrum des Videos ausgehen muss. Aber vielleicht hat das ja auch dafür einen Parameter. Notfalls müsste man erst mal entsprechende Ränder zurechtfummeln, damit die Verzerrung mittig ist.

    Edit: Tja, so wie ich es befürchtet hatte, habe versucht ein paar Ränder einzufügen, um die Verzerrung in die Mitte zu bekommen, das ist mir aber nicht wirklich gelungen. Ausserdem hat die Qualität des Video noch darunter gelitten.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • So, muss mich hier noch mal melden und um Eure Hilfe bitten. Wenn ich mein Skript in VDub oder CCE einlade, dauert es ne ganze Weile, bis die GUI fertig aufgebaut ist. Habe dabei entdeckt, das beim Öffnen erst mal die Auslagerungsdatei auf über 1 GB, teilweise auf 2 GB anwächst.

    Nun das eigentliche Problem, egal ob mit VDub oder mit CCE encodiert, klappen die Trimbefehle nicht genau. Die Framenummern habe ich mittels VDub ermittelt, dort stimmten die auch beim Testen mit dem Anwählen der einzelnen Frames. Beim fertig encodierten Video setzen die per Trim zeitlich definierten Filter aber verspätet ein, ist aber immer eine unterschiedliche Anzahl von Frames, von 5-16 ist alles möglich.

    Irgend jemand einen Plan, woran das liegen kann?

    Ps: Habe mal meine Skripte als Zip angehangen.

    Dateien

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • So, mal was neues von der Front^^

    Da mir aufgefallen ist, dass es eher wenig Sinn macht, das Video erst auf 800x600 zu vergrößern, dann meine Filter anzuwenden, und zum Schluss das Ganze wieder mit resize auf PAL-Norm (720x576) zu bringen, habe ich meine Entzerrfunktion auf die richtige Auflösung angepasst.

    Das wichtigste aber, es ist mir gelungen, mittels conditionalfilter die Szenen ermitteln zu lassen, an denen gefiltert werden muss. :ani_lol: :ani_lol: :ani_lol:

    Hier mal mein Skript dazu:

    Dateien

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Das mit dem hin- und herdrehen ist mir auch erst zu spät aufgefallen, werde ich vielleicht mal korrigieren, dürfte aber tatsächlich nicht so ins Gewicht fallen.
    Liege momentan bei ca. 2,2 frames beim Entzerren, habe einen AMD Xp 3400+ und seit vorgestern 2GB RAM.

    Um das Entzerren tatsächlich als Funktion zu definieren, die auch auf andere Anwendungsfälle passt, müsste man nach meiner Vorstellung so was Ähnliches wie den Perspektivfilter für VirtualDub programmieren. Also eine Art grobe Maske durch eine vordefinierte Anzahl von Koordinaten, die sich per Mausklick markieren lassen. Daraus errechnet der Filter ein passende Elipse, die als Basis der Entzerrung dient. Vielleicht auch eher so was wie beim Delogo-Filter, das man eine Maske per Grafik zu Verfügung stellt. Die Maske könnte man sich auch mit Masktools erstellen lassen?
    Aber vielleicht ist das im Defish-Filter ja alles möglich, ich hab es nur nicht begriffen. :grübeln:
    Naja, diese meine Denkansätze dazu kann ich leider die nächsten paar Wochen, Monate oder gar Jahre eh nicht umsetzen. Mit dem Programmieren als Solches habe ich mich in meinem Leben noch nie beschäftigt, komme gerade mal noch mit Dos von M$ zurecht.:D

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

Jetzt mitmachen!

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