Android

设置音频订阅优先级

更新时间: 2022/03/01 03:24:01

在大型音频会议或语聊房场景中,会出现几百人至上千人同时说话的情况。在 ASL 策略下,云信服务器会优先选择说话音量最高或讲话内容最清晰的三条线路,并将线路上的音频数据传输给房间内其他所有用户,但观众往往只需聆听一个主讲人说话。为了保证即使主讲人说话不够清晰,用户依然可以接收到指定的必需音频流,NERTC SDK 支持通过音频订阅优先级功能对于订阅的音频流设置优先级。

功能介绍

设置音频订阅优先级指优先订阅远端某用户发布的音频流。NERTC SDK 支持在 ASL 策略下,即在服务器线路上选择最清晰的三条音频流传输给本地用户时,本地用户设置优先订阅一个成员的音频流后,即使该成员的说话音量较低或不够清晰,本地用户仍能接收到该指定成员的音频流。

注意事项

  • 请在成功加入房间后设置,且必须开启音频自动订阅模式,此模式默认打开。
  • 每次只能设置优先订阅一个成员的音频流,重复设置会覆盖前一次设置。优先级设置只在本次通话中生效,下一次通话时需要再次设置。
  • 对 A 用户发布的音频流设置订阅优先级后,如果 A 用户未加入此房间或者未发布音频流,此设置无效,需等对方加入房间并启用音频开关后再设置。

配置步骤

  1. 在成功加入房间并调用 subscribeAllRemoteAudio 方法,设置 enable 参数为 true 开启音频自动订阅模式(默认开启)。
  2. 调用 setRemoteHighPriorityAudioStream 方法设置远端用户 A 的音频流为最高优先级。调用该方法时,您需要设 置 enable 参数为 true 开启音频订阅高优先级功能,并设置用户 A 的 uid,从而优先听到该用户的音频。
  3. 若您希望取消优先订阅用户 A 发布的音频流,请再次调用 setRemoteHighPriorityAudioStream 方法,设置 enable 参数为 false,同时设置用户 A 的 uid 取消订阅;或直接设置用户 B 的 uid,覆盖之前的设置,即只优先订阅用户 B 的音频流。

目前此功能仅支持优先订阅远端用户发布的音频主流,因此 streamType 参数默认设置为 kNERtcAudioStreamMain。

示例代码

//设置uid为1111的用户音频为高优先级
[[NERtcEngine sharedEngine] setRemoteHighPriorityAudioStream:true forUserID:1111 streamType:kNERtcAudioStreamMain];

//取消uid为1111的用户音频为高优先级
[[NERtcEngine sharedEngine] setRemoteHighPriorityAudioStream:false forUserID:1111 streamType:kNERtcAudioStreamMain];

API 参考

此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 配置步骤
  • 示例代码
  • API 参考