UITxShortVideo

立即使用

概述

短视频

近年来,短视频行业发展极为迅速,凭借其创意玩法以及新鲜的视频内容成为继直播之后的新风口。为了满足开发者快速创建短视频应用的需求,腾讯云点播推出了短视频一站式解决方案,覆盖了视频生成、上传、处理、分发和播放在内的各个环节,帮助用户以最快速度实现短视频应用的上线。

短视频(UserGeneratedShortVideo)服务:基于快速上传、转码、存储等强大云端能力,集成采集、剪接、特效、分享、播放等客户端组件,再整合腾讯的 IM、社交、用户画像等数据,令开发者可以聚焦于业务本身,轻松制作出基于移动端的短视频内容业务。详情参考 关于短视频

腾讯云短视频 SDK,可配合腾讯云点播服务使用,您需要开通腾讯云点播服务,并购买点播加速资源包精简版、旗舰版-2或旗舰版-3,获得短视频 SDK License为期一年的使用权限。具体信息请查看 腾讯云点播简介,以及 云点播购买流程

UITxShortVideo 模块概述

本模块封装了腾讯短视频SDK中的录制、编辑、美颜、特效等功能。使用模块之前请先 申请License。注意该模块只封装了精简版和基础版的 SDK。若长期使用该模块的话,请申请 Licence 为精简版和基础版的。因为不同版本 SDK 需要搭配不同版本的 License 才能使用。

模块使用注意事项:

1.免费申请的 license 有一定的有效期。

2.当您的测试 License 过期了,您需要进入 点播控制台 点击购买正式 License。

3.如需支持后台播放功能请参考 config.xml 配置说明文档里关于 BackgroundMode 的配置

配置实例如下:

<preference name="backgroundMode" value="audio"/>

模块接口

setLicence

设置授权

setLicence({params}, callback(ret, err))

params

licenceURL:

licenceKey:

callback(ret, err)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
}

