摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。通过集成,可以快速实现实时音视频通话。
通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。
集成URTC SDK之前,需要在UCLOUD官网控制台创建URTC应用。
在UCLOUD官网,【登录控制台】。
使用URTC服务之前,首先需要注册账号 并且完成 实名认证 。
每个账号最大支持创建5个URTC应用,需要创建更多URTC应用,请联系客户经理增加配额。
可以通过2种方法:控制台、API创建URTC应用。
通过 创建URTC 应用的API,也可以创建URTC应用。具体调用API的方法,请查看API文档。
通过集成SDK,可以快速实现实时音视频通话。
下载SDK,得到的UCloudRtcSdk_ios.framework为动态库;
使用XCode创建一个新的工程UCloudRtcSdk-ios-demo;
将已下载的动态库UCloudRtcSdk_ios.framework加入到UCloudRtcSdk-ios-demo工程中Embedded Binaries;
打开Xcode,选择:项目TARGET ->General->Deployment Target,设置8.0或以上版本;
Privacy - Camera Usage Description
Privacy - Microphone Usage Description
为保障APP退入手机后台之后,通话可以保持不中断,建议开启后台音频权限,SDK默认进入后台之后继续推送音频流。
按照上述步骤完成UCloudRtcSdk-ios-demo的前期SDK集成准备之后,请使用Xcode连接iPhone真机,在真机调试环境下,执行编译Commond + B,提示Build Success,表示SDK集成成功。
建议在初始化 App 的同时,初始化 SDK。
import UCloudRtcSdk_ios
UCloudRtcEngine *engine = [[UCloudRtcEngine alloc] initWithUserId:userId appId:appId roomId:roomId appKey:appKey token:token]];
UCloudRtcEngine *engine = UCloudRtcEngine.init(userId:userId, appId: appId, roomId:roomId , appKey: appKey, token:token)
务必要设置代理对象,并实现代理回调方法,设置代理对象失败,会导致 App 收不到相关回调。
engine.delegate = self;
self.engine?.delegate = self
使用之前需要对SDK进行相关设置,如果不设置,系统将会采用默认值。
初始化完成后,即可调用 SDK 相关接口,实现对应功能。
self.engine.isAutoPublish = YES;//加入房间后将自动发布本地音视频 默认为YES
self.engine.isAutoSubscribe = YES;//加入房间后将自动订阅远端音视频 默认为YES
self.engine.isOnlyAudio = NO;//将启用纯音频模式 默认为NO
self.engine.isDebug = NO;//是否开启日志
self.engine.videoProfile = UCloudRtcEngine_VideoProfile_360P_1;//设置视频分辨率
self.engine.streamProfile = UCloudRtcEngine_StreamProfileAll;//设置流权限
self.engine?.isAutoPublish = ture;//加入房间后将自动发布本地音视频 默认为ture
self.engine?.isAutoSubscribe = ture;//加入房间后将自动订阅远端音视频 默认为ture
self.engine?.isOnlyAudio = false;//将启用纯音频模式 默认为false
self.engine?.isDebug = false;//是否开启日志
self.engine?.videoProfile = ._VideoProfile_360P_1;//设置视频分辨率
self.engine?.streamProfile = .streamProfileAll;//设置流权限
[self.engine joinRoomWithcompletionHandler:^(NSData *data, NSUrlResponse *response, NSError error) {
}];
self.engine?.joinRoomWithcompletionHandler({(data, response, error) -> Void in})
1)自动发布模式下,joinRoom成功后,即可发布本地流,无需再次调用publish接口;
2)手动发布模式下,joinRoom成功后,可通过下述接口发布本地流;
[self.engine publish];
self.engine?.publish()
3)发布过程中可以监听以下事件获取发布状态,根据状态调用渲染或其他接口即可。
- (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;
}
}
func uCloudRtcEngine(_ manager: UCloudRtcEngine, didChange publishState: UCloudRtcEnginePublishState) {
switch publishState {
case .unPublish:
self.isConnected = false
case .publishing:
CBToast.showToastAction(message: "正在发布...")
case .publishSucceed:
CBToast.showToastAction(message: "发布成功")
self.isConnected = true;
self.bottomButton?.setTitle("发布成功", for: .normal)
case .republishing:
self.bottomButton?.setTitle("正在重新发布...", for: .normal)
case .publishFailed:
self.isConnected = false;
CBToast.showToastAction(message: "开始发布")
case .publishStoped:
self.isConnected = false;
CBToast.showToastAction(message: "发布已停止")
self.bottomButton?.setTitle("开始发布", for: .normal)
default:
break
}
}
[self.engine unPublish];
self.engine?.unPublish()
1)自动订阅模式下,joinRoom成功后,即可订阅远程流,无需再次调用subscribeMethod接口;
2)手动订阅模式下,joinRoom成功后,可通过下述接口订阅远程流;
[self.engine subscribeMethod:remoteStream];
self.engine?.subscribeMethod(remoteStream)
3)订阅成功,在回调事件中调用渲染接口即可。
-(void)uCloudRtcEngine:(UCloudRtcEngine *)channel didSubscribe:(UCloudRtcStream *)stream{
[self reloadVideos];
}
func uCloudRtcEngine(_ channel: UCloudRtcEngine, didSubscribe stream: UCloudRtcStream) {
self.reloadVideos()
}
}
[self.engine unSubscribeMethod:remoteStream];
self.engine?.unSubscribeMethod(remoteStream)
[self.engine leaveRoom];
self.engine?.leaveRoom()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/125832.html
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URTC SDK之前,需要在UCLOUD官...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。推流成功后,即可直播观看视频。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URTC S...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。初始化建议在初始化的同时,初始化。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URTC...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。集成之前,需要在官网控制台创建应用。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URT...
摘要:通过集成,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交在线教育和培训远程医疗在线会议直播等多种业务场景。使用服务之前,首先需要注册账号并且完成实名认证。确定后,自动生成。通过集成URTC SDK,可以从零开始,快速搭建出实时音视频通信平台,可以应用于语音和视频社交、在线教育和培训、远程医疗、在线会议、直播等多种业务场景。 集成URTC SDK之前,需要在UCLOUD官...
阅读 3514·2023-04-25 20:09
阅读 3720·2022-06-28 19:00
阅读 3035·2022-06-28 19:00
阅读 3058·2022-06-28 19:00
阅读 3131·2022-06-28 19:00
阅读 2859·2022-06-28 19:00
阅读 3014·2022-06-28 19:00
阅读 2610·2022-06-28 19:00