实现音频通话(纯音频)

更新时间: 2024/03/15 16:57:59

网易云信音视频通话产品的基本功能包括高质量的实时音频通话。当您成功初始化 SDK 之后,您可以简单体验本产品的基本业务流程。本文档为您展示音频通话提供的基本业务流程。

NERTC Unity SDK 纯音频版本目前支持音频通话与 RTC 房间管理、音频属性设置等音频相关方法,视频通话等功能请集成音视频版本 SDK

前提条件

请确认您已完成以下操作:

实现音频通话

本节主要介绍如何使用 NERTC SDK 实现音频通话。

步骤一 初始化 SDK

在调用其他 API 前,您需要先初始化 SDK,具体步骤如下。

若您开发的是 Android 端的应用,则需要将 SDK 包的 AndroidManifest.xml 文件内所含的权限合并至 Assets/Plugins/Android/AndroidManifest.xml 中。

  1. 调用 RtcEngine.GetInstance 方法获取 IRtcEngine 实例。
  2. 调用 IRtcEngine.Initialize 方法初始化 SDK,并在 UI 线程初始化 Dispatcher 对象。

示例代码如下:

using nertc;

class MyDemo {
    // 声明类成员
    IRtcEngine rtcEngine = IRtcEngine.GetInstance();

    // 创建 SDK 的示例函数,
    private void InitSDK() {
        //初始化Dispatcher,视屏回调纹理对象时需要用到,需要在UI线程调用
        _ = Dispatcher.Current;
        
        //初始化SDK引擎
        var param = new RtcEngineContext();
        param.appKey = "YOUR APPKEY";
        param.logPath = Application.persistentDataPath;
        param.logFileMaxSize = 200;
        param.logLevel =  RtcLogLevel.kNERtcLogLevelInfo;

#if UNITY_ANDROID && !UNITY_EDITOR
        AndroidJavaClass playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
        param.context = activity;
#endif

        int result = rtcEngine.Initialize(param);
        if(result != RtcErrorCode.kNERtcNoError) {
            //sdk 初始化失败
        }
    }
}

步骤二 添加监听事件

您可以注册 IRtcEngine 类中声明的事件来监听 SDK 可能触发的所有异步回调。

以监听OnJoinChannel 事件和OnLeaveChannel事件为例,示例代码如下:

// 当加入房间成功后的回调
private void onJoinChannel(ulong cid, ulong uid, RtcErrorCode result, ulong elapsed) {
   //进入房间事件回调结果
}

private void onLeaveChannel(RtcErrorCode result) {
  // 离开房间事件回调结果
}

//事件绑定
private void BindEvents() {
    //监听事件,其他事件类同此用法。
    rtcEngine.OnJoinChannel = onJoinChannel;
    rtcEngine.OnLeaveChannel = onLeaveChannel;
}

//事件解绑
private void UnbindEvents() {
    //取消事件监听
    rtcEngine.OnJoinChannel = null;
    rtcEngine.OnLeaveChannel = null;
}

步骤三 加入房间

调用 IRtcEngine.JoinChannel 方法加入房间,相关参数说明如下表所示。

加入房间前,请确保已完成初始化相关事项。若您的业务中涉及呼叫邀请等机制,建议通过信令实现。

参数 说明
token 安全认证签名(NERTC Token)。
  • 调试模式下:可设置为 null。产品默认为安全模式,您可以在网易云信控制台将鉴权模式修改为调试模式,具体请参见 Token 鉴权
    调试模式的安全性不高,请在产品正式上线前修改为安全模式。
  • 产品正式上线后:请设置为已获取的 NERTC Token。安全模式下必须设置为获取到的 Token 。若未传入正确的 Token 将无法进入房间。

    推荐使用安全模式

channel_name 房间名称,长度为 1 ~ 64 字节。目前支持以下 89 个字符:a-z, A-Z, 0-9, space, !#$%&()+-:;≤.,>? @[]^_{|}~"。
设置相同房间名称的用户会进入同一个通话房间。
您也可以在加入通道前,通过创建房间接口创建房间。加入房间时,若传入的 {channelName} 未事先创建,则云信服务器内部将为其自动创建一个名为 {channelName} 的通话房间。
uid 用户的唯一标识 id,房间内每个用户的 uid 必须是唯一的。此 uid 为用户在您应用中的 ID,请在您的业务服务器上自行管理并维护。
channelOptions (可选)设置加入房间时的一些特定参数,包括权限密钥(permissionKey)、小队ID(teamID)、范围语音的模式(mode)和范围语音的接收范围(audibleDistance),具体使用方法请参见范围语音(纯音频版本)

示例代码如下:

//加入房间
private void JoinChannel() {
    // 初始化成功之后,加入房间 JoinChannel 需要填写参数:
    int result = rtcEngine.JoinChannel(
        "YOUR TOKEN",
        "YOUR CHANNEL NAME",
        12345678 //YOUR UID
    );
    if(result != (int)RtcErrorCode.kNERtcNoError) {
        //加入房间失败
    }
}

SDK 发起加入房间请求后,服务器会进行响应,您可以通过初始化时设置的 OnJoinChannel 回调监听本地用户加入房间的结果。

此外,您也可以调用 IRtcEngine.OnUserJoined 回调监听其它用户加入房间的通知。

步骤四 发布本地音频流(可选)

在 NERTC SDK 中,本地音频的采集发布和远端音频的订阅播放默认启动,正常情况下无需您主动干预。

此外,您也可以调用 IRtcEngine.EnableLocalAudio 方法开启或关闭音频设备,以控制本地音频流的发布。

示例代码如下:

private void EnableLocalAudio() {
    int result = rtcEngine.EnableLocalAudio(true); // true启用音频设备,false则关闭音频设备
    if(result != (int)RtcErrorCode.kNERtcNoError) {
        //失败
    }
}

步骤五 离开房间

调用 IRtcEngine.LeaveChannel 方法退出通话房间。

示例代码如下:

// 离开房间
private void LeaveChannel() {
    // 离开房间
    int result = rtcEngine.LeaveChannel();
    if(result != (int)RtcErrorCode.kNERtcNoError) {
      //失败
    }
}

步骤六 销毁实例

当确定 App 短期内不再使用音视频通话实例时,可以调用 IRtcEngine.Release 方法释放对应的对象资源。

当此接口调用成功之后,若您想再次使用 SDK,需要重新调用初始化的相关接口。

示例代码如下:

// 销毁 SDK 的示例函数
private void OnApplicationQuit() {
    // 释放引擎
    int result = rtcEngine.Release(true);
    if(result != RtcErrorCode.kNERtcNoError) {
      //失败
    }
}
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现音频通话
  • 步骤一 初始化 SDK
  • 步骤二 添加监听事件
  • 步骤三 加入房间
  • 步骤四 发布本地音频流(可选)
  • 步骤五 离开房间
  • 步骤六 销毁实例