在大规模音视频互动场景中,大量用户同时开麦发言时,可能会消耗大量带宽和设备性能,在该场景下建议开启音频选路功能。开启后,房间内用户的音频订阅关系由 RTC 智能托管,无需在客户端手动维护。RTC 会智能识别出部分音量较大的活跃发言用户,并将其音频流分发给房间内其他用户,减少每个客户端接收的音频流数量,降低带宽和资源消耗同时保障互动流畅性。
场景 | 场景特点 | 核心痛点(无音频选路时) | 音频选路如何解决 |
---|---|---|---|
云端会议 | 上千人房间,参会者均可随时开麦发言并自由选择观看其他参会人的视频画面 | 仅推送主要活跃发言者的音频流,降低带宽消耗,减轻设备负担;保障会议音频清晰,聚焦关键信息,提升沟通效率。 | |
互动娱乐 | 上万人房间,互动嘉宾人数可超 500 人,观众可申请与嘉宾上麦互动 | 仅分发少量核心活跃音频流至所有听众,大幅节约服务器带宽成本,保障听众端流畅接收,支持并提升超大规模并发互动的体验和可行性。 |
开启音频选路功能后,请注意以下事项:
说明
PublishStream
/ PublishScreen
会返回 -1080
错误码。Web 端没有对应的错误码,但会触发发布失败。SubscribeStream
/ SubscribeScreen
会返回 -1070
错误码。Web 端没有对应的错误码,但会触发订阅失败。推荐使用不同的 appID 开发适用于不同场景的音视频应用。是否开启音频选路的应用场景差别较大,尽量避免在用户使用时进行切换。
开启音频选路后,且房间内用户数大于 5 时,以下 API 和回调的预期行为有如下变化。
不同平台的实现步骤相同,但接口名称、参数名称可能略有差异。以下指南以 Windows RTC SDK 为例,参考对应平台的 API 文档获取更多信息。
接口 | 关闭音频选路 | 开启音频选路 |
---|---|---|
joinRoom (isAutoSubscribeAudio = true) | 自动订阅音频。 | 无效,音频订阅关系由 RTC 系统智能托管。 |
subscribeStream | 订阅指定用户音视频流。 | 视频:与关闭音频选路时相同。 音频:无需调用,音频订阅关系由 RTC 系统智能托管。 |
部分回调的行为将发生变化,具体如下表。你需要根据这些变化,调整相应的应用端逻辑。
接口 | 关闭音频选路 | 开启音频选路 |
---|---|---|
onUserJoined | 远端可见用户加入房间,或房内不可见用户切换为可见的回调。 | 房间内可见用户数 >500 后,该回调不触发。 如果你需要完整的房间内用户名单,需要自行维护用户列表。 |
onUserLeave | 远端可见用户下线或转为隐身 | 房间内可见用户数 >500 后,该回调不触发 |
onRoomStats (Web 端无此回调) | 2 秒一次的房间内通话统计信息回调 | 房间内可见用户数 >500 后,回调的 RtcRoomStats{user_count} 值无效 |
onUserPublishStream | 房间内新增远端摄像头/麦克风采集的媒体流回调 | 只能收到视频流触发的相关回调 |
onUserUnpublishStream | 远端用户取消发布回调 | 只能收到视频流触发的相关回调 |
onUserPublishScreen | 房间内新增屏幕共享流回调 | 只能收到视频流触发的相关回调 |
onUserUnpublishScreen | 远端用户取消发布屏幕共享流回调 | 只能收到视频流触发的相关回调 |
onNetworkQuality | 报告房间内用户的网络质量评分 | 回调有视频流的用户信息或远端活跃用户的网络质量评分 |
onRemoteStreamStats | 订阅的远端用户发布的流在周期内的网络质量信息。 | Native 端回调有视频流的用户信息或远端活跃用户的音频流传输信息。 Web 端不回调音频数据信息,视频与关闭音频选路行为一致。 |
onRemoteAudioPropertiesReport | 订阅的远端用户的音频信息。 | 只回调远端活跃用户的音频信息。 |
onUserStartAudioCapture | 远端用户开启音频采集 | 开启音频选路后,不会触发,与房间内用户数无关。 |
onUserStopAudioCapture | 远端用户停止音频采集 | 开启音频选路后,不会触发,与房间内用户数无关。 |
onUserStartVideoCapture | 远端用户开启视频采集 | 如果远端用户未发布视频流,不会收到该回调。如果远端用户发布视频流,则该回调将伴随 onUserPublishStream 触发一次。当监听 onUserStartVideoCapture 和 onUserPublishStream 时,可以认为远端已经开启视频采集。 |
onUserStopVideoCapture | 远端用户停止视频采集 | 不会触发。当远端用户停止视频采集时,会触发 onUserUnpublishStream。当监听到 onUserUnpublishStream 时,可以认为远端已经停止视频采集。 |
变更前 | 变更后 |
---|---|
普通模式(不开启音频选路) | 不开启音频选路 |
普通模式(开启音频选路) | 开启音频选路 |
大会模式 | 开启音频选路 |
大会模式 – 游戏场景 | 不开启音频选路 |