QVCloudEngine
示例
要运行示例项目,请克隆仓库,并首先从 Example 目录运行 pod install
。
需求
安装
QVCloudEngine 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行:
pod 'QVCloudEngine'
作者
接口文档
运行Demo工程,需要将申请到的AppKey、AppSecret添加到以下位置。
engineConfig.appKey = @"申请的appKey ";
engineConfig.appSecrect = @"申请的appSecrect";
功能概览
小影云端合成支持图片和视频云端模版合成。
前期准备
- 向小影对接人申请appKey和appSecrect(后续API接口签名认证将使用到);
- 申请小影云端合成SDK最新版本。
参数配置
- 网络请求支持http,在Info.plist中添加权限:
在Info.plist中添加 App Transport Security Settings 类型 Dictionary ;
并在App Transport Security Settings 下添加 Allow Arbitrary Loads 类型Boolean, 值设为 YES
接口说明
初始化
调用初始化云端合成SDK,在调用其他接口前需先调用初始化。
QVCloudEngineConfig *engineConfig = [[QVCloudEngineConfig alloc] init];
engineConfig.userId = @"第三方用户唯一标示,如果没有可以传,广告Id等";
engineConfig.appKey = @"申请的appKey ";
engineConfig.appSecrect = @"申请的appSecrect";
[QVCloudEngine initializeWithConfig:engineConfig];
请求参数
engineConfig : 初始化配置
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
engineConfig | 初始化配置 | QVCloudEngineConfig | 必须 |
QVCloudEngineConfig:初始化参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
appKey | 注册时申请的AppKey | String | 必须 |
appSecrect | 注册时申请的AppSecrect | String | 必须 |
userId | 第三方用户唯一标示, 如果没有可以传入广告Id、唯一id等。 |
String | 必须 |
countryCode | 国家代码 | String | 可选 |
languageCode | 语言代码 | String | 可选 |
获取素材模版列表
调用以获取合成素材列表。
//获取素材模版列表
QVTemplateConfig *templateConfig = [[QVTemplateConfig alloc] init];
templateConfig.pageNum = 1;
templateConfig.pageSize = 10;
[QVCloudEngine getTemplates:templateConfig success:^(QVTemplateResponse * _Nonnull responseObject) {
//code
} failure:^(QVErrorModel * _Nonnull errorModel) {
//code
}];
请求参数
QVTemplateConfig:获取素材请求参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
pageNum | 页码,默认从1开始 | number | 非必须 |
pageSize | 每页记录条数,默认10条,最大50。 注:超过50按照50生效。 |
number | 非必须 |
响应参数
QVTemplateResponse:素材详情列表参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
dataList | 素材详情列表 | NSArray <QVTemplateInfoModel *> *dataList | 非必须 |
hasMore | 分页参数,是否有下一页 | bool | 非必须 |
QVTemplateInfoModel:单个素材详情参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
templateId | 素材Id | number | 必须 |
orderNo | 排序序号 | number | 必须 |
icon | 缩略图URL,格式为gif/jpeg/png | string | 必须 |
previewurl | 预览URL | string | 必须 |
previewtype | 预览类型,1文字 2 图片 3 视频 4音频 5网页 6flash | number | 必须 |
duration | 时长(应用于音频和视频), 秒 | string | 必须 |
width | 宽度 | number | 必须 |
height | 高度 | number | 必须 |
maxMediaCount | 限制选择媒体文件个数 | number | 必须 |
title | 名称 | string | 必须 |
intro | 简介 | string | 必须 |
QVErrorModel:获取素材错误参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
code | 错误码 | number | 必须 |
message | 错误描述 | String | 必须 |
发起云端合成
传入合成PHAsset、获取到的素材信息以及其他可配置参数,调用以合成目标视频。
QVCompositeConfig *compositeConfig = [[QVCompositeConfig alloc] init];
compositeConfig.templateId = templateInfo.templateId;//素材模版的templateId
compositeConfig.resolution = resolution;//分辨率
NSMutableArray *mediaList = [NSMutableArray array];
QVCompositeMediaData *mediaDataModel = [[QVCompositeMediaData alloc] init];
mediaDataModel.asset = PHAsset;
[mediaList addObject:mediaDataModel];
compositeConfig.mediaDataList = mediaDataList;
[QVCloudEngine composite:compositeConfig start:^(QVCompositeTask * _Nonnull task, QVCompositePreResponse * _Nonnull response) {
} progress:^(QVCloudEngineCompositeState state) {
} success:^(QVCompositeResponse * _Nonnull response) {
} failure:^(QVCompositeTask * _Nonnull task, QVErrorModel * _Nonnull error, BOOL canForceComposite) {
}];
请求参数
QVCompositeConfig:合成视频请求参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
forceMake | 是否强制生成,true:强制,false:不强制,默认false。 例:素材要求选择人脸照片,选择的人脸照片像素低, 可以强制合成,但是建议更换更清晰的照片。 |
boolean | 非必须 |
templateId | 素材Id(在素材接口里面获取) | number | 必须 |
resolution | 视频分辨率:480p/ 720p/1080p | Resolution | 必须 |
mediaDataList | 本地图片组/视频 | NSArray <QVCompositeMediaData *> *mediaDataList | 必须 |
QVCompositeMediaData:单个源文件参数
名称 | 解释 | 类型 | 是否必须 | 注意 |
---|---|---|---|---|
资产 | Photokit 中的 PHAsset | PHAsset | 可选 | asset 和 filePath 至少有一项是必填项 |
filePath | 图片视频文件的路径 | String | 可选 | asset 和 filePath 至少有一项是必填项 |
响应参数
QVCompositePreResponse:云端合成预处理
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
businessId | 云端合成业务 Id | String | 必须 |
QVCompositeFileDataModel:云端合成完成
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
fileId | 文件唯一标识 | String | 必须 |
businessId | 云端合成业务 Id | String | 必须 |
fileUrl | 文件 URL,视频格式为 mp4 | String | 必须 |
coverImageUrl | 封面 URL,格式为 jpeg/png | String | 必须 |
duration | 文件时长(ms) | String | 必须 |
QVCompositeTask:云端合成任务
接口 | 解释 |
---|---|
forceMake | 强制制作,仅当制作失败且可强制制作时有效 |
State:云端合成中间状态
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
state | QVCloudEngineCompositeState_IDEL, // 初始状态 QVCloudEngineCompositeState_UPLOAD, // 进入文件上传阶段 QVCloudEngineCompositeState_COMPOSITE, // 进入合成阶段 QUERY, // 进入查询合成情况阶段 TIMEOUT, // 合成超时 QVCloudEngineCompositeState_SUCCESS, // 合成成功 FAILURE, // 合成失败 QVCloudEngineCompositeState_FAILURE,// 合成失败但可强制制作 STOP// 停止 |
State | 必须 |
查询视频列表
查询历史合成视频列表
[QVCloudEngine getVideosWithPageNum:1 pageSize:15 success:^(QVCompositeFileListResponse * _Nonnull response) {
[QVCloudEngine report:[response fetchFileIds]];//上报
} failure:^(QVErrorModel * _Nonnull errorModel) {
}];
请求参数
VideoConfig:视频请求参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
pageNum | 页码,默认从1开始 | number | 非必须 |
pageSize | 每页记录条数,默认10条,最大50。 注:超过50按照50生效。 |
number | 非必须 |
响应参数
QVCompositeFileListResponse:视频列表参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
data | 视频列表 | NSArray<QVCompositeFileDataModel *> *data | 非必须 |
hasMore | 分页参数,是否有下一页 | bool | 非必须 |
QVCompositeFileDataModel:单个视频参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
fileId | 文件唯一标识 | String | 必须 |
businessId | 业务 id | String | 必须 |
fileUrl | 文件 URL | String | 必须 |
coverImageUrl | 封面 URL | String | 必须 |
duration | 文件时长 | String | 必须 |
上报接口
当成功获取到视频后,调用上报接口,以统计有效合成。
[QVCloudEngine report:fileIds];
请求参数
名称 | 解释 | 类型 | 是否必须 |
---|---|---|---|
fileIds | 文件唯一标识(云端合成成功获取) | 列表 | 必须 |
问答
许可证
QVCloudEngine 遵循 MIT 许可协议。更多信息和许可证文件,请参阅 LICENSE 文件。