UIPLShortVideo
概述
UIPLShortVideo 封装了七牛的短视频 SDK(专业版SDK),同时集成了抖音的美颜等功能。
使用本模块需要先跟抖音和七牛注册账号并开通相关权限,获取相关参数和文件。
本模块是一套完整的短视频录制器,自带UI,只需一个接口即可开发出完整的短视频录制功能。简单快捷。
注意:iOS端授权文件和包名(bundle ID)是绑定的,否则运行闪退。
Android需要如下配置
- 下载自定义模块qiniuShortvideoRes
- 解压后将 qiniushortvideores-release.aar->assets->resource下相应的bundle目录替换为自己的重新打包,自定义模块编译即可
Android调用流程如下
- 调用auth进行授权,返回authorized表示授权成功,unAuthorized授权失败联系七牛商务
- 授权成功,调用loadRes加载/检测是否加载美颜,特效资源
- 资源加载成功后open即可
注意事项
- openView调用之后需要调用onResume接口
- closeView调用之前需要调用onPause接口(否则可能导致摄像头无法释放的问题)
auth
授权 (暂仅支持Android)
auth(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventType:'authorized' // 取值范围如下:
//authorized 授权成功
//unAuthorized 未授权成功
}
示例代码
var PLShortVideo = api.require('UIPLShortVideo');
PLShortVideo.auth(function(ret){
alert(JSON.stringify(ret));
});
loadRes
加载资源(第一次使用的时候会加载资源,耗时较长) (暂仅支持Android)
loadRes(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventType:'resStartLoad' // 取值范围如下:
//resStartLoad 开始加载美颜,贴纸等资源文件
//resReady 资源已经加载完毕
}
示例代码
var PLShortVideo = api.require('UIPLShortVideo');
PLShortVideo.loadRes(function(ret){
alert(JSON.stringify(ret));
});
open
打开视频录像机
open({params},callback(ret))
params
resPath:
- 类型:字符串
- 描述:美颜资源的路径;仅支持 fs://
- 说明:如果需要将美颜资源放到sdcard,只需要指定该路径就可以,不需要再使用自定义模块 qiniuShortvideoRes
modelFileDirPath:
- 类型:字符串
- 描述:算法模型文件所在目录路径,要求本地路径。如:widget://res/ModelResource.bundle
licenseFilePath:
- 类型:字符串
- 描述:授权文件路径,要求本地路径。如:widget://res/LicenseBag.bundle/qiniu_20200214_20210213_com.qbox.PLShortVideoKit.ByteDance.Demo_qiniu_v3.4.2.licbag
maxDuration:
- 类型:数字类型
- 描述:(可选项)视频录制的最大时长,单位为秒
- 默认:10
minDuration:
- 类型:数字类型
- 描述:(可选项)视频录制的最短时间,单位为秒;
- 默认:2
beautifyModeOn:
- 类型:布尔类型
- 描述:(可选项)是否开启美颜
- 默认:true
bgmPath:
- 类型:字符串
- 描述:背景音乐路径,要求本地路径(fs://、widget://,android仅支持fs)
token:
- 类型:字符串
- 描述:七牛云存储上传token
domain:
- 类型:字符串
- 描述:七牛云存储上传域名
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventType:'uploaded' //字符串类型;交互事件类型;取值范围
//cancel:取消
//uploaded:已上传
localPath:'', //字符串类型;视频本地路径
url:'', //字符串类型;视频服务器端路径
error:'' //字符串类型;错误信息
}
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.open({
modelFileDirPath:"widget://res/ModelResource.bundle",
licenseFilePath:"widget://res/LicenseBag.bundle/qiniu_20200214_20210213_com.qbox.PLShortVideoKit.ByteDance.Demo_qiniu_v3.4.2.licbag",
bgmPath:'widget://res/ml.mp3',
beautifyModeOn:true,
minDuration:10,
maxDuration:60
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
openView
打开视频录像机
openView({params},callback(ret))
params
rect:
- 类型:JSON 对象
- 描述:(可选项)模块的位置及尺寸
- 内部字段:
{
x: 0, //(必填项)数字类型;模块左上角的 x 坐标(相对于所属的 Window 或 Frame);默认值:0
y: 0, //(必填项)数字类型;模块左上角的 y 坐标(相对于所属的 Window 或 Frame);默认值:0
w: 320, //(必填项)数字类型;模块的宽度;默认值:所属的 Window 或 Frame 的宽度
h: 300 //(必填项)数字类型;模块的高度;默认值:所属的 Window 或 Frame 的高度
}
resPath:
- 类型:字符串
- 描述:美颜资源的路径;仅支持 fs://
- 说明:如果需要将美颜资源放到sdcard,只需要指定该路径就可以,不需要再使用自定义模块 qiniuShortvideoRes
modelFileDirPath:
- 类型:字符串
- 描述:算法模型文件所在目录路径,要求本地路径。如:widget://res/ModelResource.bundle
licenseFilePath:
- 类型:字符串
- 描述:授权文件路径,要求本地路径。如:widget://res/LicenseBag.bundle/qiniu_20200214_20210213_com.qbox.PLShortVideoKit.ByteDance.Demo_qiniu_v3.4.2.licbag
maxDuration:
- 类型:数字类型
- 描述:(可选项)视频录制的最大时长,单位为秒
- 默认:10
minDuration:
- 类型:数字类型
- 描述:(可选项)视频录制的最短时间,单位为秒;
- 默认:2
beautifyModeOn:
- 类型:布尔类型
- 描述:(可选项)是否开启美颜
- 默认:true
bgmPath:
- 类型:字符串
- 描述:背景音乐路径,要求本地路径(fs://、widget://,android仅支持fs)
token:
- 类型:字符串
- 描述:七牛云存储上传token
domain:
- 类型:字符串
- 描述:七牛云存储上传域名
fixedOn:
- 类型:字符串类型
- 描述:(可选项)模块视图添加到指定 frame 的名字(只指 frame,传 window 无效)
- 默认:模块依附于当前 window
fixed:
- 类型:布尔
- 描述:(可选项)模块是否随所属 window 或 frame 滚动
- 默认值:true(不随之滚动)
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status:, //布尔类型;true 、 false
eventType:'uploaded' //字符串类型;交互事件类型;取值范围
//cancel:取消
//uploaded:已上传
//show 视图显示事件
//takePic 拍照模式下拍照事件
localPath:'', //字符串类型;视频本地路径
firstFramePath:'', //字符串类型;视频首帧图片路径
duration:100000, //数字类型;视频长度(单位:ms)
url:'', //字符串类型;视频服务器端路径
clickType:'', //字符串类型;
- 'music' //点击音乐按钮的回调
error:'' //字符串类型;错误信息
}
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.openView({
modelFileDirPath:"widget://res/ModelResource.bundle",
licenseFilePath:"widget://res/LicenseBag.bundle/qiniu_20200214_20210213_com.qbox.PLShortVideoKit.ByteDance.Demo_qiniu_v3.4.2.licbag",
bgmPath:'widget://res/ml.mp3',
beautifyModeOn:true,
minDuration:10,
maxDuration:60
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
closeView
关闭视频录像机
closeView(callback(ret))
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
eventType: cancel //字符串类型;交互事件类型;取值范围
}
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.closeView({
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
screenshot
截帧
screenshot({params}, callback(ret))
params
savePath:
- 类型:字符串
- 描述:保存路径(仅支持fs://)
- 示例:fs://capture_frame.jpg
callback(ret)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: true, // 布尔;是否截帧成功
msg:'', // 字符串;错误信息
path:'', // 字符串;截屏后再次返回的路径
}
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.screenshot({
savePath:'fs://capture_frame.jpg'
},function(ret){
api.alert({msg:JSON.stringify(ret)});
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setBackgroundMusic
设置背景音乐
setBackgroundMusic({params})
params
bgmPath:
- 类型:字符串
- 描述:背景音乐路径(fs://、widget://,android仅支持fs)
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.setBackgroundMusic({
bgmPath:'widget://res/ml.mp3',
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
closeBackgroundMusic
取消背景音乐
closeBackgroundMusic()
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.closeBackgroundMusic();
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setRecordDuration
设置视频录制时间
setRecordDuration({params})
params
min:
- 类型:数字
- 描述:最短录制时间(单位:秒)
- 默认:2秒
max:
- 类型:数字
- 描述:最长录制时间
- 默认:10
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.setRecordDuration({
min:2,
max:10
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
setCameraMode
设置相机模式
setCameraMode({params})
params
mode:
- 类型:字符串
- 描述:相机模式
- 取值:
- takePic 拍照
- videoRecord 录制视频
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.setCameraMode({
mode:'takePic'
});
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
closeUploadPage
关闭上传页面
closeUploadPage()
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.closeUploadPage();
可用性
iOS 系统,Android 系统
可提供的 1.0.0 及更高版本
onPause
短视频录制页面暂停
onPause()
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.onPause();
可用性
Android 系统
可提供的 1.0.0 及更高版本
onResume
短视频录制页面恢复
onResume()
示例代码
var UIPLShortVideo = api.require('UIPLShortVideo');
UIPLShortVideo.onResume();
可用性
Android 系统
可提供的 1.0.0 及更高版本