2 Bilder mit Alphakanal einfügen auf mein Video für paar Sekunden.

  • Ich weiß zwar wie man per Overlay ein Wasserzeichen einbaut, welches übers gesamte Video läuft, aber leider nicht, wie man ein Bild einfügt, welches nur eine bestimmte Zeit da sein soll.

    Ich bräuchte nämlich gerade 2 Bilder eingefügt auf mein Video die beide Alphakanal haben.

    Die sollen die ersten 15sek beide im Video auftauchen und danach verschwinden.

    Kann mir vllt einer helfen dabei?

    Die Bilder sind in PNG und ich benutze AVISource für mein Video.

  • Code
    video = AVISource("g:\Lets Play Descent 2\d2x-rebirth 2012-11-11 12-45-11-394.avi", audio=false).AssumeFPS(30,1)
    Logo = ImageSource("d:\XVideos\cooltext820031346.png", fps=Video.FrameRate, end=450, pixel_type="rgb32")
    Overlay(video, Logo, x=0, y=0, Mask=Logo.ShowAlpha().FadeOut(100, 0, Video.FrameRate), opacity=1.0, mode="add")
    ConvertToYV12()

    So hab ichs nun mit einem Bild hinbekommen. Aber ich kriegs zum Teufel nicht hin da mein 2. Bild rein zu kriegen :/

  • So wie du das umgesetzt hast, müsstest du das zweite Wasserzeichen über eine Doppel-Verwendung von Overlay einbauen:

    Code
    video = AVISource("g:\Lets Play Descent 2\d2x-rebirth 2012-11-11 12-45-11-394.avi", audio=false).AssumeFPS(30,1)
    Logo = ImageSource("d:\XVideos\cooltext820031346.png", fps=Video.FrameRate, end=450, pixel_type="rgb32")
    Logo2 = ImageSource("d:\Pfad_zur\Datei.png", fps=Video.FrameRate, end=450, pixel_type="rgb32")
    Overlay(Overlay(video, Logo, x=0, y=0, Mask=Logo.ShowAlpha().FadeOut(100, 0, Video.FrameRate), opacity=1.0, mode="add"), Logo2, x=0, y=0, Mask=Logo2.ShowAlpha().FadeOut(100, 0, Video.FrameRate), opacity=1.0, mode="add")
    ConvertToYV12()

    Ist aber meiner Meinung nach eher suboptimal. Warum nicht (wie vorgeschlagen) ApplyRange oder halt Trim benutzen? Damit wird Overlay wenigstens nicht auf das gesamte Video angewandt. Wobei ich aber auch nicht weiß, ob und wie stark sich Overlay auf Geschwindigkeit und Bildqualität auswirkt -> allerdings bezweifle ich ein wenig, dass die Frames ohne Wasserzeichen komplett unverändert daraus hervor gehen... weshalb eben ein Durchreichen dieser Frames sinnvoller wäre.

    Zudem frage ich mich:
    Wenn die beiden PNGs absolut zeitgleich ein- und ausgeblendet werden sollen, warum machst du aus den beiden PNGs nicht ein einziges??? Das erspart dann zusätzlich die Doppel-Benutzung von Overlay.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Um zu verstehen, wie das Verhältnis zwischen Video und Overlays sein soll, muss eben ein ganzes Stück genauer erklärt werden (z.B.: Overlay 1 von Frame A bis Frame B mit x Frames Ein- und Ausblende; Overlay 2 von Frame C bis Frame D mit y Frames Ein- und Ausblende).

    Fakten, Fakten, Fakten... und immer an die Helfer denken, was die eventuell nicht wissen könnten. ;D

  • So wie du das umgesetzt hast, müsstest du das zweite Wasserzeichen über eine Doppel-Verwendung von Overlay einbauen


    Ah so kann man also Overlay mehrfach benutzen. Das war genau das, was ich einfach nicht hinbekommen habe wie das gehen soll ;D

    Ist aber meiner Meinung nach eher suboptimal. Warum nicht (wie vorgeschlagen) ApplyRange oder halt Trim benutzen?


    Weil ich den ApplyRange Filter irgendwie in keinsterweise verstehe. Vllt mal ein Anwendungsbeispiel? Auch weiß ich nicht wie ich dann wo, wann, wie Trim einsetzen soll.

    Zudem frage ich mich:
    Wenn die beiden PNGs absolut zeitgleich ein- und ausgeblendet werden sollen, warum machst du aus den beiden PNGs nicht ein einziges??? Das erspart dann zusätzlich die Doppel-Benutzung von Overlay.

    Das hatte zu viel Logik, danke :D

    Dennoch wäres halt mal interessant zu wissen, wie es eben mit mehreren Bildern ist, sprich wenns mal nicht zeitgleich ist und ich 2 Bilder benötige.

  • Weil ich den ApplyRange Filter irgendwie in keinsterweise verstehe. Vllt mal ein Anwendungsbeispiel?


    Das hier:

    Code
    video = AVISource("g:\Lets Play Descent 2\d2x-rebirth 2012-11-11 12-45-11-394.avi", audio=false).AssumeFPS(30,1)Logo = ImageSource("d:\XVideos\cooltext820031346.png", fps=Video.FrameRate, end=450, pixel_type="rgb32")Overlay(video, Logo, x=0, y=0, Mask=Logo.ShowAlpha().FadeOut(100, 0, Video.FrameRate), opacity=1.0, mode="add")ConvertToYV12()


    ... ist identisch mit:

    Code
    video = AVISource("g:\Lets Play Descent 2\d2x-rebirth 2012-11-11 12-45-11-394.avi", audio=false).AssumeFPS(30,1)Logo = ImageSource("d:\XVideos\cooltext820031346.png", fps=Video.FrameRate, end=450, pixel_type="rgb32")ApplyRange(Video, 0, 450, "Overlay", Logo, 0, 0, Logo.ShowAlpha().FadeOut(100, 0, Video.FrameRate), 1.0, "add")ConvertToYV12()


    Nur wird bei letzterem Overlay allein auf die ersten 450 Frames angewandt und die restlichen Frames werden unverändert durchgereicht... während bei ersterem Overlay auf das komplette Video angewandt wird (OBWOHL das Wasserzeichen nur die ersten 450 Frames zu sehen ist).


    Auch weiß ich nicht wie ich dann wo, wann, wie Trim einsetzen soll.


    Na z.B. so (oder ähnlich):

    Code
    video = AVISource("g:\Lets Play Descent 2\d2x-rebirth 2012-11-11 12-45-11-394.avi", audio=false).AssumeFPS(30,1)
    Logo = ImageSource("d:\XVideos\cooltext820031346.png", fps=Video.FrameRate, end=450, pixel_type="rgb32")
    Teil1 = Overlay(Video.Trim(0,450), Logo, x=0, y=0, Mask=Logo.ShowAlpha().FadeOut(100, 0, Video.FrameRate), opacity=1.0, mode="add")
    Teil2 = Video.Trim(451, 0)
    Komplett = Teil1++Teil2
    Return Komplett.ConvertToYV12()


    Du stückelst einfach per Trim das Video (das geht auch innerhalb einer Filter-Funktion - in diesem Fall z.B. innerhalb von Overlay) und fügst am Ende die Stücke wieder zusammen. Dadurch wird in diesem Fall Overlay ebenfalls nur auf die ersten 450 Frames angewandt (= Teil1), der Rest (Frame 451 bis zum Ende) wird unverändert vom Quellvideo übernommen (= Teil2) und am Ende alles per AlignedSplice (= ++) zusammengefügt.


    Dennoch wäres halt mal interessant zu wissen, wie es eben mit mehreren Bildern ist, sprich wenns mal nicht zeitgleich ist und ich 2 Bilder benötige.


    Na dann setzt du z.B. unter das oben genannte ApplyRange-Beispiel eine weitere ApplyRange(last, Startframe, Endframe, "Overlay", usw.) Zeile drunter. Oder du nutzt Trim und stückelst das Video halt in mehr als zwei Teile (z.B. 4 Teile: Teil1 enthält das erste Wasserzeichen, Teil2 enthält kein Wasserzeichen, Teil3 enthält das zweite Wasserzeichen & Teil4 geht bis zum letzten Frame und enthält wiederum kein Wasserzeichen).

    Nur wenn das zweite Wasserzeichen schon erscheinen soll, BEVOR das erste verschwindet (z.B. das erste Wasserzeichen soll von Frame Nr. 100 bis Frame Nr. 500 sichtbar sein und das zweite Wasserzeichen von Frame Nr. 200 bis Frame Nr. 600), DANN kommst du nicht drum herum, Overlay innerhalb von Overlay zu benutzen (wie halt hier im Beispiel).

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

    2 Mal editiert, zuletzt von Tom Keller (13. November 2012 um 17:22)

Jetzt mitmachen!

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