How to segment seek in dynamic pipeline

Thibault Saunier tsaunier at gnome.org
Tue Sep 1 15:14:38 UTC 2020


Hi,

answering in-line.

Thank you, I try like this:
> ges-launch-1.0  \
>     +clip ./poc_backgroup.mp4  layer=2 \
>     +clip ./poc_backgroup.mp4  inpoint=2 duration=3  layer=1 set-posx 100
> set-posy 100 set-width 200 set-height 200 +effect "agingtv" \
>     +clip ./shoe.mp4  inpoint=7  duration=2  layer=0 set-posx 400 set-posy
> 400 set-width 200 set-height 200 \
>     --outputuri=file:////home/qingfu.cqf/gst-poc/hi.mp4  -e
> video/quicktime:x264enc:audio/x-opus
> It worked fine.
>
> I have some other queuestion:
> 1.How can I use nvdec for decoder?
>

Well, you should make sure it has the highest rank so it is picked.


> 2. I need to implement some filter between clips, such as clip 1's alpha
> change from 255 -> 0 and clip 2's alpha change from 0 -> 255 in 3 seconds,
> how can I do that by ges?
>

You can interpolate the `alpha` child property of the video source, you can
find an example here:

https://github.com/cfoch/GESSamples/blob/master/interpolation/interpolation.py


> 3. for appsrc:// do you have some more example? I don't understand .
>

I do not think we have an example for that but it is doable.


> After some tests, I find that I can't use gst_element_seek() for seek for
> multiple input souce,
>
Maybe I can use gessrc as a gstelement to build the pipeline? such as:
>
> gessrc(backgroup.mp4 9-15s) -- \
>                                                   -------------> mixer
> -->encoder...
> gessrc(fga.mp4 3-8s)             --- /
>

GES mixes the layers, so if I understand correctly what you are trying to
do, what you want is something like:

```
ges-launch-1.0 \
    +clip fga.mp4 inpoint=3.0 duration=5.0 layer=0 # foreground layer \
    +clip background.mp4 inpoint=9.0 duration=6.0 layer=1 # background layer
 ```

You will need to write a small program to replicate that timeline to be
able to interpolate the alpha.

- Thibault

Thibault Saunier-4 wrote
> > Hi,
> >
> > On Sun, Aug 30, 2020 at 9:57 PM xmufzy <
>
> > xmufzy@
>
> > > wrote:
> >
> >> Thank you , I known it's easier with ges, but I don't known how to
> change
> >> the
> >> encoder to nvenc, and hown can I export the data from ges to app sink,
> or
> >> import data from appsrc.
> >>
> >
> > You can check the EncodingProfile[0] API to enforce a certain encoder, on
> > the command line you could even do for example
> > `video/quicktime:nvenc:audio/x-opus`.
> >
> > You can set your sinks as you would do with `playbin` if you use
> > GESPipeline, or you can use GESTimeline as any bin if you need more
> > control. For appsrc you can use the `appsrc://` protocol for your clips
> > and
> > then work from there, or you can subclass `GES[Video|Audio]Source` to
> > implement exactly what you need.
> >
> > - Thibault
> >
> > [0]
> >
> https://gstreamer.freedesktop.org/documentation/pbutils/encoding-profile.html
> >
> >
> >> Nicolas Dufresne-5 wrote
> >> > Le jeudi 27 août 2020 à 08:14 -0500, xmufzy a écrit :
> >> >> If we can do 2 segment seek for the element
> >> >>
> >> >>
> >> >> pipeline change  :
> >> >> filesrc(backgroup.mp4) --> qtdemux --> h264dec --> queue --\
> >> >>
> >>
> >> >> --> mixer -->x264enc --> filesink
> >> >> filesrc(fga.mp4) --> qtdemux --> h264dec -->queue ---------/
> >> >>
> >> >> if I need mix fga.mp4 3~8s, and backgroup.mp4 9~14s, I try to use 2
> >> >> gst_element_seek(SEGMENT)  for that, but failed
> >> >
> >> > This is easier done with ges-launch-1.0 (from gst-editing-services).
> >> >
> >> > ges-launch-1.0 +clip background.mp4 inpoint=9.0 duration=5.0 \
> >> >                +clip fga.mp4 inpoint=3.0 duration=5.0 \
> >> >                --smart-rendering --outputuri=file:///tmp/test.mp4
> >> >
> >> > You can live preview the edit by removing the render options (last
> >> > line).
> >> >
> >> >>
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> >> >> _______________________________________________
> >> >> gstreamer-devel mailing list
> >> >>
> >>
> >> > gstreamer-devel at .freedesktop
> >>
> >> >> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >> >
> >> > _______________________________________________
> >> > gstreamer-devel mailing list
> >>
> >> > gstreamer-devel at .freedesktop
> >>
> >> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >>
> >>
> >>
> >>
> >>
> >> --
> >> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> >> _______________________________________________
> >> gstreamer-devel mailing list
> >>
>
> > gstreamer-devel at .freedesktop
>
> >> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >>
> >
> > _______________________________________________
> > gstreamer-devel mailing list
>
> > gstreamer-devel at .freedesktop
>
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200901/ca205a72/attachment.htm>


More information about the gstreamer-devel mailing list