Probs mit mask und layer

  • Kann mir jemand sagen, ob die Layer-Funktion in avisynth 2.54 korrekt arbeitet? In der Dokumentation steht ja, dass diese Funktion in der 2.5er Version noch nicht richtig funktionieren soll. Stimmt das?
    Ich habe dahingehend folgende Erfahrungen gemacht:
    Alles funzt prima, solange Ausgangsclip, überlagernder Clip und Maskenclip die gleiche Bilddimension haben z.B. 720*576.
    Sind aber z.B. überlagernder Clip und Maskenclip von der Dimension her kleiner als der Ausgangsclip, so bekomme ich nur Garbage heraus, d.h. es funktioniert zwar schon, aber das Resultat sieht so aus, als hätte ich eine völlig andere Maske verwendet. Ich habe da jedenfalls nicht wirklich die verwendete Maske wiedererkennen können.
    Es kann natürlich auch sein, dass irgendwo im Script noch ein Bock drin ist.
    Hat denn jemand schon ähnliches beobachten können?

    Die Overlay-Funktion funktioniert übrigens einwandfrei, scheint aber deutlich lansamer zu sein als die Kombi aus mask und layer (trotz der vorher nötigen Umwandlung der Clips nach RGB32).

  • Zitat

    Die Overlay-Funktion funktioniert übrigens einwandfrei, scheint aber deutlich lansamer zu sein als die Kombi aus mask und layer (trotz der vorher nötigen Umwandlung der Clips nach RGB32).

    Wirklich?

    Uber Layer: Layer functioniert, aber nicht correct in YV12.

  • Danke erstmal.
    Hm, dann muss wohl irgend etwas falsch sein in meinem Script. Die Ausganssituation ist folgende:
    Ich habe ein Hintergrundbild (720*576, jpeg-Bild), eine Maske (720*576, jpeg-Bild) und einen Clip zum Überlagern (688*560, MJPEG-avi).
    Das Script sieht wie folgt aus:

    BackGround=Imagereader("D:\bg.jpg",0,0,25).loop(500).ConverttoRGB32()
    BackGround=Crop(BackGround,94,186,294,265)
    Maske=Imagereader("D:\mask.jpg",0,0,25).loop(500).ConverttoRGB32().Invert("RGB")
    Maske=Crop(Maske,94,186,294,265)
    Clip1=AviSource("D:\film.avi").ConverttoRGB32().Trim(16000,-500) #.AddBorders(16,8,16,8)
    Clip1=Crop(Clip1,94,186,294,265)
    alpha=mask(Clip1,Maske)
    layer(Background,alpha,level=255,op="add")
    return(last)

    Ergebnis: Müll
    Wird die Raute vor AddBorders entfernt ist das Ergebnis OK.
    Es kommt aber noch besser:
    Wenn ich die Clips "Maske" und "Clip1" vorher erzeuge, also mit Avisynth & Virtualdub die avi`s gleich in der richtigen Göße erstelle (294*265, MJPEG-Codec), dann ist das Resultat OK!
    Das Script sieht dann einfach so aus:

    BackGround=Imagereader("D:\bg.jpg",0,0,25).loop(500).ConverttoRGB32()
    BackGround=Crop(BackGround,94,186,294,265)
    Maske=Avisource("D:\maske_neu.avi").ConverttoRGB32()
    Clip1=Avisource("D:\clip1_neu.avi").ConverttoRGB32()
    alpha=mask(Clip1,Maske)
    layer(Background,alpha,level=255,op="add")
    return(last)

    Ich habe auch noch andere Scripte probiert und zwar Kombinationen aus dem ersten und zweiten (d.h. einen der beiden Clips (Maske oder Clip1) vorher erzeugt, den Anderen durch Cropping erst im Script - es kam immer Müll heraus, in einem Fall sogar "access violation". Es hängt irgendwie mit dem Cropping zusammen, aber ich seh den Fehler nicht.
    Hilfe!

Jetzt mitmachen!

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