Loading... |
Reply to author |
Edit post |
Move post |
Delete this post |
Delete this post and replies |
Change post date |
Print post |
Permalink |
Raw mail |
44 posts
|
Hello, I am using the following code in my browser plugin to set position in video:
void OVIMediaPlayer::set_position(float percents) { gint64 position, length; GstFormat format = GST_FORMAT_TIME; gst_element_query_duration (pipeline, &format, &length); position = static_cast<gint64>(length * (percents * 0.01)); GstState state; gst_element_get_state(pipeline, &state, NULL, GST_CLOCK_TIME_NONE); gst_element_set_state(pipeline, GST_STATE_PAUSED); gst_element_seek(bin, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); gst_element_set_state(pipeline, state); return; } My pipeline contains playbin2 with directdraw video sink and plays video from http server. Server supports HTTP Range Headers. My function gets percents argument in range [0; 100] to set position of video. But after each call video begins from begging. _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Loading... |
Reply to author |
Edit post |
Move post |
Delete this post |
Delete this post and replies |
Change post date |
Print post |
Permalink |
Raw mail |
96 posts
|
On 19 May 2012 09:58, Kyrylo V Polezhaiev <[hidden email]> wrote:
> Hello, I am using the following code in my browser plugin to set position in video: > > void OVIMediaPlayer::set_position(float percents) > { > gint64 position, length; > GstFormat format = GST_FORMAT_TIME; > gst_element_query_duration (pipeline, &format, &length); > position = static_cast<gint64>(length * (percents * 0.01)); > GstState state; > gst_element_get_state(pipeline, &state, NULL, GST_CLOCK_TIME_NONE); > gst_element_set_state(pipeline, GST_STATE_PAUSED); > gst_element_seek(bin, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); > gst_element_set_state(pipeline, state); > return; > } > > My pipeline contains playbin2 with directdraw video sink and plays video from http server. Server supports HTTP Range Headers. My function gets percents argument in range [0; 100] to set position of video. But after each call video begins from begging. > ... [show rest of quote] May I ask why you are changing the state to paused and then setting it back again? The rest looks OK, so I'm puzzled by this. _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Loading... |
Reply to author |
Edit post |
Move post |
Delete this post |
Delete this post and replies |
Change post date |
Print post |
Permalink |
Raw mail |
96 posts
|
On 19 May 2012 11:53, Luis de Bethencourt <[hidden email]> wrote:
> On 19 May 2012 09:58, Kyrylo V Polezhaiev <[hidden email]> wrote: >> Hello, I am using the following code in my browser plugin to set position in video: >> >> void OVIMediaPlayer::set_position(float percents) >> { >> gint64 position, length; >> GstFormat format = GST_FORMAT_TIME; >> gst_element_query_duration (pipeline, &format, &length); >> position = static_cast<gint64>(length * (percents * 0.01)); >> GstState state; >> gst_element_get_state(pipeline, &state, NULL, GST_CLOCK_TIME_NONE); >> gst_element_set_state(pipeline, GST_STATE_PAUSED); >> gst_element_seek(bin, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); >> gst_element_set_state(pipeline, state); >> return; >> } >> >> My pipeline contains playbin2 with directdraw video sink and plays video from http server. Server supports HTTP Range Headers. My function gets percents argument in range [0; 100] to set position of video. But after each call video begins from begging. >> > > May I ask why you are changing the state to paused and then setting it > back again? > The rest looks OK, so I'm puzzled by this. ... [show rest of quote] Why is the GstElement 'pipeline' passed to all functions, except for the seek that is 'bin'? Can you check that you are really passing a [0-100] percent value? Considering you are passing that value as a float it might be [0-1] somewhere else. _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Loading... |
Reply to author |
Edit post |
Move post |
Delete this post |
Delete this post and replies |
Change post date |
Print post |
Permalink |
Raw mail |
44 posts
|
Thanks, Luis.
> Why is the GstElement 'pipeline' passed to all functions, except for > the seek that is 'bin'? I use pipeline as the first argument instead of playbin2 now. > May I ask why you are changing the state to paused and then setting it > back again? Okay, now I am removed this part. So now I have: gint64 position, length; GstFormat format = GST_FORMAT_TIME; gst_element_query_duration (pipeline, &format, &length); position = static_cast<gint64>(length * (percents * 0.01)); if (!gst_element_seek(pipeline, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) { MessageBoxA(0, "gst_element_seek failed", "Error", 0); } Just before gst_element_seek I have following values: length = 187623000000 position = 73124858969 percents = 38.974358 format = GST_FORMAT_TIME But now video still begins from start instead of from 73124858969. > On 19 May 2012 11:53, Luis de Bethencourt <[hidden email]> wrote: > > On 19 May 2012 09:58, Kyrylo V Polezhaiev <[hidden email]> wrote: > >> Hello, I am using the following code in my browser plugin to set position in video: > >> > >> void OVIMediaPlayer::set_position(float percents) > >> { > >> gint64 position, length; > >> GstFormat format = GST_FORMAT_TIME; > >> gst_element_query_duration (pipeline, &format, &length); > >> position = static_cast<gint64>(length * (percents * 0.01)); > >> GstState state; > >> gst_element_get_state(pipeline, &state, NULL, GST_CLOCK_TIME_NONE); > >> gst_element_set_state(pipeline, GST_STATE_PAUSED); > >> gst_element_seek(bin, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); > >> gst_element_set_state(pipeline, state); > >> return; > >> } > >> > >> My pipeline contains playbin2 with directdraw video sink and plays video from http server. Server supports HTTP Range Headers. My function gets percents argument in range [0; 100] to set position of video. But after each call video begins from begging. > >> > > > > May I ask why you are changing the state to paused and then setting it > > back again? > > The rest looks OK, so I'm puzzled by this. > > Why is the GstElement 'pipeline' passed to all functions, except for > the seek that is 'bin'? > Can you check that you are really passing a [0-100] percent value? > Considering you are passing > that value as a float it might be [0-1] somewhere else. > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel ... [show rest of quote] _______________________________________________
gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Loading... |
Reply to author |
Edit post |
Move post |
Delete this post |
Delete this post and replies |
Change post date |
Print post |
Permalink |
Raw mail |
96 posts
|
On 19 May 2012 13:49, Kyrylo V Polezhaiev <[hidden email]> wrote:
> Thanks, Luis. >> Why is the GstElement 'pipeline' passed to all functions, except for >> the seek that is 'bin'? > I use pipeline as the first argument instead of playbin2 now. >> May I ask why you are changing the state to paused and then setting it >> back again? > Okay, now I am removed this part. So now I have: > > gint64 position, length; > GstFormat format = GST_FORMAT_TIME; > gst_element_query_duration (pipeline, &format, &length); > position = static_cast<gint64>(length * (percents * 0.01)); > if (!gst_element_seek(pipeline, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) > { > MessageBoxA(0, "gst_element_seek failed", "Error", 0); > } > > Just before gst_element_seek I have following values: > length = 187623000000 > position = 73124858969 > percents = 38.974358 > format = GST_FORMAT_TIME > > But now video still begins from start instead of from 73124858969. > > ... [show rest of quote] That is very strange, it should work. Can you get a GST_DEBUG log and paste it in pastebin? I'm intrigued. Thanks, Luis > >> On 19 May 2012 11:53, Luis de Bethencourt <[hidden email]> wrote: >> > On 19 May 2012 09:58, Kyrylo V Polezhaiev <[hidden email]> wrote: >> >> Hello, I am using the following code in my browser plugin to set position in video: >> >> >> >> void OVIMediaPlayer::set_position(float percents) >> >> { >> >> gint64 position, length; >> >> GstFormat format = GST_FORMAT_TIME; >> >> gst_element_query_duration (pipeline, &format, &length); >> >> position = static_cast<gint64>(length * (percents * 0.01)); >> >> GstState state; >> >> gst_element_get_state(pipeline, &state, NULL, GST_CLOCK_TIME_NONE); >> >> gst_element_set_state(pipeline, GST_STATE_PAUSED); >> >> gst_element_seek(bin, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); >> >> gst_element_set_state(pipeline, state); >> >> return; >> >> } >> >> >> >> My pipeline contains playbin2 with directdraw video sink and plays video from http server. Server supports HTTP Range Headers. My function gets percents argument in range [0; 100] to set position of video. But after each call video begins from begging. >> >> >> > >> > May I ask why you are changing the state to paused and then setting it >> > back again? >> > The rest looks OK, so I'm puzzled by this. >> >> Why is the GstElement 'pipeline' passed to all functions, except for >> the seek that is 'bin'? >> Can you check that you are really passing a [0-100] percent value? >> Considering you are passing >> that value as a float it might be [0-1] somewhere else. >> _______________________________________________ >> gstreamer-devel mailing list >> [hidden email] >> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel ... [show rest of quote] _______________________________________________
gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Loading... |
Reply to author |
Edit post |
Move post |
Delete this post |
Delete this post and replies |
Change post date |
Print post |
Permalink |
Raw mail |
44 posts
|
I found the following warning from FLV demuxer: "failed to find an index, seeking back to beginning."
http://pastebin.com/DwGbp58W GSTOVIDEMUX is just renamed GstFlvDemux. > On 19 May 2012 13:49, Kyrylo V Polezhaiev <[hidden email]> wrote: > > Thanks, Luis. > >> Why is the GstElement 'pipeline' passed to all functions, except for > >> the seek that is 'bin'? > > I use pipeline as the first argument instead of playbin2 now. > >> May I ask why you are changing the state to paused and then setting it > >> back again? > > Okay, now I am removed this part. So now I have: > > > > gint64 position, length; > > GstFormat format = GST_FORMAT_TIME; > > gst_element_query_duration (pipeline, &format, &length); > > position = static_cast<gint64>(length * (percents * 0.01)); > > if (!gst_element_seek(pipeline, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) > > { > > MessageBoxA(0, "gst_element_seek failed", "Error", 0); > > } > > > > Just before gst_element_seek I have following values: > > length = 187623000000 > > position = 73124858969 > > percents = 38.974358 > > format = GST_FORMAT_TIME > > > > But now video still begins from start instead of from 73124858969. > > > > > > That is very strange, it should work. > Can you get a GST_DEBUG log and paste it in pastebin? > I'm intrigued. > > Thanks, > Luis > > > > >> On 19 May 2012 11:53, Luis de Bethencourt <[hidden email]> wrote: > >> > On 19 May 2012 09:58, Kyrylo V Polezhaiev <[hidden email]> wrote: > >> >> Hello, I am using the following code in my browser plugin to set position in video: > >> >> > >> >> void OVIMediaPlayer::set_position(float percents) > >> >> { > >> >> gint64 position, length; > >> >> GstFormat format = GST_FORMAT_TIME; > >> >> gst_element_query_duration (pipeline, &format, &length); > >> >> position = static_cast<gint64>(length * (percents * 0.01)); > >> >> GstState state; > >> >> gst_element_get_state(pipeline, &state, NULL, GST_CLOCK_TIME_NONE); > >> >> gst_element_set_state(pipeline, GST_STATE_PAUSED); > >> >> gst_element_seek(bin, 1.0, format, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE); > >> >> gst_element_set_state(pipeline, state); > >> >> return; > >> >> } > >> >> > >> >> My pipeline contains playbin2 with directdraw video sink and plays video from http server. Server supports HTTP Range Headers. My function gets percents argument in range [0; 100] to set position of video. But after each call video begins from begging. > >> >> > >> > > >> > May I ask why you are changing the state to paused and then setting it > >> > back again? > >> > The rest looks OK, so I'm puzzled by this. > >> > >> Why is the GstElement 'pipeline' passed to all functions, except for > >> the seek that is 'bin'? > >> Can you check that you are really passing a [0-100] percent value? > >> Considering you are passing > >> that value as a float it might be [0-1] somewhere else. > >> _______________________________________________ > >> gstreamer-devel mailing list > >> [hidden email] > >> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > > _______________________________________________ > > gstreamer-devel mailing list > > [hidden email] > > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel ... [show rest of quote] _______________________________________________
gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Disable Popup Ads | Edit this page |