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