实现语聊房(基于底层能力)
更新时间: 2024/11/26 15:44:05
本文档为您展示通过 SDK 实现语音聊天室场景的相关步骤,帮助您在业务中实现麦位管理、低延时语音互动、文字聊天等 IM 和音视频通话 2.0 在语音聊天场景下的相关能力。
前提条件
-
已在控制台创建应用,并获取了应用对应的 App Key。
-
已成功开通 IM 即时通讯产品的聊天室功能、音视频通话 2.0 产品。
聊天室功能需单独开通,若有需要,请联系您的对应销售或技术支持人员。
方案架构
API 调用时序
示例项目源码
操作步骤
集成 SDK
请参考下表,将相应的 SDK 或服务集成到您的项目中。
产品 | SDK 下载 | 集成文档 |
---|---|---|
IM 即时通讯 | IM SDK | 集成 SDK |
音视频通话 2.0 | NERTC SDK | 集成 SDK |
创建聊天室
-
调用创建聊天室服务端 API 接口,创建聊天室。
-
调用初始化队列服务端 API 接口,初始化队列。
-
调用创建房间服务端 API 接口,创建并维护多人音频房间。
您也可以通过客户端接口创建多人音频房间。
初始化 SDK
-
初始化并登录 IM。
您可以参考快速开始,完成 IM SDK 初始化,并配置登录方式,登录 IM。
-
调用进入聊天室接口加入聊天室。
-
通过 setAudioProfile 方法设置音频参数和属性。
您可以根据对音质、声道、场景等的不同需求,选择不同的音频属性,获得最佳实时互动效果。
NERtcEx.getInstance().setParameters(mRtcParameters); //先设置参数,后初始化NERtcEx.getInstance().setAudioProfile(mAudioProfile,mAudioScenario);//初始化前设置音频场景
-
初始化音视频通话 2.0 SDK。
您可以参考快速入门初始化音视频通话 2.0 SDK。
NERtcEx.getInstance().init(getApplicationContext(),Config.APP_KEY,this,null);
-
在指定的通话 Activity 中实现监听。
public class MeetingActivity extends AppCompatActivity implements NERtcCallbackEx....
房间内操作
-
调用 joinChannel 接口加入房间。
public abstract int joinChannel(java.lang.String token, java.lang.String channelName, long uid);
注意:
- 如果您已调用服务端 API 创建了房间,客户端可以直接加入房间,若没有已存在的房间,SDK会自动创建。
- uid 是您自行生成的一个 long 类型的数据,作为用户唯一标识,这个 uid 需要在音频房间内唯一。后续的房间内用户相关的回调均会绑定这个 uid,但是它与聊天室的 accid 是两套体系。您需要在业务层维护业务绑定关系。
-
在语音聊天室中开始多人语音。
- 观众加入房间之后,需要先主动关闭自己的音频采集,然后在上麦成功之后打开即可。其他成员,如主播,加入之后默认开启音频。
- 调用
enableLocalAudio
上下麦,调用setRecordDeviceMute
实现麦上临时静音。 - 音频相关设置请参考 设置音频属性。
NERtc.getInstance().enableLocalAudio(Bool);// (不要频繁调用,直接开关音频设备) NERtcEx.getInstance().setRecordDeviceMute(Bool); // (可以频繁调用,只是设备采集的数据静音)
-
通过 NERtcCallback 监听回调。
-
麦序管理。
- 连麦者通过发送点对点自定义系统通知,主播端同意(或者代码直接同意实现鉴权),然后将连麦者添加到队列元素中;或者主播拒绝连麦申请,并将这个结果通过自定义系统通知发送回连麦申请方。
- 申请方收到同意的自定义系统通知之后,本地调用
enableLocalAudio
即可参与互动。业务层需要处理好 UI 展示的逻辑。 - 当聊天室队列发生更新时,会向聊天室内所有成员下发一条聊天室通知消息,客户端监听后做相应的UI处理。
退出房间
-
下麦。
根据上麦的方式,对应的取出聊天室队列中自己的元素。这个操作也会触发队列变更通知。
-
调用接口 leaveChannel 离开房间。
NERtcEx.getInstance().leaveChannel();
-
调用接口 release 销毁音视频实例。
NERtcEx.getInstance().release();
进阶功能
混音及音效
加入房间后,调用 startAudioMixing 方法,可以播放音乐文件,实现播放背景音乐的功能,也可以播放音效文件,实现鼓掌、欢呼、尖叫等氛围音效果。离开房间前调用 stopAudioMixing 方法,结束播放。
耳返
调用 enableEarback 方法开启主播的耳返功能。
通话质量监测
使用 NERtcStatsObserver 回调,将关键的音视频状况、网络状况、设备状态的相关指标实时回调给APP应用层,监测通话的整体体验。