2013-05-06 140 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