IOS版本开发接入文档
一、概述
百度云短视频产品(SDK)专注移动端视音频场景研发,提供端到端的一站式视音频技术解决方案,不限于采集、录制、合成、上传、存储、分发,极大降低客户接入音视频产品的技术门槛。 1.1 注意事项 1.1.1 头文件引用说明 本SDK使用C++开发,对于引用<BDCloudAVContext/BDCloudAVContext.h>头文件的类文件,需要将.m文件修改成.mm文件,以适配C++。 1.1.2 运行环境 iOS9系统以上,Xcode->General->Depolyment Info->Depolyment Target
二、快速接入
请从百度云开发者中心下载最新版本拍摄器。
在使用拍摄器SDK,需要申请产品对应的授权文件,如无授权,产品无法正常使用。 申请成功后,会得到一个licenseID和对应授权文件下载地址,用户下载成功后,需要手动添加到项目工程中 注意:授权文件后缀名为.license。
三、使用说明
3.1 录制设置
录制的相关接口是在BDCloudAVStreamContext类里,包括采集预览(startPreview),录制(startRecording:),添加视频美颜(applyBeautyBaseVideoFx)等。注意:百度云拍摄器SDK所有的类都是以“BDCloud”开头。 3.1.1 BDCloudAVStreamContext类 BDCloudAVStreamContext是拍摄器SDK的流媒体上下文类,是接入拍摄器SDK产品的入口。开始使用前,需要先初始化BDCloudAVStreamContext类,注意BDCloudAVStreamContext是单例类。
BDCloudAVStreamContext初始化代码如下
_avStreamContext = [BDCloudAVStreamContext sharedInstance];
BDCloudAVStreamContext销毁代码如下
[_avStreamContext destroyInstance];
_avStreamContext = nil;
注意:BDCloudAVStreamContext初始化后,需要调用verifySDKLicense: completionHandler:验证客户的合法性,其中appid即用户申请的licenseID,若未申请授权,请参考快速接入
3.1.2 BDCloudAVStreamSettings类配置
BDCloudAVStreamSettings是拍摄器SDK配置项,支持客户调整摄像头位置、摄像头类型、视频维度(分辨率)、视频帧速率、视频帧码率及手电筒、对焦、曝光补光、预览放大缩小、预览模式。
考虑到配置项较多且偏专业,拍摄器SDK提供默认配置项,代码如下:
BDCloudAVStreamSettings *settings = [BDCloudAVStreamSettings defaultSettings];
3.1.3 预览前设置
完成流媒体上下文初始化及配置项后,下面就要创建预览前配置,创建拍摄器及预览画面,代码如下:
// 使用配置项创建拍摄器
_avStreamContext = [_avStreamContext initWithCaptureConfig:settings];
// 获取拍摄器预览界面
UIView *preview = _avStreamContext.view;
// 设置预览界面展示区域
preview.frame = self.view.bounds;
// 设置拍摄器回调代理
_avStreamContext.delegate = self;
// 将预览界面添加到用户控制器上
[self.view insertSubview:preview atIndex:0];
3.1.4 启动预览
启动预览对应startPreview接口,此接口发检查用户照相机和麦克风系统权限。
3.1.5 录制与停止录制
调用录制接口前startRecording: recordCallBack:,需要先创建录制文件的路径,建议用户使用.MOV和.mp4文件。录制接口在写入文件的同时,会不断回调给使用方,用户需要关心回调状态BDCloudAVStreamFileOutputState。
代码示例如下:
[[BDCloudAVStreamContext sharedInstance] startRecording:recordVideoPath recordCallBack:^(BDCloudAVStreamFileOutputState state, double recordSecond, NSError *error) {
switch (state) {
case BDCloudAVStreamFileOutputStateStarting:
break;
case BDCloudAVStreamFileOutputStateStarted:
break;
case BDCloudAVStreamFileOutputStateCancel:
break;
case BDCloudAVStreamFileOutputStateError:
//错误信息
break;
case BDCloudAVStreamFileOutputStateEnding:
//录制结束
break;
case BDCloudAVStreamFileOutputStateEnded:
break;
default:
break;
}
}];
停止录制,代码示例如下:
[[BDCloudAVStreamContext sharedInstance] stopRecording];
3.1.6 录制设置
设置闪光灯是否开启,代码示例如下:
AVCaptureFlashMode _flashMode;
_flashMode = _flashMode == AVCaptureFlashModeOff ? AVCaptureFlashModeOn : AVCaptureFlashModeOff;
[[BDCloudAVStreamContext sharedInstance] toggleFlash:_flashMode];
if (_flashMode == AVCaptureFlashModeOff) {
[[BDCloudAVStreamContext sharedInstance] toggleTorch:NO];
}else {
[[BDCloudAVStreamContext sharedInstance] toggleTorch:YES];
}
设置自动对焦
[[BDCloudAVStreamContext sharedInstance] setCameraContinuousAutofocus:YES];
[[BDCloudAVStreamContext sharedInstance] setCameraFocusPointOfInterest:[BDCloudAVStreamContext sharedInstance].view.center];
设置曝光点
[[BDCloudAVStreamContext sharedInstance] setCameraExposurePointOfInterest:[BDCloudAVStreamContext sharedInstance].view.center];
设置缩放
[[BDCloudAVStreamContext sharedInstance] setCameraZoomFactor:1.3];
3.2 美颜设置
添加美颜(applyBeautyBaseVideoFx)特效后,在预览窗口就可以看到美颜效果。录制视频时,用户需要根据手机性能任意选择带美颜录制或者不带美颜录制。 美颜特效分为基础美颜(美白、磨皮)和高级美颜(大眼、瘦脸)。
开启美颜,代码示例如下:
//开启美颜
[_avStreamContext applyBeautyBaseVideoFx];
//调整美白
[[BDCloudAVStreamContext sharedInstance] adjustBeautyWhiteLevel:newValue];
//调整磨皮
[[BDCloudAVStreamContext sharedInstance] adjustBeautyBlurLevel:newValue];
//调整大眼
[[BDCloudAVStreamContext sharedInstance] adjustBeautyEnlargingLevel:newValue];
//调整瘦脸
[[BDCloudAVStreamContext sharedInstance] adjustBeautyThinningLevel:newValue];
注意:需要在初始化拍摄器后开启美颜。 使用高级美颜时,需要申请对应权限,免费版本不支持此功能
3.3 滤镜设置
开启滤镜(applyEffect:)特效后,在预览窗口就可以看到滤镜效果。
代码示例如下:
[[BDCloudAVStreamContext sharedInstance] applyEffect:filterID];
注意:当前filterID仅支持内置滤镜使用,用户在申请授权成功后,会得到滤镜资源包,具体使用可以参考短视频SDK DemoD拍摄模块
3.4 贴纸设置
开启滤镜(applyLocalStickerVideoFx: stickerModelPath: stickerType: stickerIdentify:)特效后,在预览窗口就可以看到贴纸效果。
代码示例如下:
// 内置贴纸
NSString *name = [NSString stringWithFormat:@"AR.bundle/%@.zip", stickerID];
NSString *path = [[[NSBundle mainBundle]resourcePath] stringByAppendingPathComponent:name];
BOOL isExist = [[NSFileManager defaultManager] fileExistsAtPath:path];
//解压
if (isExist) {
NSString *destPath = [self localPath];
destPath = [destPath stringByAppendingPathComponent:stickerID];
BOOL bSucess = [self unzipStickerPackage:path destPath:destPath];
if (bSucess) {
// 开启贴纸
[[BDCloudAVStreamContext sharedInstance] applyLocalStickerVideoFx:destPath stickerModelPath:@"" stickerType:@"10" stickerIdentify:@"10273"];
}
} else {
// 关闭贴纸
[[BDCloudAVStreamContext sharedInstance] disabledStickerVideoFx];
}