gpt4 book ai didi

java - Android 的 RTP 库是否支持多播?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:28 27 4
gpt4 key购买 nike

我正在尝试使用 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();

此外,我的 list 文件中还有以下权限:

   <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

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

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

关于java - Android 的 RTP 库是否支持多播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984994/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com