Note that there are some explanatory texts on larger screens.

plurals
  1. POGstreamer source code doesnt work
    primarykey
    data
    text
    <p>i have the following pipelines that one of them sends voice signals on udp port and the other receives them on the same port number on the receiver side</p> <pre><code> gst-launch-1.0 -v alsasrc ! audioconvert ! audio/x-raw,channels=2,depth=16,width=16,rate=44100 ! rtpL16pay ! udpsink host=127.0.0.1 port=5000 //sender </code></pre> <p>and </p> <pre><code>gst-launch-1.0 udpsrc port=5000 ! "application/x-rtp, media=(string)audio, clock-rate=(int)44100, encoding-name=(string)L16, channels=(int)2, payload=(int)96" ! rtpL16depay ! audioconvert ! alsasink //receiver </code></pre> <p>now i am trying to write a source code using Gstreamer SDK that does the same thing. I have come so far:</p> <pre><code>#include &lt;gst/gst.h&gt; #include &lt;string.h&gt; int main(int argc, char *argv[]) { GstElement *pipeline, *source, *audiosink,*rtppay,*rtpdepay,*filter,*filter1,*conv,*conv1,*udpsink,*udpsrc,*receive_resample; GstBus *bus; GstMessage *msg; GstCaps *filtercaps; GstStateChangeReturn ret; /* Initialize GStreamer */ gst_init (&amp;argc, &amp;argv); /* Create the elements */ source = gst_element_factory_make ("alsasrc", "source"); conv= gst_element_factory_make ("audioconvert", "conv"); conv1= gst_element_factory_make ("audioconvert", "conv1"); filter=gst_element_factory_make("capsfilter","filter"); rtppay=gst_element_factory_make("rtpL16pay","rtppay"); rtpdepay=gst_element_factory_make("rtpL16depay","rtpdepay"); udpsink=gst_element_factory_make("udpsink","udpsink"); audiosink = gst_element_factory_make ("autoaudiosink", "audiosink"); receive_resample = gst_element_factory_make("audioresample", NULL); udpsrc=gst_element_factory_make("udpsrc",NULL); filter1=gst_element_factory_make("capsfilter","filter"); g_object_set(udpsrc,"port",5000,NULL); g_object_set (G_OBJECT (udpsrc), "caps", gst_caps_from_string("application/x-rtp,media=audio,payload=96,clock-rate=44100,encoding-name=L16,channels=2"), NULL); /* Create the empty pipeline */ pipeline = gst_pipeline_new ("test-pipeline"); if (!pipeline || !source || !filter || !conv || !rtppay || !udpsink ) { g_printerr ("Not all elements could be created.\n"); return -1; } g_object_set(G_OBJECT(udpsink),"host","127.0.0.1",NULL); g_object_set(G_OBJECT(udpsink),"port",5000,NULL); filtercaps = gst_caps_new_simple ("audio/x-raw", "channels", G_TYPE_INT, 2, "width", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16, "rate", G_TYPE_INT, 44100, NULL); g_object_set (G_OBJECT (filter), "caps", filtercaps, NULL); gst_caps_unref (filtercaps); filtercaps = gst_caps_new_simple ("application/x-rtp", "media",G_TYPE_STRING,"audio", "clock-rate",G_TYPE_INT,44100, "encoding-name",G_TYPE_STRING,"L16", "channels", G_TYPE_INT, 2, "payload",G_TYPE_INT,96, NULL); g_object_set (G_OBJECT (filter1), "caps", filtercaps, NULL); gst_caps_unref (filtercaps); /* Build the pipeline */ gst_bin_add_many (GST_BIN (pipeline), source,filter,conv,rtppay,udpsink, NULL); if (gst_element_link_many (source,filter,conv,rtppay,udpsink, NULL) != TRUE) { g_printerr ("Elements could not be linked.\n"); gst_object_unref (pipeline); return -1; } gst_bin_add_many (GST_BIN (pipeline),udpsrc,rtpdepay,conv1,receive_resample,audiosink,NULL); if (gst_element_link_many (udpsrc,rtpdepay,conv1,receive_resample,audiosink,NULL) != TRUE) { g_printerr ("Elements could not be linked.\n"); gst_object_unref (pipeline); return -1; } /* Modify the source's properties */ // g_object_set (source, "pattern", 0, NULL); /* Start playing */ ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { g_printerr ("Unable to set the pipeline to the playing state.\n"); gst_object_unref (pipeline); return -1; } /* Wait until error or EOS */ bus = gst_element_get_bus (pipeline); msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); /* Parse message */ if (msg != NULL) { GError *err; gchar *debug_info; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR: gst_message_parse_error (msg, &amp;err, &amp;debug_info); g_printerr ("Error received from element %s: %s\n", GST_OBJECT_NAME (msg-&gt;src), err-&gt;message); g_printerr ("Debugging information: %s\n", debug_info ? debug_info : "none"); g_clear_error (&amp;err); g_free (debug_info); break; case GST_MESSAGE_EOS: g_print ("End-Of-Stream reached.\n"); break; default: /* We should not reach here because we only asked for ERRORs and EOS */ g_printerr ("Unexpected message received.\n"); break; } gst_message_unref (msg); } /* Free resources */ gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); return 0; } </code></pre> <p>but somehow i dont receive any voice on the receiver. i dont get any errors of any kind. Any ideas why this is happening?</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload