UIPLShortVideo

概述

UIPLShortVideo 封装了七牛的短视频 SDK(专业版SDK),同时集成了抖音的美颜等功能。

使用本插件需要先跟抖音和七牛注册账号并开通相关权限,获取相关参数和文件。

本插件是一套完整的短视频录制器,自带UI,只需一个接口即可开发出完整的短视频录制功能。简单快捷。

注意:iOS端授权文件和包名(bundle ID)是绑定的,否则运行闪退。

Android需要如下配置

  • 下载自定义插件qiniuShortvideoRes
  • 解压后将 qiniushortvideores-release.aar->assets->resource下相应的bundle目录替换为自己的重新打包,自定义插件编译即可

Android调用流程如下

  • 调用auth进行授权,返回authorized表示授权成功,unAuthorized授权失败联系七牛商务
  • 授权成功,调用loadRes加载/检测是否加载美颜,特效资源
  • 资源加载成功后open即可

注意事项

    1. openView调用之后需要调用onResume接口
    1. closeView调用之前需要调用onPause接口(否则可能导致摄像头无法释放的问题)

auth

授权 (暂仅支持Android)

auth(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
     eventType:'authorized'    // 取值范围如下:
                    //authorized 授权成功 
                           //unAuthorized 未授权成功
}

示例代码

var PLShortVideo = api.require('UIPLShortVideo');
PLShortVideo.auth(function(ret){
    api.alert({
            msg: 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){
    api.alert({
            msg: 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 及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/04/24