设置音频转发路由

更新时间: 2024/03/15 17:20:46

本文介绍通过自定义音频转发路由实现指定用户的音频推流和订阅,以满足游戏语音等场景下的需求。您可以设置推流白名单、拉流白名单或拉流黑名单,从而实现只推流给指定用户或只订阅指定用户的音频。

应用场景

游戏语音:两个好友组成一个小队,与三个陌生人组成一个大队伍,需要能听到整个队伍的声音,但只能和小队的好友进行交流。

实现方法

您可以根据实际场景,灵活选择以下接口,实现对应的音频转发规则。

例如,如果想要实现说话只被小队成员听见,您可以设置推流白名单为除自己外的其他小队成员。如果想要实现只听见小队成员的声音,您可以设置拉流白名单为除自己外的其他小队成员。

设置推流白名单。

进入房间后,调用 setAudioSubscribeOnlyBy 接口,设置本端的音频只能被房间内指定的人订阅。(默认情况下房间所有其他人都可以订阅自己的音频。)

  • 如果设置的 uid 列表中,某用户不在该 RTC 房间内,则该 uid 不生效。

  • 如果 uid 列表为空或 null,表示其他所有人均可订阅自己的音频。

设置拉流白名单。

调用 setSubscribeAudioAllowlist 接口,设置只订阅指定用户的音频流。(默认为订阅房间所有用户的音频。)

设置拉流黑名单。

调用 setSubscribeAudioBlockList 接口,设置不订阅指定用户的音频流。

黑名单的优先级高于白名单。如果某个用户同时在黑名单和白名单中,以黑名单为准。

示例代码

javaString[] blackList = mBlackList.trim().split(",");
String[] whiteList = mWhiteList.trim().split(",");
long[] tmpWhiteList = new long[whiteList.length];
for (int i = 0; i < whiteList.length; i++) {
    tmpWhiteList[i] = Long.parseLong(whiteList[i]);
}
int ret = NERtcEx.getInstance().setSubscribeAudioAllowlist(tmpWhiteList);

if (blackList.length != 0 && !blackList[0].equals("")) {
long[] tmpBlackList = new long[blackList.length];
for (int i = 0; i < blackList.length; i++) {
    tmpBlackList[i] = Long.parseLong(blackList[i]);
}
int ret = NERtcEx.getInstance().setSubscribeAudioBlocklist(tmpBlackList, kNERtcAudioStreamTypeMain);
此文档是否对你有帮助?
有帮助
去反馈
  • 应用场景
  • 实现方法
  • 设置推流白名单。
  • 设置拉流白名单。
  • 设置拉流黑名单。
  • 示例代码