I am struggling to find a clean example for how to achieve a crossfade.
I have a layer which contains two clips of type GESSourceClip:
Now I want a 2 second crossfade from "a" to "b" ... but how? Do I create a GESTransitionClip and insert it into the layer between "a" and "b"? What about the timings. Do I keep the timings for "a" and "b" unchanged, but set the transition clip as follows?
Is it okay for the GESTransitionClip to overlap with GESSourceClip with respect to time? _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hello David, Transitions happen between 2 overlapping clips so you need to make sure clips overlap at the point where you add them. Alternatively, you can use the GESTimeline::auto-transition property to automatically create transitions when 2 clips overlap. Regards, Thibault On Wed, Feb 20, 2019, 17:47 David Ing <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Thibault, you said "Transitions happen between 2 overlapping clips". Do you mean two clips within the same layer? Are you saying that this will achieve a 2-second crossfade from a --> b? Layer 1:
On Wed, Feb 20, 2019 at 1:37 PM Thibault Saunier <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Wed, Feb 20, 2019, 18:44 David Ing <[hidden email]> wrote:
That is correct yes :)
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Thank you! On Wed, Feb 20, 2019 at 2:00 PM Thibault Saunier <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
What if I did not want a transition between two clips "a" and "b", but instead I want clip "a" to transition into whatever the lower-priority layers had drawn? On Wed, Feb 20, 2019 at 2:12 PM David Ing <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Then you should keyframe the alpha child property of the source :) On Wed, Feb 20, 2019, 20:26 David Ing <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
I don't know how to do that. On Wed, Feb 20, 2019 at 3:59 PM Thibault Saunier <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
I knew it :-)
Just pushed a simple example in python: https://gitlab.freedesktop.org/gstreamer/gst-editing-services/blob/master/examples/python/keyframes.py You should be able to extrapolate for any language you use (also I would be happy to review the port of that example to that language ;)) Thibault. On Thu, Feb 21, 2019 at 1:56 PM David Ing <[hidden email]> wrote: > > I don't know how to do that. > > On Wed, Feb 20, 2019 at 3:59 PM Thibault Saunier <[hidden email]> wrote: >> >> Then you should keyframe the alpha child property of the source :) >> >> On Wed, Feb 20, 2019, 20:26 David Ing <[hidden email]> wrote: >>> >>> What if I did not want a transition between two clips "a" and "b", but instead I want clip "a" to transition into whatever the lower-priority layers had drawn? >>> >>> On Wed, Feb 20, 2019 at 2:12 PM David Ing <[hidden email]> wrote: >>>> >>>> Thank you! >>>> >>>> On Wed, Feb 20, 2019 at 2:00 PM Thibault Saunier <[hidden email]> wrote: >>>>> >>>>> >>>>> >>>>> On Wed, Feb 20, 2019, 18:44 David Ing <[hidden email]> wrote: >>>>>> >>>>>> Thibault, you said "Transitions happen between 2 overlapping clips". Do you mean two clips within the same layer? >>>>>> >>>>>> >>>>>> Are you saying that this will achieve a 2-second crossfade from a --> b? >>>>>> >>>>>> Layer 1: >>>>>> >>>>>> GESSourceClip a >>>>>> >>>>>> starts at 0 seconds >>>>>> ends at 11 seconds >>>>>> >>>>>> GESTransitionClip c >>>>>> >>>>>> starts at 9 seconds >>>>>> >>>>>> ends at 11 seconds >>>>>> >>>>>> GESSourceClip b >>>>>> >>>>>> starts at 9 seconds >>>>>> ends at 20 seconds >>>>> >>>>> >>>>> That is correct yes :) >>>>>> >>>>>> >>>>>> On Wed, Feb 20, 2019 at 1:37 PM Thibault Saunier <[hidden email]> wrote: >>>>>>> >>>>>>> Hello David, >>>>>>> >>>>>>> Transitions happen between 2 overlapping clips so you need to make sure clips overlap at the point where you add them. >>>>>>> >>>>>>> Alternatively, you can use the GESTimeline::auto-transition property to automatically create transitions when 2 clips overlap. >>>>>>> >>>>>>> Regards, >>>>>>> >>>>>>> Thibault >>>>>>> >>>>>>> On Wed, Feb 20, 2019, 17:47 David Ing <[hidden email]> wrote: >>>>>>>> >>>>>>>> I am struggling to find a clean example for how to achieve a crossfade. >>>>>>>> >>>>>>>> I have a layer which contains two clips of type GESSourceClip: >>>>>>>> >>>>>>>> GESSourceClip a >>>>>>>> >>>>>>>> starts at 0 seconds >>>>>>>> ends at 9.999999999 seconds >>>>>>>> >>>>>>>> GESSourceClip b >>>>>>>> >>>>>>>> starts at 10 seconds >>>>>>>> ends at 20 seconds >>>>>>>> >>>>>>>> >>>>>>>> Now I want a 2 second crossfade from "a" to "b" ... but how? >>>>>>>> >>>>>>>> Do I create a GESTransitionClip and insert it into the layer between "a" and "b"? >>>>>>>> >>>>>>>> What about the timings. Do I keep the timings for "a" and "b" unchanged, but set the transition clip as follows? >>>>>>>> >>>>>>>> starts at 9 seconds >>>>>>>> ends at 11 seconds >>>>>>>> >>>>>>>> Is it okay for the GESTransitionClip to overlap with GESSourceClip with respect to time? >>>>>>>> _______________________________________________ >>>>>>>> gstreamer-devel mailing list >>>>>>>> [hidden email] >>>>>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel >>>>>>> >>>>>>> _______________________________________________ >>>>>>> gstreamer-devel mailing list >>>>>>> [hidden email] >>>>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel >>>>>> >>>>>> _______________________________________________ >>>>>> gstreamer-devel mailing list >>>>>> [hidden email] >>>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel >>>>> >>>>> _______________________________________________ >>>>> gstreamer-devel mailing list >>>>> [hidden email] >>>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel >>> >>> _______________________________________________ >>> gstreamer-devel mailing list >>> [hidden email] >>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel >> >> _______________________________________________ >> gstreamer-devel mailing list >> [hidden email] >> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Amazing ... I had no idea that Gstreamer could interpolate parameters like that. I don't want to burden you with a code review ... it wouldn't be practical anyway. Your python example is very clear ... I can just extrapolate from that. Thank you! On Thu, Feb 21, 2019 at 11:12 AM Thibault Saunier <[hidden email]> wrote: I knew it :-) _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |