how to change sources while pipeline is on PLAYING state?

Lautaro Woites lauchapc87 at gmail.com
Tue Sep 17 18:53:12 PDT 2013


Thanks guys,

As far as I know  Gnonlin and GES will not work for me. I want to change
dynamically and arbitrary the pipeline. Please, you correct me if I'm wrong.
I've not found streamsynchronizer for gst 0.10.36 neither.

I've tried
http://gstreamer-devel.966125.n4.nabble.com/change-quot-location-quot-of-filesrc-element-without-breaking-tcpserversink-connection-tt4661248.html#a4661273
.
This approach almost works in my's home PC (gentoo 64bit core i5 4gb ram)
the src is changing but the videos start seeked at the current running time.
In my work's PC (ubuntu 12.04 32bit core2duo 4GB RAM) the pipeline freezed
completly when I stopped the filesrc/decoder.
Another thing about this is that I Discarded the EOS, FLUSH_START,
FLUSH_STOP and NEWGEMENT events but with GST_DEBUG=queue2:5
the queue seems to not discard the newgsegment events.
Also the videotestsrc approach that I described above (blocking the pad,
sending EOS and so)  works in my home's PC but
 freezed almost every time in my work's PC. Also, this didn't work with
filesrc.

What is the correct approach to do this? What can I read in order to make
it work?
Maybe I have to check the source code of gnonlin.

Note: I'm using gstreamer 0.10.36 and gstpython in both PCs
Note 2: I've read on the list that the only way to do this correctly is
using gnonlin (i've asked this before) but also I've read that can be maded
with the approach described above and i've been trying to make it work.
Sorry if I'm insistent but i really want to know  this certainly.

Thanks for your replies, I've really apreciated it .


2013/9/14 Tonu Jaansoo <chain at bsd.ee>

> Hi!
>
> Seems something similar that I have encountered.
> Try to unlink all removed elements, remove them from pipeline. Use
> gst_element_sync_state_with_parent(new_element) right after linking new
> elements.
>
> Tonu.
>
> On Sep 14, 2013, at 7:01 PM, Tim-Philipp Müller <t.i.m at zen.co.uk> wrote:
>
> > On Wed, 2013-09-11 at 14:01 -0300, Lautaro Woites wrote:
> >
> > Hi,
> >
> >> I'm using gstreamer 0.10.36 and I have a pipeline like this:
> >>
> >> filesrc ! decodebin2 ! valve ! queue2, ! videorate ! video_scale !
> >> xvimagesink
> >>
> >> I'm trying to change the filesrc/decoder when the pipeline is on
> >> PLAYING state. I've tried the following:
> >>
> >> 1) create the new filesrc and decoder
> >>
> >> 2) close the valve
> >>
> >> 3) set filesrc and decoder on NULL state
> >>
> >> 4) remove the filesrc and decoder from the pipeline
> >>
> >> 5) add the new filesrc and decoder to the pipeline
> >>
> >> 6) link them and set to playing
> >>
> >> This doesn't work for me (the video freezes when I remove the
> >> filesrc).
> >>
> >> I've also tried to send a FLUSH_STOP event before step 6). This work
> >> better but:
> >>
> >> * The sources have started to change but they hasn't started from the
> >> beginning. For example, if I change the filesrc in second 10, the new
> >> filesrc starts playing from second 10.
> >>
> >> * and almost in every source change  the video freezes notoriously
> >>
> >> I still don't know if this the correct/standard way to do this. Can
> >> someone help me?
> >
> > You could have a look at gstreamer editing services and/or gnonlin.
> >
> > There's also a streamsynchronizer element in the playback plugin in
> > -base, but if I remember correctly it's not exposed in 0.10, only in
> > 1.x. But it's what playbin uses internally for gapless playback.
> >
> > Cheers
> > -Tim
> >
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20130917/197dd5c9/attachment.html>


More information about the gstreamer-devel mailing list