[gst-devel] gstreamer problem
pritesh
digitaldsp at excite.com
Wed Sep 26 06:04:07 CEST 2007
hi,i think you should try with fluendo mpegts demuxer.you can download it from fluendo site free of cost.cheers!digitaldsp --- On Tue 09/25, sangita pithadia < sangitapithadia at gmail.com > wrote:From: sangita pithadia [mailto: sangitapithadia at gmail.com]To: gstreamer-devel at lists.sourceforge.netDate: Tue, 25 Sep 2007 12:18:19 +0000Subject: [gst-devel] gstreamer problemHi,I m trying to play MPEG TS using gstreamer pipeline. This is the pipeline which i have used to playback the file. It works fine.gst-launch -v filesrc location=/root/GStremerDir/gstreamer-0.10.13/ed24p_00.ts ! ffdemux_mpegts ! ffdec_mpeg2video ! queue ! videoscale ! ffmpegcolorspace ! xvimagesink Same thing i tried to do using the code but it doesnt play.my code is like..#include#define SOURCE "filesrc"#define VSINK "xvimagesink"#define ASINK "alsasink"#include #include //#include #include #include const gchar * location = "file:///root/GStremerDir/ed24p_00.ts";static
GList *seekable_pads = NULL;static GList *rate_pads = NULL;static GstElement *pipeline;static GList *seekable_elements = NULL;typedef struct{ const gchar *padname; GstPad *target; GstElement *bin;}dyn_link;static gbooleanbus_call (GstBus *bus, GstMessage *msg, gpointer data){ GMainLoop *loop = (GMainLoop *) data; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_EOS: g_print ("End-of-stream\n"); g_main_loop_quit (loop); break; case GST_MESSAGE_ERROR: { gchar *debug; GError *err; gst_message_parse_error (msg, &err, &debug); g_free (debug); g_print ("Error: %s\n", err->message); g_error_free (err); g_main_loop_quit (loop); break; } default: break; }}static GstElement *gst_element_factory_make_or_warn (gchar * type, gchar * name){ GstElement *element = gst_element_factory_make (type, name); if (!element) { g_warning ("Failed to create element %s of type
%s", name, type); } return element;}static void dynamic_link (GstPadTemplate * templ, GstPad * newpad, gpointer data){ gchar *padname; dyn_link *connect = (dyn_link *) data; padname = gst_pad_get_name (newpad); if (connect->padname == NULL || !strcmp (padname, connect->padname)) { if (connect->bin) gst_bin_add (GST_BIN (pipeline), connect->bin); gst_pad_link (newpad, connect->target); seekable_pads = g_list_prepend (seekable_pads, newpad); rate_pads = g_list_prepend (rate_pads, newpad); } g_free (padname);}static void setup_dynamic_link (GstElement * element, const gchar * padname, GstPad * target, GstElement * bin){ dyn_link *connect; connect = g_new0 (dyn_link, 1); connect->padname = g_strdup (padname); connect->target = target; connect->bin = bin; g_signal_connect (G_OBJECT (element), "pad-added", G_CALLBACK (dynamic_link), connect);}int main(int argc,char *argv[]){ static GstElement *bin; GstBus *bus; GMainLoop *loop;
GstElement *pipeline, *audio_bin, *video_bin; GstElement *src, *demux, *a_decoder, *v_decoder, *v_filter; GstElement *audiosink, *videosink; GstElement *a_queue, *v_queue, *v_scale; GstPad *seekable; GstPad *pad; gst_init (&argc, &argv); loop = g_main_loop_new (NULL, FALSE); if (argc != 2) { g_print ("Usage: %s \n", argv[0]); return -1; } pipeline = gst_pipeline_new ("app"); src = gst_element_factory_make_or_warn (SOURCE, "src"); g_object_set (G_OBJECT (src), "location", argv[1], NULL); //demux = gst_element_factory_make_or_warn ("mpegdemux", "demux"); demux = gst_element_factory_make_or_warn ("ffdemux_mpegts", "demux"); gst_bin_add (GST_BIN (pipeline), src); gst_bin_add (GST_BIN (pipeline), demux); gst_element_link (src, demux); audio_bin = gst_bin_new ("a_decoder_bin"); a_decoder = gst_element_factory_make_or_warn ("mad", "a_dec"); a_queue =
gst_element_factory_make_or_warn ("queue", "a_queue"); audiosink = gst_element_factory_make_or_warn (ASINK, "a_sink"); gst_bin_add (GST_BIN (audio_bin), a_decoder); gst_bin_add (GST_BIN (audio_bin), a_queue); gst_bin_add (GST_BIN (audio_bin), audiosink); gst_element_link (a_decoder, a_queue); gst_element_link (a_queue, audiosink); gst_bin_add (GST_BIN (pipeline), audio_bin); pad = gst_element_get_pad (a_decoder, "sink"); gst_element_add_pad (audio_bin, gst_ghost_pad_new ("sink", pad)); gst_object_unref (pad); setup_dynamic_link (demux, "audio_c0", gst_element_get_pad (audio_bin, "sink"), NULL); video_bin = gst_bin_new ("v_decoder_bin"); v_decoder = gst_element_factory_make_or_warn ("mpeg2dec", "v_dec"); v_queue = gst_element_factory_make_or_warn ("queue", "v_queue"); v_scale = gst_element_factory_make_or_warn ("videoscale",
"v_scale"); v_filter = gst_element_factory_make_or_warn ("ffmpegcolorspace", "v_filter"); videosink = gst_element_factory_make_or_warn (VSINK, "v_sink"); gst_bin_add (GST_BIN (video_bin), v_decoder); gst_bin_add (GST_BIN (video_bin), v_queue); gst_bin_add (GST_BIN (video_bin), v_scale); gst_bin_add (GST_BIN (video_bin), v_filter); gst_bin_add (GST_BIN (video_bin), videosink); gst_element_link (v_decoder, v_queue); gst_element_link (v_queue, v_scale); gst_element_link (v_scale, v_filter); gst_element_link (v_filter, videosink); gst_bin_add (GST_BIN (pipeline), video_bin); pad = gst_element_get_pad (v_decoder, "sink"); gst_element_add_pad (video_bin, gst_ghost_pad_new ("sink", pad)); gst_object_unref (pad); setup_dynamic_link (demux, "video_e0", gst_element_get_pad (video_bin, "sink"), NULL); /*seekable = gst_element_get_pad (v_filter, "src"); seekable_pads = g_list_prepend
(seekable_pads, seekable); rate_pads = g_list_prepend (rate_pads, seekable); rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (v_decoder, "sink"));*/ bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_add_watch (bus, bus_call, loop); gst_element_set_state (pipeline, GST_STATE_PLAYING); /* now run */ g_main_loop_run (loop); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (GST_OBJECT (pipeline)); gst_object_unref (bus); exit (0);}Can anyone tell me what can be the cause of this.Thanks in advance.-------------------------------------------------------------------------This SF.net email is sponsored by: MicrosoftDefy all challenges. Microsoft(R) Visual Studio 2005.http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/_______________________________________________gstreamer-devel mailing listgstreamer-devel at lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/gstreamer-devel
_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20070926/3803aa67/attachment.htm>
More information about the gstreamer-devel
mailing list