2013-05-06 141 views
4

我有一个小程序,它使用GStreamer库来使用HTTP从Web服务器上的本地文件和视频播放视频。如何使用GStreamer连接到C中的UDP视频广播?如何使用C中的GStreamer连接到UDP视频广播

例如,在这个假设的URI处播放流式视频需要什么? 10.0.11.255:9001

我想:

// using playbin2 connect to UDP broadcast 
g_object_set (data.playbin2, "uri", "udp://10.0.11.255:9001", NULL); 

然后我尝试用下面开始流:

/* Start playing */ 
    if(gst_element_set_state (data.playbin2, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE) 
    { 
     g_printerr ("Unable to set the pipeline to the playing state.\n"); 
     gst_object_unref (data.playbin2); 
     return(-1); 
    } 

和我得到的失败改变状态的消息。

我在谷歌上搜索过,没有发现任何有用的东西。

编辑:经过一些更多的谷歌搜索,我发现约udpsrc。但是,我无法弄清楚如何在C代码中使用它。

回答

1

问题是,UDP广播流没有被转发到我正在开发的虚拟机。

使用playbin2并设置它的uri propertyudp://0.0.0.0:9001是所有需要引起playbin2正确地创建所需的源元素。

0

udpsrc是从网络读取UDP数据包的网络源。您不能使用它连接到远程主机,您只能从端口读取数据。

但是,如果您设置了多播组,则可以通过将“多播 - 组”属性设置为多播组的IP地址来从多播组读取数据。

如果你使用:

g_object_set (data.udpsrc, "uri", "udp://10.0.11.255:9001", NULL); 

那意味着你是从IP地址为10.0.11.255一个mulitcast组,而不是连接到主机读取数据。

+0

不幸的是,我使用了不包含udpsrc元素的playbin2 bin元素。我会想到,指定playbin2 uri = udp://0.0.0.0:9001/playbin2 bin会自动创建所需的src元素。 – Chimera 2013-05-09 19:35:09