Gstreamer udp源pcm播放

Gstreamer udp源pcm播放,gstreamer,Gstreamer,我有这些gst启动参数可以满足我的要求: gst-launch-1.0.exe udpsrc port=22122 ! audio/x-raw,format=S16LE,rate=16000,channels=1 ! autoaudiosink 但是,我无法将其转换为代码。我正在尝试以下方法: GstElement *pipeline = gst_pipeline_new("audio-player"); GstBus *bus = gst_pipeline_get_bus(GST_PIPE

我有这些gst启动参数可以满足我的要求:

gst-launch-1.0.exe udpsrc port=22122 ! audio/x-raw,format=S16LE,rate=16000,channels=1 ! autoaudiosink
但是,我无法将其转换为代码。我正在尝试以下方法:

GstElement *pipeline = gst_pipeline_new("audio-player");

GstBus *bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
guint bus_watch_id = gst_bus_add_watch(bus, bus_call, m_gstMainLoop);
gst_object_unref(bus);

GstElement *source = gst_element_factory_make("udpsrc", "udpsrc0");
GstElement *sink = gst_element_factory_make("autoaudiosink", "autoaudiosink0");

g_object_set(G_OBJECT(source), "port", 7200, "buffer-size", 1000000, NULL);
gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL);   

GstCaps *caps = gst_caps_new_simple("audio/x-raw",
                                    "format",   G_TYPE_STRING,  "S16LE",
                                    "layout",   G_TYPE_STRING,  "INTERLEAVED",
                                    "rate",     G_TYPE_INT,     16000,
                                    "channels", G_TYPE_INT,     1, 
                                    NULL);

gst_element_link_filtered(source, sink, caps);
gst_caps_unref(caps);

gst_element_set_state(pipeline, GST_STATE_PLAYING);
g_main_loop_run(m_gstMainLoop);

在点图中,它们看起来几乎一样,但并不完全一样,尽管我不知道我遗漏了什么。

不知道为什么,但如果我遗漏了交错(如果输入,应该是小写),并且我也遗漏了输入错误的端口号(doh!)