[gst-devel] Help on souphttpsrc

snvd1 lcai at yahoo-inc.com
Tue Jun 16 01:39:52 CEST 2009


Hi ,

I'm creating a video player that can stream video from the internet, and
performs seeking on the stream. Somebody indicates souphttpsrc is the
solution but it doesn't work for me, my code looks like the beloow, when I
call  gst_element_seek_simple(pipeline, GST_FORMAT_TIME,
GST_SEEK_FLAG_FLUSH, 5*GST_SECOND), it always fails, please please help.

Thanks so much,
snv


{
   pipeline   = gst_pipeline_new("pipeline");
   src = gst_element_factory_make ("souphttpsrc", "mysrc");
   g_object_set(src, "location", "http://", NULL);
    g_object_set (src, "automatic-redirect", TRUE, NULL);

       queue       = gst_element_factory_make("queue", "vqueue");
       flt         = gst_element_factory_make("capsfilter", "vfilter");
       conv        = gst_element_factory_make("ffmpegcolorspace", "vconv");
       scale       = gst_element_factory_make("videoscale", "vscale");
       vsink       = gst_element_factory_make("xvimagesink", "vsink");

   decodebin  = gst_element_factory_make("decodebin", "decoder");
   g_signal_connect(decodebin, "new-decoded-pad",
G_CALLBACK(new_decoded_pad_cb), NULL);

       gst_bin_add_many(GST_BIN(pipeline), src, decodebin, queue, scale,
conv, flt, vsink, NULL);

   gst_element_link(src, decodebin);
   gst_element_link_many(queue, scale, conv, flt, vsink, NULL);

   gst_element_set_state(pipeline, GST_STATE_PLAYING);
   g_timeout_add (1000, (GSourceFunc) cb_print_position, pipeline);

   g_main_loop_run(loop);

   /* cleanup */
   gst_element_set_state(pipeline, GST_STATE_NULL);
   gst_object_unref(GST_OBJECT(pipeline));
}


static void
new_decoded_pad_cb(GstElement *decoder, GstPad     *new_pad,
                  gboolean    last,  gpointer    user_data)
{
   GstCaps *caps;
   gchar   *str;


   caps = gst_pad_get_caps(new_pad);
   str = gst_caps_to_string(caps);

   /* video stream */
   if (g_str_has_prefix(str, "video/")) {
       GstPad             *videopad;
       GstCaps            *filtercaps;
       //videopad = gst_element_get_pad(queue, "sink");
       GstElement *vbin = gst_bin_get_by_name(GST_BIN(pipeline),"vqueue");
       videopad = gst_element_get_pad (vbin, "sink");
       gst_pad_link(new_pad, videopad);
       gst_object_unref(videopad);
   }
}


-- 
View this message in context: http://www.nabble.com/Help-on-souphttpsrc-tp24042332p24042332.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.





More information about the gstreamer-devel mailing list