Animate + Crop = crash

  • Hallo,


    ich möche mit den Filtern "animate" und "crop" einen sich bewegenden Ausschnitt aus einem Film herausschneiden, also der Figur im Film mit dem crop-Auschnitt folgen. Leider stürzen vdub und auch andere Abspielprogramme ohne Fehlermeldung ab, sobald der Frame erreicht ist, bei dem die "Animation" anfängt.

    Mein Script sieht so aus:

    LoadPlugin("C:\Programme\AviSynth 2.5\plugins\MPEGDecoder.dll")
    MPEGSource("aad.mpeg")
    animate(100,400,"crop",0,100,0,-100,0,200,0,0)

    Das gleiche passiert übrigens auch, wenn ich die Größe der Balken beim "letterbox"-Filter mit "animate" ändern möchte.

    Hat jemand eine Idee, woran das liegen könnte?


    Viele Grüße,

    Hanni

  • ich habe das ganze mal mit crop und addborders probiert

    Code
    Animate(0,100,"xyz",0,0,-0,-0,0,100,-0,-100)
    function xyz (clip x, int a, int b,int c,int d)
    {
    x
    crop(a,b,c,d)
    addborders(a,b,c*(-1),d*(-1))
    return last
    }


    Erst stürzte das Script bei mir auch die ganze Zeit ab. Dann kam mir die Idee. Im yv12 farbraum kann crop nur die werte verarbeiten die durch 4 teilbar sind.
    crop(3,0,-0,-0) geht also nicht :so-nicht:
    Also habe ich converttorgb32() davorgesetzt. Dann gings ohne Probleme :D

  • Muss es dafür RGB sein?
    Wegen der Wandlungsverluste. Ginge auch ein YV mit "ohne Chroma-Subsampling"?

    Hm, da gäbe es YV24 - keine Ahnung, ob das klappt.

    Grüße!
    Trekkie2

  • hmm, also so einen Befehl wie converttoyv24 kennt avisynth nicht.
    Man kann auch in den yuy2 farbraum wechseln, da muss nur die rechte und linke seite durch 2 teilbar sein. Wenn man nur oben und unten croppen will, dann gehts ganz gut, habs getestet.
    Kein Ahnung ob yuy2 besser ist, habe nämlich keine Ahnung von den ganzen Farbräumen :zunge:

  • Zitat von katjarella

    Das geht auch nicht. Weil ja das Video am Anfang (Frame 100) in der Größe anderes ist, als am Ende (Frame 400). Du könntest aber eine Unterfunktion selber schreiben, wo wenigstens Boarder addiert werden, das Du wieder auf die Orginal Größe kommst oder Resizen.

    Bis Frame 100 werden oben und unten jeweils 100 Pixel abgeschnitten, danach verschiebt sich das ganze und bei Frame 400 werden oben 0 und unten 200 Pixel abgeschnitten. Die Größe bleibt also gleich - vorausgestzt, avisynth verschiebt die obere und untere Grenze des Bildausschnitts immer gleichzeitig.

  • Zitat von FatFaster


    Erst stürzte das Script bei mir auch die ganze Zeit ab. Dann kam mir die Idee. Im yv12 farbraum kann crop nur die werte verarbeiten die durch 4 teilbar sind.
    crop(3,0,-0,-0) geht also nicht :so-nicht:
    Also habe ich converttorgb32() davorgesetzt. Dann gings ohne Probleme :D

    Danke, jetzt bin ich schonmal weiter. Folgendes funktioniert:

    Code
    converttorgb32()Animate(0,100,"crop",0,40,0,-40,0,80,0,0)

    während

    Code
    Animate(0,100,"crop",0,16,0,-16,0,32,0,0)

    wiederum vdub zum Absturz bringt, obwohl alle werte durch 4 teilbar sind... Genau das gleiche mit YUY2.

  • Natürlich geht das nicht, egal ob durch vier teilbar. Denn, animate verändert kontinuirlich die Werte von crop. Bei dir steht Top=16, irgendwann setzt animaten den Wert auf Top=15 und das ist dann nicht mehr durch 4 teilbar!

  • Zitat von FatFaster

    hmm, also so einen Befehl wie converttoyv24 kennt avisynth nicht.


    Zitat von http://www.avisynth.org/Convert:

    Zitat

    Changes:
    v2.60 ConvertToY8, ConvertToYV411, ConvertToYV16, ConvertToYV24
    v2.50 ConvertToYV12


    Man verliert halt durch Rundungsfehler bei der Wandlung YUV->RGB->YUV Information. Das macht sich oft/meist/manchmal (je nachdem, wen Du fragst) nicht bemerkbar, aber ich hatte das mal bei blau-grün-Tönen, dass es plötzlich schauderhaft aussah. Aber wenns Dir nicht auffällt wirds wohl nicht ins Gewicht fallen :)

    [edit]
    Da hab ich ja 2.60 kopiert...
    ...hm, ich verfcolge die Sache grade zu wenig, als dass ich mich dazu äußern könnte, was 2.60 ist. Numm RGB...

    Grüße!
    Trekkie2

  • Statt "crop" nehme man "resize". Damit kann man sogar Subpixel-shifting realisieren. Einfach mal ins Script von "ZoomInOut()" reinschauen, dann noch die Offsets von Integer nach Float ändern, und geritzt is'.

  • Zitat

    ...hm, ich verfcolge die Sache grade zu wenig, als dass ich mich dazu äußern könnte, was 2.60 ist.

    Wann die erste alpha of v2.60 freigegeben wird, sie horen das hier :)

Jetzt mitmachen!

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