10

【教程】5分钟快速集成UCloud实时音视频服务URTC-MacOS端

 3 years ago
source link: https://zhuanlan.zhihu.com/p/337392013
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【教程】5分钟快速集成UCloud实时音视频服务URTC-MacOS端

通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。

集成URTC SDK之前,需要在UCLOUD官网控制台创建URTC应用。

1. 登录UCLOUD控制台

在UCLOUD官网,【登录控制台】

使用URTC服务之前,首先需要注册账号 并且完成 实名认证

2.创建URTC应用

每个账号最大支持创建5个URTC应用,需要创建更多URTC应用,请联系客户经理增加配额。

可以通过2种方法:控制台、API创建URTC应用。

2.1 控制台创建URTC应用

  • 在控制台,【全部产品】-【视频服务】-【实时音视频】,找到【我的应用】
v2-fa7710fa19ab3332ba557f037917ec50_720w.jpg
  • 点击创建应用,输入应用名称,确定后保存。
  • 确定后,自动生成AppID、AppKey。
  • 绑定AppID及AppKey到您的应用中即可开始使用。

2.2 API创建URTC应用

通过 创建URTC 应用的API,也可以创建URTC应用。具体调用API的方法,请查看API文档

3. 下载资源

4. 开发语言以及系统要求

  • 系统版本:macOS 10.0;

5. 开发环境

  • Xcode 9.0及以上版本;
  • Apple开发证书或个人账号;

6. 搭建开发环境

6.1 得到动态库

下载SDK,得到的UCloudRtcSdk_mac.framework为动态库;

6.2 创建新的工程

使用XCode创建一个新的工程UCloudRtcSdk-mac-demo;

6.3 加入动态库到工程中

将已下载的动态库UCloudRtcSdk_mac.framework加入到UCloudRtcSdk-mac-demo工程中Embedded Binaries;

6.4 打开Xcode

将TARGETS>GENERAL>Deployment Target 设置为10.10及以上;

6.5 编辑info.plist,申请摄像头、麦克风权限

Privacy - Camera Usage Description
Privacy - Microphone Usage Description

6.6 打开网络请求相关权限

6.7 集成成功

按照上述步骤完成UCloudRtcSdk-mac-demo的前期SDK集成准备之后,执行编译
Commond + B,提示Build Success,表示SDK集成成功。

7. 初始化

建议在初始化 App 的同时,初始化 SDK。

7.1 导入 SDK 头文件

<UCloudRtcSdk_mac/UCloudRtcSdk_mac.h>

7.2 设置 userId 和 roomId,获取AppID

UCloudRtcEngine *engine = [[UCloudRtcEngine alloc]
initWithUserId:userId appId:appId roomId:roomId token:@""]];

务必要设置代理对象,并实现代理回调方法,设置代理对象失败,会导致 App 收不到相关回调。

engine.delegate = self;

7.3 调用接口初始化

使用之前需要对SDK进行相关设置,如果不设置,系统将会采用默认值。

self.engineMode = UCloudRtcEngineModeTrival; 默认为测试模式
self.engine.isAutoPublish = YES;//加入房间后将自动发布本地音视频 默认为YES
self.engine.isAutoSubscribe = YES;//加入房间后将自动订阅远端音视频 默认为YES
self.engine.isDesktop = NO;//发布桌面或者摄像头 默认为NO:摄像头 YES:桌面

8. 实现音视频通话

8.1 加入房间

[self.engine joinRoomWithcompletionHandler:^(NSData *data, NSUrlResponse *response, NSError error) {
}];

8.2 发布本地流

1)自动发布模式下,joinRoom成功后,随即发布本地流;

2)发布过程中可以监听以下事件获取发布状态,根据状态调用渲染或其他接口即可。

- (void)uCloudRtcEngine:(UCloudRtcEngine *)manager didChangePublishState:(UCloudRtcEnginePublishState)publishState {
    switch (publishState) {
        case UCloudRtcEnginePublishStateUnPublish:
            self.isConnected = NO;
            break;
        case UCloudRtcEnginePublishStatePublishing: {
            [self.bottomButton setTitle:@"正在发布..." forState:UIControlStateNormal];
        }
            break;
        case UCloudRtcEnginePublishStatePublishSucceed:{
            self.isConnected = YES;
            [self.view makeToast:@"发布成功" duration:1.5 position:CSToastPositionCenter];
            [self.bottomButton setTitle:@"发布成功" forState:UIControlStateNormal];
        }
            break;
        case UCloudRtcEnginePublishStateRepublishing: {
            [self.bottomButton setTitle:@"正在重新发布..." forState:UIControlStateNormal];
        }
            break;
        case UCloudRtcEnginePublishStatePublishFailed: {
            self.isConnected = NO;
            [self.bottomButton setTitle:@"开始发布" forState:UIControlStateNormal];
        }
            break;
        case UCloudRtcEnginePublishStatePublishStoped: {
            self.isConnected = NO;
            [self.view makeToast:@"发布已停止" duration:1.5 position:CSToastPositionCenter];
            [self.bottomButton setTitle:@"开始发布" forState:UIControlStateNormal];
        }
            break;
        default:
            break;
    }
}

8.3 订阅远程流

1)自动订阅模式下,joinRoom成功后,即可订阅远程流;

2)订阅成功,在回调事件中调用渲染接口即可。

-(void)uCloudRtcEngine:(UCloudRtcEngine *)channel didSubscribe:(UCloudRtcStream *)stream{
     [self reloadVideos];
}

8.4 离开房间

[self.engine leaveRoom];

8.5 编译、运行,开始体验吧!

本文源自UCloud用户社区,原文链接:5分钟快速集成UCloud实时音视频服务URTC-MacOS端-UCloud优刻得中立云计算用户问答社区


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK