how to change sources while pipeline is on PLAYING state?
Tim-Philipp Müller
t.i.m at zen.co.uk
Sat Sep 14 09:01:39 PDT 2013
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
More information about the gstreamer-devel
mailing list