【问题标题】:Gstreamer udp-source pcm playbackGstreamer udp-source pcm 播放
【发布时间】:2016-04-11 11:07:20
【问题描述】:

我有这些 gst-launch 参数可以做我想做的事:

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);

在点图中,它们看起来几乎相似,但并不完全一样,尽管我无法弄清楚我缺少什么。

【问题讨论】:

    标签: gstreamer


    【解决方案1】:

    不知道为什么,但是如果我忽略了 INTERLEAVED(如果输入应该是小写的)并且我也错过了我输入了错误的端口号(doh!),它会起作用。

    【讨论】:

    • 好吧,至少你发现了这一点:)你可以考虑关闭这个问题,因为它不会帮助其他任何人..但这是供你考虑的——也许只是关于交错的那部分是有帮助的..
    • 可能是个好主意,但我不知道如何结束这个问题。刚刚将此标记为答案。
    • 也许有关 interleaved 的信息可用于某人.. 但无论如何,您都可以通过单击位于问题文本下方的浅灰色“关闭”来关闭问题,就在蓝色标签“gstreamer”下方“.. 旁边的选项“分享”和“编辑”..
    猜你喜欢
    • 2015-05-27
    • 2019-05-26
    • 2015-12-10
    • 2012-01-02
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多