[gst-devel] Re : question on seek

Andoni Morales ylatuya at gmail.com
Wed Apr 8 13:56:03 CEST 2009


2009/4/8 Albert Costa <costa_albert at yahoo.fr>:
> Hi Andoni,
> thanks for the tip. In fact, the seek itself is running fine, once it is
> active. My issue is that the pipeline starts playing from 0 before the seek
> really occurs, thus displaying a few frames before it moves to expected
> position. I've tried to seek before setting the pipeline
> to GST_STATE_PLAYING (put the pipe in GST_STATE_PAUSED, then seek, then set
> to GST_STATE_PLAYING) but it doesn't work. Is there a way to position the
> stream to a given seek pos before it actually starts to play?

So, If I understood, you want to open a file and start playing at a
given position, don't you?
I had to implement something like this, a king of playlist, but with
video segments from different video files. After the file switch, you
have to wait until the pipeline is in READY state, and then you post
the seek event;

GstState cur_state;
do{
      gst_element_get_state (bvw->priv->play, &cur_state, NULL, 0);
}while(cur_state <= GST_STATE_READY);
gst_element_seek (bvw->priv->play, 1.0,
      	GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SEGMENT |
GST_SEEK_FLAG_ACCURATE,
      	GST_SEEK_TYPE_SET, start * GST_MSECOND,
      	GST_SEEK_TYPE_SET, stop * GST_MSECOND);
gst_element_set_state(bvw->priv->play, GST_STATE_PLAYING);

Andoni Morales

> Al
> ________________________________
> De : Andoni Morales <ylatuya at gmail.com>
> À : Discussion of the development of GStreamer
> <gstreamer-devel at lists.sourceforge.net>
> Envoyé le : Mercredi, 8 Avril 2009, 12h27mn 41s
> Objet : Re: [gst-devel] question on seek
>
> 2009/4/8 Albert Costa <costa_albert at yahoo.fr>:
>> Hi All,
>> I have a simple question: I have an application where I want to display
>> only
>> a subset of a video. My pipeline can be resumed to 'filesrc ! decodebin !
>> ffmegcolorspace ! queue ! directdrawsink'. To see only a part of the
>> video,
>> I use following :
>> GstEvent* seek_event;
>> seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
>>                 (GstSeekFlags) (GST_SEEK_FLAG_SEGMENT |
>> GST_SEEK_FLAG_FLUSH),
>>                 GST_SEEK_TYPE_SET, start_time,
>>                 GST_SEEK_TYPE_SET, stop_time);
>>               gst_element_set_state(m_pipeline, GST_STATE_PLAYING);
>>               gst_element_get_state(m_pipeline, NULL, NULL,
>> GST_CLOCK_TIME_NONE);
>>               gst_element_send_event(m_pipeline, seek_event);
>> where start/stop_time are values for the start and end positions in my
>> file.
>> Everything works fine, except for the fact that just before displaying the
>> video at position start (and then playing up to stop position), I do see
>> the
>> first (0) frame of the video.
>> Is there a way to avoid this and have the pipeline really starting from
>> the
>> position I want?
>
> Maybe using this method is simpler:
>
> gst_element_seek (m_pipeline, 1.0,
>           GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
>           GST_SEEK_TYPE_SET, start_time,
>           GST_SEEK_TYPE_SET, stop_time);
>
> If you want accuracy in the seek, you should use the flag
> GST_SEEK_FLAG_ACCURATE. The seek  is slower but much more accurate.
>
> Andoni
>
>> Regards,
>> Al
>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by:
>> High Quality Requirements in a Collaborative Environment.
>> Download a free trial of Rational Requirements Composer Now!
>> http://p.sf.net/sfu/www-ibm-com
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>>
>>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by:
> High Quality Requirements in a Collaborative Environment.
> Download a free trial of Rational Requirements Composer Now!
> http://p.sf.net/sfu/www-ibm-com
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by:
> High Quality Requirements in a Collaborative Environment.
> Download a free trial of Rational Requirements Composer Now!
> http://p.sf.net/sfu/www-ibm-com
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>
>




More information about the gstreamer-devel mailing list