声网方案
方案架构
说明:
服务端主要工作
生成加入频道时的必要信息;(频道号、uid、Token等信息)
维护合法的房间和用户列表;(IM、Restful API、 NCS)
踢人、房间解散等违规处理;(Restful API)
客户端主要工作
加入频道
上下麦
开闭麦mute&unMute
音量波纹提示
资料
声网SDK及示例下载链接(注意音频项目可以选择音频sdk,当然那视频SDK也可以用只,只是包体积大一些)
https://doc.shengwang.cn/doc/rtc/android/resources
快速开始语音互动
https://doc.shengwang.cn/doc/rtc/android/basic-features/audio-quick-start
移动端SDK API参考
https://doc.shengwang.cn/api-ref/rtc/android/API/rtc_api_overview
Token生成
https://doc.shengwang.cn/doc/rtc/android/basic-features/token-authentication
建议使用AccessToken2 生成Token
参考示例连接中都有对应的github仓库
声网WebDemo地址(可以用来测试)
https://webdemo-na.agora.io/basicLive/index.html
比如要验证生成的Token是否正确,则可通过这个demo来加入房间测试
验证和客户端声音互通
服务端OpenAPI
https://doc.shengwang.cn/api-ref/rtc/restful/channel-management
,一般用到的功能有:
查询在线频道消息,比如房间里面有多少人,哪些是主播&观众。
消息通知服务,需要客户提供一个消息接收服务地址,房间创建、用户加入&离开房间、房间销毁等会有消息通知到客户的服务上。可以用来做麦位状态管理、房间列表维护等。
https://doc.shengwang.cn/api-ref/rtc/restful/channel-management/ncs-events
封禁用户&房间,声网提供openAPI可以对房间、用户等不同级别的封禁,用于处理非法捣乱用户
https://doc.shengwang.cn/api-ref/rtc/restful/channel-management/operations/post-dev-v1-kicking-rule
功能和注意事项
频道模式&音频属性
要使用直播模式,即setChannelProfile(
channelProfileLiveBroadcasting
);
直播模式,只有主播才能往频道发流,观众不能发流只能收流。 因此麦上讲话的都是主播角色。
音频属性要设置为(多人娱乐房、唱歌房,游戏开黑房要选择其他模式。这块不确定的话需要根据场景跟声网支持同学沟通)setAudioProfile(
audioProfileMusicHighQualityStereo
);setAudioScenario(
audioScenarioGameStreaming
)
加入频道
频道号、uid、Token需要自己业务服务器分配 ,加入频道时传的token一定要和频道号、uid匹配,否则加入频道不会成功。
uid建议使用uint32位的,不建议使用string型uid
加入频道成功要以本地加入成功的回调来判断
onJoinChannelSuccess
切换角色
主播角色既能发流也能收流,观众只能收流 。 因此麦上讲话的人都是主播,收听的人都是观众。
主播和观众互相切换的API:
setClientRole(角色)
声音波纹提示
enableAudioVolumeIndication方法开启波纹提示,建议设置提示间隔时间是 500ms,一般音量大于20的时候给到波纹提示
本地回调中,uid为0则表示本地主播;其它则是远端瞬时音量最高的3位主播的uid
声网防炸房方案
https://doc.shengwang.cn/doc/rtc/android/best-practice/prevent-stream-bombing
断线重连 频道状态管理
https://doc.shengwang.cn/doc/rtc/android/basic-features/channel-connection