[英]Does Android's RTP library support multicast?
我正在嘗試使用Android的RTP類將音頻流從一個設備多播到其他設備。
我不想 ,如果在所有可能使用任何第三方庫。
我能夠使用AudioStream
和AudioGroup
設置彼此的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.