集成SDK
更新时间:2022-02-25
说明
- 提供的项目以 Xcode 13.0 为例
准备环境
- Xcode 9.0 或以上版本
- 支持 iOS 8.0 或以上版本的 iOS 设备
- 支持音视频功能的模拟器或真机
下载SDK
进入RTC文档中心,点击“下载专区>客户端SDK下载”,即可下载iOS客户端。
集成SDK
创建一个iOS项目,若已有 iOS 项目,可以直接集成 SDK。此版本SDK提供静态库与动态库两种形式,选择其中一种集成即可。
添加 SDK 静态库文件
- 将文件夹内的 BaiduRtcRoom.framework SocketRocket.framework文件复制到项目文件夹下
- 打开 Xcode,选择:项目 TARGET -> Build Phases ->Link Binary With Libraries,添加 SDK 静态库文件到项目。
![]()
添加 SDK 动态库文件
- 将dynamic文件夹内的 BaiduRtcRoom.framework 文件复制到项目文件夹下
- 打开 Xcode,使用
Add Files to "xxx"(xxx 为用户的项目名)
,添加 SDK 动态库文件到项目。- 打开 Xcode,选择:项目 TARGET -> General -> Link Binary With Libraries,添加 BaiduRtcRoom.framework,Status 设置为 Requied。
- 继续在 Xcode 中,选择:项目 TARGET -> General -> Frameworks,Libraries,and Embedded Content,将 BaiduRtcRoom.framework设置为Embed & Sign
项目设置
- 打开 Xcode,选择:项目 TARGET -> General -> Deployment Target,设置 8.0 或以上版本。
- 继续在 Xcode 中,选择:项目 TARGET -> Build Settings -> Build Options -> Setting,设置要编译的项目 TARGET。
添加系统依赖库
集成 SDK 静态库/动态库,不需要额外添加其他系统依赖库。
添加相机/麦克风权限
在Info.plist文件中添加Privacy相机/麦克风权限
添加Background Modes
在Target -> Signing & Capabilities -> Background Modes中添加如下Modes
使用美颜外部采集功能
- 集成使用美颜外部采集功能,需要导入BDCloudAVContext.framework静态库,配置引用路径:
- 需要添加BDCloudAVContext.framework 依赖库如下:
- 需要配置其依赖库:libanakin_lite_static.a,并且TARGET->Build Settings->Other Linker Flags添加-ObjC与-force_load
- 使用美颜功能,需要官网申请licenseId与对应的license授权文件,申请步骤如下:
- 进入官网百度智能云,选择短视频SDK
- 选择立即使用,选择license申请,填写项目信息,申请的功能权限,下载SDK
- 或直接进入license申请,选择产品服务->智能视频SDK->选择申请license,填写相关信息,获取license
- 审核成功后,下载对应的license文件,将license文件放入到工程中
- 在AppDelegate.mm中,添加如下代码,将licenseId替换自己申请的
可参考短视频SDK集成申请license授权。
实现音视频通话
本节介绍如何实现音视频通话。视频通话的 API 调用时序见下图:
代码示例
1.在您的开发项目中导入头文件
#import <BaiduRtcRoom/BaiduRtcRoom.h>
2.定义 rtc room hanlde 变量
@property (nonatomic, strong) BaiduRtcRoomApi *rtcRoomApi;
3.初始化 sdk, 返回 rtc room handle, 初始化的时候要带上 appid,token 串,和 delegate
3.1 内部采集
self.rtcRoomApi = [[BaiduRtcRoomApi alloc] initSDKWithAppID:self.appId
tokenStr:self.tokenStr
delegate:self];
3.2 外部采集
- (BDCloudAVRTCRoomVideoCaptureSessionKit *)sessionKit{
if (!_sessionKit) {
BDCloudRTCRoomAVCaptureSettings *rtckitSetting = [BDCloudRTCRoomAVCaptureSettings defaultSetting];
rtckitSetting.appName = self.nibName;
rtckitSetting.appName = self.roomName;
rtckitSetting.rtcAppId = self.appId;
rtckitSetting.rtcToken = self.tokenStr;
CMVideoDimensions dimension;
dimension.width = [[RTCSettingsModel sharedInstance] currentVideoResolutionWidthFromStore];
dimension.height = [[RTCSettingsModel sharedInstance] currentVideoResolutionHeightFromStore];
rtckitSetting.caputreDimension = dimension;
_sessionKit = [[BDCloudAVRTCRoomVideoCaptureSessionKit alloc] initWithConfig:rtckitSetting delegate:self];
_sessionKit.avcaptureSession.captureDelegate = self;
}
return _sessionKit;
}
具体代码可参考demo中的BDCloudAVRTCRoomVideoCaptureSessionKit.h文件
4.音视频参数设置:
RtcParameterSettings *rps = [[RtcParameterSettings alloc] init];
rps.videoFps = 29;
rps.videoWidth = 192;
rps.videoHeight = 144;
rps.videoBitrate = 300;
//使用外部采集。若 enable 外部采集,需实现 BaiduVideoCaptureFactory 和 BaiduVideoCaptureDevice 两种 protocol;其中 BaiduVideoCaptureFactory delegate 需要通过 setVideoCaptureFactory 设置给 SDK.
rps.isEnableExternalCapturer = YES;
[self.rtcRoomApi setParamSettings:rps paramType:RTC_VIDEO_PARAM_SETTINGS_CAPTURE_MODE];
//使用外部渲染,外部渲染远端视频画面。若 enable 外部渲染,需实现 BaiduRtcApiRenderDelegate protocol, 并通过 setRenderDelegate 设置给 SDK.
rps.isEnableExternalRender = YES;
[self.rtcRoomApi setParamSettings:rps paramType:RTC_VIDEO_PARAM_SETTINGS_RENDER_MODE];
// audio capture sourece
rps.isEnableExternalAudioDevice = YES;
[self.rtcRoomApi setParamSettings:rps paramType:RTC_AUDIO_PARAM_SETTINGS_DEVICE_MODE];
//使用声音录制, 连麦时混合后的声音抛给用户处理。若 enable 本地采集和远端声音混功能,需实现 BaiduRtcApiAudioRecordDelegate protocol, 并通过 setAudioRecordDelegate 设置给 SDK
rps.isExportAudioRecordPlayoutMix = YES;
[self.rtcRoomApi setParamSettings:rps paramType:RTC_PARAM_SETTINGS_ALL];
- 视频显示 view 设置
//设置本地视频显示view
[self.rtcRoomApi setLocalDisplay:_videoCallView.localVideoView];
//设置远端用户视频显示view
[self.rtcRoomApi setRemoteDisplay:videoInfo.videoView userId:rtcStreamInfo.userId];
- 登录房间
uint32_t tempUserId = [self getRandomNumber:1000 to:9000];
[self.rtcRoomApi loginRtcRoomWithRoomName:self.roomName
userID:tempUserId
displayName:@"James"];
- 发布流
[self.rtcRoomApi publishStreaming];
- 登出房间,结束音视频通话
[self.rtcRoomApi logoutRtcRoom];