本文将介绍如何快速完成 Unity RTC Engine 的接入,实现一个基本的音视频通话。
环境准备
Unity 建议 2022.3.13f1版本
目前支持 Android、iOS、Windows、macOS 平台。
Unity 需要包含
Android Build Support、iOS Build Support、Windows Build Support 和 macOS Build Support 模块。其中 iOS 端开发请确保您的项目已设置有效的开发者签名。
接入指引
步骤1:导入 SDK
1. 打开 Unity 创建一个您自己的 Unity 程序。
2. 下载 Unity SDK,解压 SDK 库包含如下文件:

3. 将解压后 SDK 目录下的文件
Plugins、TRTCSDK拷贝到您的项目Assets文件目录下。步骤2:配置项目
iOS/Mac/Android 需要在工程中添加对相机和麦克风的权限申请:
iOS/Mac 相机和麦克风的权限申请
1. 在 Unity 工程中打开
Project Settings 的 Player 设置界面。2. 如下图所示分别依次对 Mac / iOS 平台的
Camera Usage Description、Microphone Usage Description 添加对应权限申请的描述语句。

Android 相机和麦克风的权限申请
1. 打开您工程下的
AndroidManifest.xml 文件。2. 在其中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.CAMERA" /><uses-feature android:name="android.hardware.camera.autofocus" />
步骤3:iOS 工程添加 GME SDK 库文件
在 TRTC SDK 目录下,提供了
iOSAddDylib.cs 脚本,在 Unity 导出iOS Xcode工程时会自动将 iOS 的 SDK 库文件加载到 Xcode 工程,无需您在手动导入。

注意:
必须保持
Editor文件目录路径和 SDK 文件目录在同一目录下,否则导入库文件会失败。步骤4:创建 TRTC 实例
1. 引入 TRTC 命名空间。
using trtc;
2. 继承 TRTC Unity SDK 的
ITRTCCloudCallback 类重写 ITRTCCloudCallback 方法,用来声明定义 TRTCCloud 回调事件。public class AppExample : MonoBehaviour,ITRTCCloudCallback {private ITRTCCloud mTRTCCloud; // 声明 ITRTCCloud 成员变量#region ITRTCCloudCallbackpublic:public void onError(TXLiteAVError errCode, String errMsg, IntPtr arg) {} // 监听 'onError' 事件public void onWarning(TXLiteAVWarning warningCode, String warningMsg, IntPtr arg) {} // 监听 'onWarning' 事件public void onEnterRoom(int result) {} // 监听进房结果事件public void onExitRoom(int reason) {} // 监听退房结果事件// to do other event.........#endregion}
3. 调用接口获取 TRTC 实例。
mTRTCCloud = ITRTCCloud.getTRTCShareInstance();
4. 调用
addCallback 接口用来添加监听 TRTCCloud 回调事件。mTRTCCloud.addCallback(this);
步骤5:进入房间
设置进房参数
TRTCParam 并调用 enterRoom 即可成功进入房间,通过监听 onEnterRoom 回调确定是否进房成功。void OnEnterRoomClick() {TRTCParams trtcParams = new TRTCParams();trtcParams.sdkAppId = 1400xxxxx;trtcParams.roomId = 345;trtcParams.userId = "123";trtcParams.userSig = "";TRTCAppScene scene = TRTCAppScene.TRTCAppSceneLIVE;mTRTCCloud.enterRoom(ref trtcParams, scene);}
步骤6:打开/关闭摄像头并发布视频流
1. 首先在 Unity 工程创建一个组件
RawImage: videoView作为startLocalPreview 接口参数 view 的值。2. 在调用接口
startLocalPreview 打开摄像头预览之前,您可以通过调用接口 setLocalRenderParams 来设置本地预览的渲染参数。void OnStartLocalPreviewClick() {// 设置本地预览渲染参数private TRTCRenderParams renderParams = new TRTCRenderParams();renderParams.fillMode = TRTCVideoFillMode.TRTCVideoFillMode_Fit;renderParams.mirrorType = TRTCVideoMirrorType.TRTCVideoMirrorType_Disable;renderParams.rotation = TRTCVideoRotation.TRTCVideoRotation0;mTRTCCloud.setLocalRenderParams(renderParams);// 对前置摄像头采集内容进行本地预览并发布视频流mTRTCCloud.startLocalPreview(true, videoView);// 对后置摄像头采集内容进行本地预览并发布视频流mTRTCCloud.startLocalPreview(false, videoView);}
如果您需要关闭摄像头采集并停止推送视频流,请调用
stopLocalPreview关闭摄像头预览并停止推送本地视频信息。void OnStopLocalPreviewClick() {mTRTCCloud.stopLocalPreview();}
步骤7:打开/关闭麦克风并发布音频流
调用
startLocalAudio 开启麦克风采集,请根据您的需求选择以下其中一个声音质量参数 Quality。void OnStartLocalAudioClick() {// 开启麦克风采集,设置当前场景为:语音模式// 具有高的噪声抑制能力,有强有弱的网络阻力mTRTCCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualitySpeech);}
void OnStartLocalAudioClick() {// 开启麦克风采集并发布音频流,设置当前场景为:音乐模式// 为获得高保真度,低音质损失,建议配合专业声卡使用mTRTCCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualityMusic);}
如果您需要关闭麦克风采集并停止推送音频流,请调用
stopLocalAudio关闭麦克风采集并停止推送本地音频流。void OnStopLocalAudioClick() {mTRTCCloud.stopLocalAudio();}
步骤8:播放/停止视频流
1. 在进入房间之前对
onUserVideoAvailable 进行监听,当您收到 onUserVideoAvailable(userId, true) 通知时,表示该路画面已经有可播放的视频帧到达。public void onUserVideoAvailable(String userId, bool available) {}
2. 调用
startRemoteView/stopRemoteView 选择播放或停止远端视频画面。void OnStartRemoteViewClick() {// videoView为unity的组件RawImagemTRTCCloud.startRemoteView(“denny”, TRTCVideoStreamType.TRTCVideoStreamTypeBig, videoView);}
3. 调用
stopRemoteView 停止播放远端画面。void OnStopRemoteViewClick() {mTRTCCloud.stopRemoteView(”denny“, TRTCVideoStreamType.TRTCVideoStreamTypeBig); // 仅停止播放 denny 的视频mTRTCCloud.stopAllRemoteView(true); // 停止播放所有远端用户}
步骤9:播放/停止音频流
调用
muteRemoteAudio 选择播放或停止远端声音。void OnMuteRemoteAudioClick() {// 静音mTRTCCloud.muteRemoteAudio("denny", true); // 仅静音 dennymTRTCCloud.muteAllRemoteAudio(true); // 静音所有远端用户}
void OnMuteRemoteAudioFalseClick() {// 取消静音mTRTCCloud.muteRemoteAudio("denny", false); // 仅取消静音 dennymTRTCCloud.muteAllRemoteAudio(false); // 取消静音所有远端用户}
步骤10:退出房间
1. 调用
exitRoom 退出当前的房间。void OnExitClick() {mTRTCCloud.exitRoom();}
2. TRTC SDK 会在退房结束后通过
onExitRoom 回调事件通知您。public void onExitRoom(int reason) {} // 监听退房结果事件