音视频通话 2.0
Unity
新手接入指南
产品简介
产品介绍
功能特性
产品优势
基本概念
使用限制
产品计费
按量计费
资源包
更新日志
下载 SDK 和示例代码
快速开始
接入流程
创建应用
开通服务
集成 SDK(纯音频)
集成 SDK(音视频)
快速跑通 Sample Code
实现音频通话(纯音频)
实现音视频通话
Token 鉴权
基础功能
设置音频属性
设置视频属性
设置通话音量
屏幕共享
音频共享
监测发言者音量
通话中质量监测
进阶功能
音频管理
空间音效(纯音频版本)
空间音效(音视频版本)
客户端音频录制
原始音频数据
美声与变声
耳返
自定义音频采集与渲染
音效与伴音
媒体补充增强信息
视频管理
第三方美颜
自定义视频采集
加入多房间
媒体流管理
媒体流加密
视频流回退
AI 融合功能
AI 超分
AI 降噪
最佳实践
实现音视频安全检测
音视频参数配置推荐
API 参考
Unity API 参考
服务端 API
错误码
控制台指南
服务协议

实现音频通话(纯音频)

更新时间: 2023/02/27 16:29:11

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

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

前提条件

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

实现音频通话

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

1. 导入类

在您的工程中对应的 Activity 文件里添加以下代码,导入重要类。

using NERTC;

2. 获取 IRtcEngine 实例

在调用其他 API 前,您需要先执行 RtcEngine.GetInstance 获取 IRtcEngine 实例。

在 Android 平台,需要在调用初始化接口前,首先初始化 Java 环境。

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

    // 创建 SDK 的示例函数
    private void InitSDK() {
        
#if UNITY_ANDROID && !UNITY_EDITOR
      using(var playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
      using(var activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity"))
      using(var utilityClass = new AndroidJavaClass("com.netease.nertc.unity.UnityUtility"))
      {
        utilityClass.CallStatic("initialize", new object[1] { activity });
      }
#endif    
    ...
}

3. 初始化事件监听器

您可以通过 NERtcCallback 类的 onJoinChannel 回调监听加入房间的结果,同时该回调会抛出当前通话房间的 channelId 与加入房间总耗时(毫秒)。

在 SDK 初始化并加入房间成功后,服务器会进行响应,并触发此回调。

请在初始化方法中传入原型 InnerRtcEngineEventCallback.JoinChannel

// 当加入房间成功后的回调
private void OnJoinChannel(
    UInt64 cid, UInt64 uid,
    UInt32 result, UInt64 elapsed) {
    Debug.Log("OnJoinChannel Called");
}

// 创建 SDK 的示例函数
private void InitSDK() {
    ... // 接着上部分代码
    
    RtcEngineEventHandler eventHandler = new RtcEngineEventHandler();
    eventHandler.OnJoinChannel = OnJoinChannel; // 将回调函数注册到委托
    
    ...
}

4. 初始化引擎

您可以通过 InitSDK 方法创建实例函数,再调用 Initialize 方法初始化引擎。

// 创建 SDK 的实例函数
private void InitSDK() {
    ... // 接着上部分代码
    
    NERtcEngineContext param = new NERtcEngineContext();
    param.AppKey = "开通服获取到的 App Key";
    param.LogDirPath = "日志路径";
    param.LogFileMaxSizeKbytes = 2048;
    param.LogLevel = 5;
    param.EventHandler = eventHandler; // 将事件回调赋值给 param
    
    int ret = engine.Initialize(param); // 初始化,返回值保存到 ret
    
    if (ret == 0) {
        // 如果初始化成功
    }
    
    ...
}

5. 加入房间

调用 JoinChannel 方法加入房间。

如果执行顺利,则会触发已注册的 OnJoinChannel 方法。您也可以通过 InnerRtcEngineEventCallback.OnUserJoined 回调监听其它用户加入房间的通知。

  • 加入房间前,请确保已完成初始化相关事项。若您的业务中涉及呼叫邀请等机制,建议通过信令实现。
  • 在 NERTC SDK 中,本地音频的采集发布和远端音频订阅播放是默认启动的,正常情况下无需开发者主动干预。

参数说明

参数 说明
token 安全认证签名(NERTC Token)。可设置为:
  • null。调试模式下可设置为 null。安全性不高,建议在产品正式上线前在云信控制台中将指定应用的鉴权方式恢复为默认的安全模式。
  • 已获取的NERTC Token。安全模式下必须设置为获取到的 Token 。若未传入正确的 Token 将无法进入房间。

    推荐使用安全模式。

channel_name 房间名称,长度为 1 ~ 64 字节。目前支持以下 89 个字符:a-z, A-Z, 0-9, space, !#$%&()+-:;≤.,>? @[]^_{|}~"。
设置相同房间名称的用户会进入同一个通话房间。
您也可以在加入通道前,通过创建房间接口创建房间。加入房间时,若传入的 {channelName} 未事先创建,则云信服务器内部将为其自动创建一个名为 {channelName} 的通话房间。
uid 用户的唯一标识 id,房间内每个用户的 uid 必须是唯一的。

示例代码如下:

// 创建 SDK 的示例函数
private void InitSDK() {
    ... // 接着上部分代码
    
    if (ret == 0) {
        // 如果初始化成功
        
        // 加入房间 JoinChannel 需要填写参数:
        // token: String
        // channel id: String
        // user id: unsigned long
        engine.JoinChannel("token", "channel id", 12345678);
    }
    
    ...
}

6. 离开房间

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

示例代码如下:

// 销毁 SDK 的示例函数
private void ReleaseSDK() {
    int ret = engine.LeaveChannel(); // 离开房间
    
    Debug.LogFormat("Leave channel with ret{0}", ret);
}

7. 销毁实例

当确定 App 短期内不再使用音频通话实例时,您可以通过 InitSDK 方法创建销毁 SDK 的实例函数,再调用 Release 方法释放对应的对象资源。

// 销毁 SDK 的示例函数
private void ReleaseSDK() {
    ...
    
    engine.Release(true); // 释放引擎
}
此文档是否对你有帮助?
有帮助
我要吐槽
  • 前提条件
  • 实现音频通话
  • 1. 导入类
  • 2. 获取 IRtcEngine 实例
  • 3. 初始化事件监听器
  • 4. 初始化引擎
  • 5. 加入房间
  • 6. 离开房间
  • 7. 销毁实例