2 Clips zusammenfügen die unterschiedliche ...

  • Hallo,

    Wie kann man 2 Clips in Avisynth zusammenfügen die zwar das gleiche Format aber jeweils unterschiedliche "Crops", "Borders" und jeweils mehrere "Trims" haben ?
    Natürlich könnte man 2 AVS-Files erstellen und über ein Drittes die Importfunktion verwenden. Aber geht das auch direkt mit nur einem AVS-File ?

    Gruß Gunnar

  • Solange Auflösung, Farbraum und Framerate gleich sind sollte das einfach mit +/++ bzw alignedsplice/unalignedsplice gehen.

    Oder sehe ich das Problem nicht?

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Müsste doch einfach so gehen:

    Code
    clip_a = addborder().crop().trim().AVISource("foo.avi")
    clip_b = addborder().crop().trim().AVISource("bar.avi")
    clip_a ++ clip_b

    Zwei Doofe, ein Gedanke. Bloß einer war schneller... :(

    "Diejenigen, die grundlegende Freiheiten aufgeben würden, um geringe vorübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit."
    Benjamin Franklin (1706-1790)

    Meine Erfahrungen in der Open Source-Welt: blog.bugie.de

  • Genau so habe ich es ausprobiert. Es hat auch soweit geklappt bis auf "trim". Da wurde nur der erste "trim" ausgeführt. Bei z.B. trim()+trim()+trim() kam eine Fehlermeldung. Statt "AVISource" verwende ich "DirectShowSource".

    Gruß Gunnar

  • So sieht das Script aus: (Capture mit Crop 672x544)

    SetMemoryMax(256)
    V1 = Crop(0,56,672,428).AddBorders(16,72,16,76).Trim(5718,10134).DirectShowSource("clip1.avi",pixel_type="YUY2",fps=25)
    V2 = AddBorders(16,16,16,16).Trim(302,957)+Trim(3053,3519)+Trim(3846,5269)+Trim(19459,20355).DirectShowSource("Clip2.avi",pixel_type="YUY2",fps=25)
    V1 ++ V2

    Fehlermeldung: Invalid arguments tu function "Crop"

  • Ist ja auch exakt falsch herum!

    Zuerst die Source. Dahinter die Operationen, die damit angestellt werden sollen.

    Ansonsten fängt er doch (wenn er keine Fehlermeldung gebracht hätte) an, "nichts" zu croppen, das gecroppte "nichts" mit Rahmen zu versehen, "nichts" zu trimmen - das dann wegzuwerfen und ein Video zu laden.

    Soweit klar?

    Code
    SetMemoryMax(256)V1 = AviSource("clip1.avi",pixel_type="YUY2").Crop(0,56,672,428).AddBorders(16,72,16,76).Trim(5718,10134)V2 = AviSource("Clip2.avi",pixel_type="YUY2").AddBorders(16,16,16,16).Trim(302,957)+Trim(3053,3519)+Trim(3846,5269)+Trim(19459,20355)V1 ++ V2


    Ich bin allerdings nicht sicher, ob V2 funktioniert, wenn man da implizit schon gleich beim Laden mehrere Trims aneinander hängt. Würde ich wohl eher zweistufig machen. Vor allem die Reihenfolge der Abarbeitung ist ja hier wichtig. Man vergleiche mal die Wirkung von

    ( AviSource("Clip2.avi",pixel_type="YUY2").AddBorders(16,16,16,16).Trim(302,957) ) + Trim(3053,3519)+Trim(3846,5269)+Trim(19459,20355)

    und

    AviSource("Clip2.avi",pixel_type="YUY2").AddBorders(16,16,16,16). ( Trim(302,957)+Trim(3053,3519)+Trim(3846,5269)+Trim(19459,20355) )

    Welche Variante wird AviSynth wohl versuchen? Dann doch besser eindeutig:

    Code
    SetMemoryMax(256)
    V1 = AviSource("clip1.avi",pixel_type="YUY2").Crop(0,56,672,428).AddBorders(16,72,16,76).Trim(5718,10134)
    V2 = AviSource("Clip2.avi",pixel_type="YUY2").AddBorders(16,16,16,16)
    V2 = Trim(V2,302,957)+Trim(V2,3053,3519)+Trim(V2,3846,5269)+Trim(V2,19459,20355)
    V1 ++ V2
  • Zitat von LigH

    Ist ja auch exakt falsch herum!



    Ich weiß, habe es einfach mal so übernommen wie es oben geschrieben steht. Anders herum hatte ich es auch probiert. Es scheiterte immer an mehreren Trimbefehlen. Aber deinen Tip werde ich ausprobieren. Danke dafür.

    Gruß Gunnar

Jetzt mitmachen!

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