Android的RTP库是否支持多播?

时间:2013-09-24 14:53:23

标签: java android multicast rtp

我正在尝试使用Android的RTP类将音频流从一个设备多播到其他设备。

想要尽可能使用任何第三方库。

我可以使用AudioStreamAudioGroup设置彼此的IP地址,在两台设备之间传输双向音频,但我想流式传输到多播组。

如果我尝试使用多播地址(例如AudioStream)实例化239.1.1.1,然后在另一台设备上使用具有相同多播地址的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" />

1 个答案:

答案 0 :(得分:3)

经过深入研究后,我发现RTP类支持发送组播,但不支持接收。大概这是因为使用的套接字不是MulticastSocket s。

此外,对于那些感兴趣的人,Tab 2实际上是不支持加入多播组的设备之一(即它不发送IGMP加入数据包),但是如果在网络基础结构中设置静态多播组然后会收到数据包 - 因此我上面提到的原因是我知道他们确实支持它。

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