err:

  • 类型:JSON对象
  • 内部字段:
{
    msg: "",
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.setLicence({
    licenceURL : 'http://license.vod2.myqcloud.com/license/v1/TXUgcSDK.licence',
    licenceKey : '0a8ee791929052b2dce775c308e'
},function(ret, err){
    alert(JSON.stringify(ret) +" "+ JSON.stringify(err));
});

可用性

iOS、Android 系统

可提供的 1.0.0 及更高版本

videoRecord

短视频录制

videoRecord({params}, callback(ret))

params

videoRatio:

  • 类型:数字
  • 描述:(可选项)画面比例
  • 默认值:1
  • 取值范围:
    • 0 表示 3:4 比例
    • 1 表示 9:16 比例
    • 2 表示 1:1 比例
    • 3 表示 16:9 比例
    • 4 表示 4:3 比例

videoResolution:

  • 类型:数字
  • 描述:(可选项)录制分辨率
  • 默认值:2
  • 取值范围:
    • 0 表示 360P 分辨率
    • 1 表示 540P 分辨率
    • 2 表示 720P 分辨率

videoBitrate:

  • 类型:数字
  • 描述:(可选项)比特率
  • 默认值:9600

audioSampleRate:

  • 类型:数字
  • 描述:(可选项)音频采样率
  • 默认值:5
  • 取值范围:
    • 0 表示 8000 采样率
    • 1 表示 16000 采样率
    • 2 表示 32000 采样率
    • 4 表示 44100 采样率
    • 5 表示 48000 采样率

minDuration:

  • 类型:数字
  • 描述:(可选项)最小时长,单位秒
  • 默认值:5

maxDuration:

  • 类型:数字
  • 描述:(可选项)最长时长,单位秒
  • 默认值:30

fps:

  • 类型:数字
  • 描述:(可选项)每秒帧数
  • 默认值:15

gop:

  • 类型:数字
  • 描述:(可选项)关键帧间隔,单位秒
  • 默认值:3

watermark:

  • 类型:json对象
  • 描述:(可选项)视频水印
  • 说明:水印相对于视频图像的归一化值,sdk 内部会根据水印宽高比自动计算 height 例如视频图像大小为(540,960) frame 设置为(0.1,0.1,0.1, 0)水印的实际像素坐标为(5400.1, 9600.1, 5400.1, 5400.1*waterMarkImage.size.height / waterMarkImage.size.width)
  • 内部字段:
{
  imagePath:'', //字符串类型,水印图片本地地址,支持fs、widget
  rect:{   //json对象,水印位置
    x: 0.2,   //(可选项)数字类型;水印x坐标;默认值:0.2
    y: 0.2,   //(可选项)数字类型;水印y坐标;默认值:0.2
    w: 0.1,  //(可选项)数字类型;水印宽;默认值:0.1
    h: 0   //(可选项)数字类型;水印高;默认值:0
  }
}

musicAddress:

{
    "bgm": {
        "list": [
            {"name":"Flo Rida - Whistle.mp3", "url":"http://bgm-1252463788.cosgz.myqcloud.com/Flo%20Rida%20-%20Whistle.mp3"},{},{},,,
        ]
    }
}

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,      //布尔型;true
    filePath : '' ,    //字符串类型;视频路径
    imagePath : '',    //字符串类型;视频封面
    duration:15        //数字类型;视频时间
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.videoRecord({
}, function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

uploadLocalVideo

上传本地视频

uploadLocalVideo({params}, callback(ret))

params

signature:

  • 类型:字符串
  • 描述:签名
  • 注意:视频上传逻辑流程详及签名获取方法解参考腾讯官方相关文档 视频上传

videoPath:

  • 类型:字符串
  • 描述:视频地址,支持fs以及原生路径

coverPath:

  • 类型:字符串
  • 描述:(可选项)预览图路径,支持fs以及原生路径

customKey:

  • 类型:字符串
  • 描述:用户userId

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0 ,       //数字类型;错误码;错误时此字段与msg单独返回
    msg: '',        //字符串类型;错误描述信息;错误时此字段与code单独返回
    videoId:'',     //字符串类型;视频文件id
    videoURL:'',    //字符串类型;视频播放地址
    coverURL:''    //字符串类型;封面存储地址  
    uploadBytes:1   //数字类型;上传进度;更新进度此字段与totalBytes单独返回
    totalBytes:100 //数字类型;总长度;更新进度时此字段与uploadBytes单独返回
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.uploadLocalVideo({
    signature:'',
    videoPath:'',
    coverPath:'',
    customKey:'',
}, function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

videoEditor

将多个多个短视频合并、编辑

videoEditor({params}, callback(ret))

params

videoPaths:

  • 类型:数组类型
  • 描述:(可选项)视频路径,要求本地路径,支持fs。
  • 默认:打开本地视频选择页面(iOS端是本地相册视频资源选择页面)

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,      //布尔型;true
    filePath : '' ,    //字符串类型;视频路径
    imagePath : '',    //字符串类型;视频封面
    duration:15        //数字类型;视频时间
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.videoEditor({
    videoPaths:['','']
}, function(ret, err) {
    alert(JSON.stringify(ret));
});

可用性

iOS 系统,Android 系统

可提供的 1.0.0 及更高版本

videoEdit

视频编辑,仅支持 iOS 平台

videoEdit({params}, callback(ret))

params

path:

  • 类型:字符串
  • 描述:视频路径,要求本地路径,支持fs、widget

waterMark:

  • 类型:JSON 对象
  • 描述:(可选项)水印
  • 默认:不显示
  • 内部字段:
{
    img:'',          //字符串类型;水印图片,要求本地路径(fs、widget)
    rect: {          //JSON对象;水印针对视频的位置
      w:,            //数字类型;水印的宽;取值范围:0-1
      h:,            //数字类型;水印高,不用设置腾讯内部会根据水印宽高比自动计算
      x:,            //数字类型;水印左上角的起点坐标;取值范围:0-1
      y:             //数字类型;水印左上角的起点坐标:0-1
    }
}

compressed:

  • 类型:字符串
  • 描述:(可选项)编辑后的视频分辨率
  • 默认:540P
  • 取值范围:
    • 360P:压缩至360P分辨率
    • 480P:压缩至480P分辨率
    • 540P:压缩至540P分辨率
    • 720P:压缩至720P分辨率

musicAddress:

{
    "bgm": {
        "list": [
            {"name":"Flo Rida - Whistle.mp3", "url":"http://bgm-1252463788.cosgz.myqcloud.com/Flo%20Rida%20-%20Whistle.mp3"},{},{},,,
        ]
    }
}

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType:'',     //字符串类型;交互事件类型
                      //complete:编辑完成并返回事件
                      //cancel:用户取消本次视频编辑事件
                      //error:视频合并发生错误
    filePath : '' ,   //字符串类型;合并后的视频绝对路径,仅当 eventType 为complete时有值 
    errorCode: 1      //数字类型;错误码,仅当 eventType 为 error 时有值,取值范围如下
                      //-100001:传入的源视频文件找不到
                      //-100002:传入的源视频文件已被损坏
                      //-100003:解封装(把合成的视频文件中的视频、音频提取处不同的格式文件)目前不支持的视频格式(OppoR9s 目前不支持音频为 mp3 的音频格式)
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.videoEdit({
    path:''
}, function(ret) {
    alert(JSON.stringify(ret));
});

可用性

iOS 系统

可提供的 1.0.0 及更高版本

getVideoInfo

获取视频文件信息,仅支持 iOS 平台

getVideoInfo({params}, callback(ret))

params

path:

  • 类型:字符串
  • 描述:视频路径,要求本地路径,支持fs、widget以及绝对路径

coverImgPath:

  • 类型:字符串
  • 描述:(可选项)视频截图保存路径,要求本地路径
  • 默认:默认路径

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,          //布尔类型;是否获取成功
    coverImgPath : '' ,    //字符串类型;视频第一帧截图绝对路径,为空时表示获取失败
    duration: ,            //数字类型;视频时长
    fileSize: ,            //数字类型;视频文件大小
    fps: ,                 //数字类型;视频视频fps
    bitrate: ,             //数字类型;视频码率
    audioSampleRate: ,     //数字类型;音频采样率
    width: ,               //数字类型;视频宽度
    height: ,              //数字类型;视频高度
    angle: ,               //数字类型;视频旋转角度
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.getVideoInfo({
    path:''
}, function(ret) {
    alert(JSON.stringify(ret));
});

可用性

iOS 系统

可提供的 1.0.0 及更高版本

videoCompress

视频压缩,仅支持 iOS 平台

videoCompress({params}, callback(ret, err))

params

path:

  • 类型:字符串
  • 描述:视频路径,要求本地路径,支持fs、widget

outFilePath:

  • 类型:字符串
  • 描述:(可选项)压缩后的视频路径,要求本地路径
  • 默认:默认路径

bitrate:

  • 类型:数字
  • 描述:(可选项)视频码率 单位:kbps
  • 设置范围为:600~12000
  • 默认:根据压缩质量自动计算码率

compressed:

  • 类型:字符串
  • 描述:(可选项)合并后的视频分辨率
  • 默认:720P
  • 取值范围:
    • 360P:压缩至360P分辨率
    • 480P:压缩至480P分辨率
    • 540P:压缩至540P分辨率
    • 720P:压缩至720P分辨率

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,      //布尔类型;是否压缩成功,true|false
    filePath: '' ,     //字符串类型;压缩后的视频绝对路径
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0           //数字类型;错误码,取值范围如下
                      //0:路径为空
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.videoCompress({
    path:''
}, function(ret,err) {
    alert(JSON.stringify(ret));
});

可用性

iOS 系统

可提供的 1.0.0 及更高版本

addVideoCompressListener

视频压缩监听,仅支持 iOS 平台

addVideoCompressListener(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: complete,    //字符串类型;交互事件类型,取值范围:
                            //progress:压缩中(大约每秒3次频率回调)
                            //complete:压缩完成
                            //error:压缩发生错误
    progress:               //数字类型;当前压缩进度
    errorCode:              //数字类型;错误码
                            //-1:生成视频失败
                            //-2:生成视频取消
                            //-5:licence 验证失败
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.addVideoCompressListener(function(ret) {
    console.log(JSON.stringify(ret));
});

可用性

iOS 系统

可提供的 1.0.0 及更高版本

getLicence

获取授权信息,仅支持 iOS 端。

getLicence(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    licence : '',  //sdk返回的授权信息字符串
}

示例代码

var UITxShortVideo = api.require('UITxShortVideo');
UITxShortVideo.getLicence(function(ret, err){
    alert(JSON.stringify(ret));
});

可用性

iOS 系统

可提供的 1.0.0 及更高版本