簡體   English   中英

Android的RTP庫是否支持多播?

[英]Does Android's RTP library support multicast?

我正在嘗試使用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" />

經過深入研究后,我發現RTP類確實支持發送多播,但不支持接收。 大概這是因為使用的套接字不是MulticastSocket

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM