rechteckigen bereich aus einem frame in einen anderen kopieren

  • nein. videoquelle ist vorhanden. staxrip generiert die scripte alle selbst und man kann dann bei bedarf diese erweitern. und genau das hab ich getan. ich habe mein
    projekt ja auch schon x-mal durchlaufen lassen -ging. dann ein eigenes script zur anzeige der frame-nr als text hinzugefügt -ging auch. nur das hinzufügen dieses
    scriptes geht nicht. siehe screenshot.

    screen.png

  • Und wie sieht das gesamte Script aus, das von StaxRip generiert wird? Irgendwo unter "Tools" war doch ein Eintrag, der das komplette Script anzeigt, wenn ich mich recht erinnere.

  • so:

    LoadPlugin("D:\tools\staxrip\Applications\DGMPGDec\DGDecode.dll")
    LoadCPlugin("D:\tools\staxrip\Applications\AviSynth plugins\Yadif\yadif.dll")
    MPEG2Source("F:\temp\staxrip\soor\soor.d2v")
    Crop(0,0, -Width % 8,-Height % 8)
    ConvertToYV12()
    Yadif()
    Crop(20,46,-0,-44)
    Trim(12787,12947)
    o = last
    mmask = mt_lutspa(relative=false,"x 413 > x 420 < y 194 > y 204 < & & & 255 0 ?")
    rep2 = o.MedianBlurT(0,0,0,2)
    rep2m = mt_merge(o,rep2,mmask)
    o.trim(0,12801) ++ rep2m.trim(12802,12803) ++ o.trim(12804,0)

    oh, ich seh gerade: liegt es an dem ersten trim? meine, die frameindexe sind danach ja wesentlich kleiner.

  • Nein, das kann (eigentlich) nicht der Grund für den Fehler sein. Wenn Trim() out-of-range Framenummern enthält, dann wird einfach der letzte verfügbare Frame wiederholt.

    Was in diesem "Gesamtscript" wiederum fehlt, sind die LoadPlugin's für Masktools und Medianblur ...

  • hab jetzt das globale trim rausgenommen und er stürzt trotzdem ab. die beiden .dll´s werden von avisynth(nicht staxrip) selbst automatisch geladen. wenn ich sie im avisynth-plugin-ordner hab stürzt er ab, sind sie nicht drin, gibts die meldung das er befehl mt_ .... nicht findet. lade ich die plugins in meinem filter-codeteil direkt, anstatt automatisch über avisynth stürzt er auch ab.

    filter-code:
    LoadPlugin("D:\tools\staxrip\Applications\AviSynth plugins\medianblur.dll")
    LoadPlugin("D:\tools\staxrip\Applications\AviSynth plugins\mt_masktools-25.dll")
    o = last
    mmask = mt_lutspa(relative=false,"x 413 > x 420 < y 194 > y 204 < & & & 255 0 ?")
    rep2 = o.MedianBlurT(0,0,0,2)
    rep2m = mt_merge(o,rep2,mmask)
    o.trim(0,12787) ++ rep2m.trim(12802,12803) ++ o.trim(12947,0)

  • Hrrrrr..mmmhh ... Sind wir eigentlich sicher, welche Avisynth-Version installiert bzw. aktiv ist?

    Ein Script mit

    Return( version() )

    schafft Klarheit.

  • es muss an den befehlen liegen, das laden der dlls führt nicht zu fehlern. hab das gerade getestet.
    dieses script läuft durch:

    LoadPlugin("D:\tools\staxrip\Applications\DGMPGDec\DGDecode.dll")
    LoadCPlugin("D:\tools\staxrip\Applications\AviSynth plugins\Yadif\yadif.dll")
    MPEG2Source("F:\temp\staxrip\soor temp files\soor.d2v")
    Crop(0,0, -Width % 8,-Height % 8)
    ConvertToYV12()
    LoadPlugin("D:\tools\staxrip\Applications\AviSynth plugins\medianblur.dll")
    LoadPlugin("D:\tools\staxrip\Applications\AviSynth plugins\mt_masktools-25.dll")
    Yadif()
    Crop(20,46,-0,-44)
    Trim(12724,12947)

    virtualdum hab ich bisher nicht installiert. kann noch ne weile dauern.

    p.s.
    es müsste avisynth 2.5.8 sein.

    Einmal editiert, zuletzt von tenim (21. März 2012 um 20:19)

  • Moment mal ... dem "Phänomen", dass MaskTools.dll zwar erfolgreich geladen wird, aber dann verschiedene Befehle in dem Fehler "there is no function named ..." resultierten, dem bin ich doch schon mal begegnet ...

    Der Grund war, dass User die *-26.dll geladen haben, obwohl Avisynth 2.5.x verwendet wurde.

    In einer anderen Konstellation ist diese Erscheinung bisher noch nicht aufgetreten.

  • nein Didée, so war das nicht. entweder wurde die .dll vonnständig geladen -dann ist er abgestürzt. oder aber, die dll wurde nicht geladen und der befehl nicht gefunden.

  • Na, dann mal MedianBlur.dll anschauen. Die "neueste" ist die v0.8.4, die DLL hat das "Änderungsdatum" 19.01.2005. Die sollte eigentlich auch keine Probleme machen.

    Interessant aber dass es in Vdub läuft, und erst beim Beenden abstürzt.

    Und dabei hatte ich MedianBlurT eigentlich nur deswegen ERSATZWEISE anstelle von Clense() (-> RemoveGrain.dll) verwendet, um den Versionskonflikten/verwirrungen des RemoveGrain-Paketes aus dem Weg zu gehen ... (*Seufz*)

  • Also schön, dann treten wir MedianBlurT mal in die Tonne. Mir dämmert gerade ganz dunkel, die temporal-Version hatte doch diesen Memory- oder Caching-Bug ... :redface:

    Bewaffnen mit genau dieser Version von RemoveGrain.
    - Alle Plugins liegen in mehreren Versionen vor.
    - Nicht(!) die xyzSSE3.dll-Versionen benutzen.
    - Typischerweise sollten die xyzSSE2.dll-Versionen benutzt werden.
    - Wenn die nicht funktionieren (weil irgendwelche msvcredist-Pakete nicht installiert sind), dann gehen auch die xyzS.dll

    Es geht sowieso nur um RemoveGrain.dll und Repair.dll - diese beiden werden in "tausenden von" Scripten benutzt. Die RSharpen.dll und DenoiseSharpen.dll sind uninteressant.


    Dann wird das Script auf den Clense-Filter umgebaut. Es braucht eine weitere Hilfsfunktion, um aus dem Radius=1 Temporalfilter einen Radius=2 Temporalfilter zu bauen ...


    Also - Diesen ganzen Block komplett kopieren, und gehabter Manier als "custom Filter" in StaxRip anlegen. Das müsste dann eigentlich funktionieren.

  • muss mal schauen, ich meine aber das return in scripten bei staxrip ein problem darstellen. trotzdem danke für deine hilfe. wahnsinn, was es alles braucht, um gezielt einen 5x5 bereich in einem frame zu überschreiben.

    ich überlege ernsthaft, eine eigenen filter(dll) in c zu schreiben, welche dann genau das macht was ich will. also einfaches zeichnen+copy&paste funktionen framebasiert.
    so schwer kann das doch nicht sein. ich krieg einen zeiger auf dem inhalt des aktuellen frames übergeben und kann dann daraus kopieren bzw. darin manipulieren.
    wie immer ist da aber das problem mit den tutorials bzw. wo finde ich beispiele, hilfe...
    :)

  • "Return" ist mit Sicherheit kein Problem, wenn es sich innerhalb einer Funktion befindet, so wie hier.

    Wenn das nicht passt, weil es ach so viel Script-Text ist und oh so furchtbar kompliziert aussieht, dann kopier' halt um Himmels Willen die Inhalte von zwei Frames vorher hinein:

    Code
    LoadPlugin("D:\tools\staxrip\Applications\AviSynth plugins\mt_masktools-25.dll")
    o = last
    mmask = mt_lutspa(relative=false,"x 413 > x 420 < y 194 > y 204 < & & & 255 0 ?")
    rep2 = o.SelectEvery(1,-2)
    rep2m = mt_merge(o,rep2,mmask)
    o.trim(0,12787) ++ rep2m.trim(12802,12803) ++ o.trim(12947,0)

    Despot könnte auch gehen.

    Spatialer Medianblur könnte auch gehen: rep2=MedianBlur(4,4,4)

    Gauss'scher Weichzeichner würde auch gehen: rep2=bicubicresize(144,112).bicubicresize(width(),height())

    Temporaler Flachmatscher ebenso (es soll ja eine unbewegteStelle sein?): rep2 = TemporalSoften(5,255,255,255,2)

    Und vermutlich würden noch ein halbes Dutzend anderer Sachen auch irgendwie gehen. Es ist ja nicht so, dass es in Avisynth an Möglichkeiten mangeln würde. :rolleyes:

Jetzt mitmachen!

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