2013-09-24 50 views
3

我正在嘗試使用Android的RTP類將音頻流從一個設備多播到許多其他設備。Android的RTP庫支持多播嗎?

不要想要使用任何第三方庫,如果可能的話。

我能夠在兩個設備之間使用AudioStreamAudioGroup與對方的IP地址建立流式雙向音頻,但我想流式傳輸到多播組。

如果我嘗試使用多播地址(例如239.1.1.1)實例化AudioStream,然後在其他設備上使用具有相同多播地址的audioStream.associate(),但不會聽到流。

我已閱讀了一些不支持多播的Android設備,但我的設備(包括三星Galaxy Tab 2s)都支持它。我甚至增加了以下我的代碼,試圖獲取組播鎖:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
      multicastLock = wifi.createMulticastLock("multicastLock"); 
      multicastLock.setReferenceCounted(true); 
      multicastLock.acquire(); 

此外,我在我的清單文件以下權限:

<uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.RECORD_AUDIO" /> 

回答

2

尋找到這個有很多,我發現RTP類別確實支持發送組播,但沒有收到。據推測這是因爲使用的插座不是MulticastSocket s。

此外,對於那些有興趣的人來說,Tab 2實際上是不支持加入多播組的設備之一(即它不發送IGMP加入數據包),但是如果您在網絡中設置了靜態多播組基礎設施,那麼數據包將被接收 - 因此我上面提到我知道他們確實支持它。

查看Android設備是否支持加入多播組的快速方法是查找/proc/net/igmp文件的存在。