Converting gst launch command into c

Rajesh salumuri rajesh.salumuri at gmail.com
Wed Nov 26 23:05:25 PST 2014


Hi,

I am trying to convert the following gst-launch command into c:



*gst-launch rtspsrc location=rtsp://ipaddress:port name=demux demux. !
queue ! decodebin ! autovideosink demux. ! queue ! rtppcmudepay !
autoaudiosink*
I tried the above command it is able to stream both audio and video.

And I played this rtspurl in vlc media player it is showing the properties
are as follows:

Type: Video Codec: H264 - MPEG-4 AVC (part 10) (h264) Resolution: 320x180
Decoded format: Planar 4:2:0 YUV

Type: Audio Codec: PCM MU-LAW (mlaw) Channels: Mono Sample rate: 8000 Hz
Bits per sample: 8
*I am converting the above gst-launch command in c in brief explained below*

  pipeline  = gst_pipeline_new("nice_pipeline");
  source = gst_element_factory_make("nicesrc","source");//thsi source will
take the stream from rtsp url
*  demuxer = gst_element_factory_make ("avidemux", "avi-demuxer");*
  decvd= gst_element_factory_make ("decodebin", "decodebin");
  vdsink = gst_element_factory_make ("autovideosink", "video-sink");
  vdqueue = gst_element_factory_make ("queue", "video-queue");
  adqueue = gst_element_factory_make ("queue", "audio-queue");
  decad= gst_element_factory_make ("rtppcmudepay", "rtppcmudepay");
  adsink = gst_element_factory_make ("autoaudiosink", "audio-sink");

      bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
      gst_bus_add_watch(bus, bus_call, NULL);
      gst_object_unref (bus);
      gst_bin_add_many(GST_BIN (pipeline), source,decvd,decad, adqueue,
vdqueue, vdsink, adsink,  NULL);

      gst_element_link (source, demuxer);
      gst_element_link (decvd, vdqueue);
      gst_element_link (vdqueue, vdsink);
      gst_element_link (decad, adqueue);
      gst_element_link (adqueue, adsink);

      g_signal_connect (demuxer, "pad-added", G_CALLBACK (on_pad_added),
NULL);
      gst_element_set_state(pipeline, GST_STATE_PLAYING);

*on_pad_added func defintion:*

GstCaps *caps;
    GstStructure *str;

    caps = gst_pad_get_caps (pad);
    g_assert (caps != NULL);
    str = gst_caps_get_structure (caps, 0);
    g_assert (str != NULL);

    if (g_strrstr (gst_structure_get_name (str), "video")) {
        g_debug ("Linking video pad to dec_vd");

        GstPad *targetsink = gst_element_get_pad (decvd, "sink");
        g_assert (targetsink != NULL);
        gst_pad_link (pad, targetsink);
        gst_object_unref (targetsink);
    }

    if (g_strrstr (gst_structure_get_name (str), "audio")) {
        g_debug ("Linking audio pad to dec_ad");

        GstPad *targetsink = gst_element_get_pad (decad, "sink");
        g_assert (targetsink != NULL);
        gst_pad_link (pad, targetsink);
        gst_object_unref (targetsink);
    }

    gst_caps_unref (caps);

My question is that what type of demuxer i have to select for the
properties of video and audio it is streaming.

If any other solution is there for demuxing audio and video from rtsp url
please suggest or provide some sample code for that.

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20141127/9bf32c90/attachment.html>


More information about the gstreamer-devel mailing list