<div dir="ltr">Thanks a lot Nicolas. I briefly skimmed the doc and examples and it does offer such functionality.<br>There is an interface allowing to set a video track for a timeline:<br><br>GESTrack* video_track = GES_TRACK(ges_video_track_new());<br>ges_timeline_add_track(timeline, video_track);<br><br>Then I can link the video_track static src pad to some other element's sink, for instance ->videoconvert->autovideosink<br><br>auto v_src_pad = ges_timeline_get_pad_for_track(timeline, video_track);<br>auto v_convert_sink_pad = gst_element_get_static_pad(videoconvert, "sink");<br>gst_pad_link(v_src_pad, v_convert_sink_pad);<br><br>If I understand correctly the autovideosink would display the overlapped videos from multiple layers as mixed together. However I would need to obtain an independent appsink-based access to each video, or an independent appsink-based access to each layer. Is something like that possible?<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 30, 2022 at 2:40 PM Nicolas Dufresne <<a href="mailto:nicolas@ndufresne.ca" target="_blank">nicolas@ndufresne.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Le samedi 29 janvier 2022 à 00:30 +0100, Tomasz Mikolajczyk a écrit :<br>
> Thank you. Could you tell if something like that is doable in gstreamer<br>
> itself?  If yes, could you explain here how to achieve it? I just need to play<br>
> two sources together but both starting with different offset. Thank you in<br>
> advance.<br>
<br>
GES is implemented using GStreamer, so the answer is yes. You can read GES code,<br>
specially the NLE set of GstElement if you need to learn how this is done. It is<br>
non-trivial though, hence why there is a library with elements to solve this.<br>
<br>
> <br>
> On Tue, Jan 25, 2022 at 4:55 PM Nicolas Dufresne <<a href="mailto:nicolas@ndufresne.ca" target="_blank">nicolas@ndufresne.ca</a>> wrote:<br>
> > Le lundi 24 janvier 2022 à 02:18 +0100, Tomasz Mikolajczyk via gstreamer-<br>
> > devel a écrit :<br>
> > > Hi,<br>
> > > <br>
> > > I would like to use gstreamer to play multiple sources (for instance two<br>
> > > video files) simultaneously using a single pipeline but each video<br>
> > > starting from a different position, for instance first video from the<br>
> > > beginning and the second from the middle. Could someone guide me on how to<br>
> > > achieve it? <br>
> > > Simplifying, my pipeline is an equivalent of:<br>
> > <br>
> > <br>
> > This use case is better handled by GES, which offers ges-launch-1.0 command<br>
> > line to test.<br>
> > <br>
> > <a href="https://gstreamer.freedesktop.org/documentation/gst-editing-services/?gi-language=c" rel="noreferrer" target="_blank">https://gstreamer.freedesktop.org/documentation/gst-editing-services/?gi-language=c</a><br>
> > <br>
> > > gst-launch-1.0 \<br>
> > > uridecodebin<br>
> > > uri=file:///Users/tmikolaj/Downloads/videoalpha_video_dancer1.webm !<br>
> > > videoconvert ! autovideosink \<br>
> > > uridecodebin<br>
> > > uri=file:///Users/tmikolaj/Downloads/videoalpha_video_dancer1.webm !<br>
> > > videoconvert ! autovideosink<br>
> > > <br>
> > > , but created programmatically.<br>
> > > Obviously, a simple pipeline's seeking seeks two files at once.<br>
> > > I was trying to register a probe of the GST_PAD_PROBE_TYPE_EVENT_UPSTREAM<br>
> > > type from inside the "pad-added" signal callback of the "uridecodebin"<br>
> > > element. Inside the probe I wanted to catch the "GST_EVENT_SEEK" event and<br>
> > > drop it for the first video. However, it seems that dropping the SEEK<br>
> > > message leaves the pipeline in a "PAUSED" state and even an explicit state<br>
> > > change to "PLAYING" does nothing.<br>
> > > Does anybody have some hints on how to solve that problem?<br>
> > > Regards,<br>
> > > Tomasz<br>
> > <br>
> > <br>
<br>
</blockquote></div>