ali-cloud-video
Version:
Ali cloud video on demand SDK
328 lines (247 loc) • 11.3 kB
Markdown
# ali-cloud-video
阿里云视频点播SDK
### Usage
```bash
npm i ali-cloud-video -S
```
```javascript
const AliCloudVideo = require('ali-cloud-video')
const ali = new AliCloudVideo({
AccessKeyId: '',
AccessKeySecret: ''
})
const videoId = 'e51aa1941e3b46648f4812dbcf5c175d'
ali.getPlayAuth(videoId, (err, result) => {
console.log(result)
})
```
### new AliCloudVideo(opt)
- `opt` \<Object\>
- `AccessKeyId` \<string\> 必填,阿里云颁发给用户的访问服务所用的密钥ID。
- `AccessKeySecret` \<string\> 必填,AccessKeySecret
构造方法,传入配置对象。
```javascript
const AliCloudVideo = require('ali-cloud-video')
const ali = new AliCloudVideo({
AccessKeyId: 'xxx',
AccessKeySecret: 'xxx'
})
```
#### 实例方法
- 凭证
- [getPlayAuth](#getplayauthvideoid-callback) 播放视频前获取播放地址和播放凭证
- [getPlayAddress](#getplayaddressopt-callback) 获取视频播放地址
- [getUploadAuth](#getuploadauthopt-callback) 上传视频前获取上传凭证和上传地址
- [getUploadImageAuth](#getuploadimageauthopt-callback) 上传图片前先获取上传地址和上传凭证
- [refreshUploadAuth](#refreshuploadauthvideoid-callback) 上传凭证失效后需刷新上传凭证
- 视频
- [uploadFile](#uploadfileopt-callback) 上传视频文件到视频点播服务器
- [deleteFiles](#deletefilesidlist-callback) 删除上传的视频文件
- [getVideoInfo](#getvideoinfovideoid-callback) 获取视频信息
- [getVideoList](#getvideolistopt-callback) 获取视频信息列表,最多支持获取前5000条
- [updateVideoInfo](#updatevideoinfoopt-callback) 更新视频信息。
- 分类
- [addCategory](#addcategoryopt-callback) 创建视频分类。
- [getCategories](#getcategoriesopt-callback) 获取视频分类及其子分类。
- [updateCategory](#updatecategoryopt-callback) 更新分类
- [deleteCategory](#deletecategorycateid-callback) 删除分类
### getPlayAuth(videoId, callback)
- `videoId` \<string\> 视频ID
播放视频前获取播放地址和播放凭证
```javascript
// 上传视频后得到的视频ID
const videoId = 'e51aa1941e3b46648f4812dbcf5c175d'
// 获取视频的播放授权信息
ali.getPlayAuth(videoId, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```
### getPlayAddress(opt, callback)
- `opt` \<Object\>
- `VideoId` \<string\> 上传视频后得到的视频ID
- `Formats` \<string\> 可选,视频流格式,多个用逗号分隔,支持格式`mp4,m3u8,mp3`,默认获取所有格式的流
- `AuthTimeout` \<string\> 可选,播放鉴权过期时间,默认为**1800**秒,支持设置最小值为**1800**秒
获取视频的播放链接
```javascript
// 上传视频后得到的视频ID
const opt = { VideoId: 'e51aa1941e3b46648f4812dbcf5c175d' }
// 获取视频的播放链接
ali.getPlayAddress(opt, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```
### getUploadAuth(opt, callback)
- `opt` \<Object\>
- `Title` \<string\> 视频标题,长度不超过128个字节,UTF8编码。默认生成为new_video_[timestamp]
- `FileName` \<string\> 视频源文件名,必须带扩展名,且扩展名不区分大小写, 支持的扩展名参见[上传概述](https://help.aliyun.com/document_detail/55396.html?spm=5176.doc55407.2.1.xKk4gJ)的限制部分。默认为[Title].mp4
- `FileSize` \<number\> 视频文件大小,单位:字节。
- `Description` \<string\> 视频描述,长度不超过1024个字节,UTF8编码
- `CoverUrl` \<string\> 自定义视频封面URL地址
- `CateId` \<number\> 视频分类ID,请在“点播控制台-全局设置-分类管理”里编辑或查看分类的ID
- `Tags` \<string\> 视频标签,单个标签不超过32字节,最多不超过16个标签。多个用逗号分隔,UTF8编码
上传视频前获取上传凭证和上传地址
> 该接口不会真正上传视频文件,您需要拿到上传凭证和地址后使用上传SDK进行文件上传;
>
> 如果视频上传凭证失效(有效期3600秒),请调用刷新视频上传凭证接口重新获取上传凭证。
```javascript
const opt = {}
// 获取视频的上传凭证和上传地址
ali.getUploadAuth(opt, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```
### uploadFile(opt, callback)
- `opt` \<Object\>
- `FilePath` \<string\> 视频文件的路径。
- `progress` \<Function\> 进度事件回调函数。参数是上传进度,从0到1。
- `Title` \<string\> 视频标题,长度不超过128个字节,UTF8编码。默认生成为new_video_[timestamp]
- `FileName` \<string\> 视频源文件名,必须带扩展名,且扩展名不区分大小写, 支持的扩展名参见[上传概述](https://help.aliyun.com/document_detail/55396.html?spm=5176.doc55407.2.1.xKk4gJ)的限制部分。默认为[Title].mp4
- `FileSize` \<string\> 视频文件大小,单位:字节。
- `Description` \<string\> 视频描述,长度不超过1024个字节,UTF8编码
- `CoverUrl` \<string\> 自定义视频封面URL地址
- `CateId` \<number\> 视频分类ID,请在“点播控制台-全局设置-分类管理”里编辑或查看分类的ID
- `Tags` \<string\> 视频标签,单个标签不超过32字节,最多不超过16个标签。多个用逗号分隔,UTF8编码
上传本地视频文件到视频点播服务器。返回视频ID
```javascript
const opt = {
FilePath: '/path/to/file.mp4',
progress: (p) => { console.log(`uploaded ${p * 100}%`) }
}
ali.uploadFile(opt, (err, videoId) => {
if (err) return console.error(err)
console.log(`videoId is ${videoId}`)
})
```
### deleteFiles(idList, callback)
- `idList` \<Array\> 视频ID数组
删除上传的视频文件。
```javascript
const idList = ['e51aa1941e3b46648f4812dbcf5c175d']
ali.deleteFiles(idList, (err) => {
if (err) return console.error(err)
console.log('delete successful')
})
```
### getVideoInfo(videoId, callback)
- `videoId` \<string\> 视频ID
获取视频信息。
```javascript
// 上传视频后得到的视频ID
const videoId = 'e51aa1941e3b46648f4812dbcf5c175d'
// 获取视频的播放授权信息
ali.getVideoInfo(videoId, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```
### getVideoList(opt, callback)
- `opt` \<Object\>
- `Status` \<string\> 视频状态,默认获取所有视频,多个可以用逗号分隔,如:Uploading,Normal,取值包括:Uploading(上传中),UploadFail(上传失败),UploadSucc(上传完成),Transcoding(转码中),TranscodeFail(转码失败),Blocked(屏蔽),Normal(正常)
- `StartTime` \<string\> CreationTime(创建时间)的开始时间,为开区间(大于开始时间)。日期格式按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ 例如,2017-01-11T12:00:00Z(为北京时间2017年1月11日20点0分0秒)
- `EndTime` \<string\> CreationTime的结束时间,为闭区间(小于等于结束时间)。日期格式按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mm:ssZ 例如,2017-01-11T12:00:00Z(为北京时间2017年1月11日20点0分0秒)
- `CateId` \<string\> 视频分类ID
- `PageNo` \<number\> 页号,默认1
- `PageSize` \<number\> 可选,默认10,最大不超过100
- `SortBy` \<string\> 结果排序,范围:CreationTime:Desc、CreationTime:Asc,默认为CreationTime:Desc(即按创建时间倒序)
获取视频信息列表。
```javascript
const opt = {}
ali.getVideoList(opt, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```
### updateVideoInfo(opt, callback)
- `opt` \<Object\>
- `VideoId` \<string\> 视频ID
- `Title` \<string\> 视频标题,长度不超过128个字节,UTF8编码
- `Description` \<string\> 视频描述,长度不超过1024个字节,UTF8编码
- `CoverURL` \<string\> 视频封面URL地址
- `CateId` \<string\> 视频分类ID
- `Tags` \<string\> 视频标签,单个标签不超过32字节,最多不超过16个标签。多个用逗号分隔,UTF8编码
更新视频信息。传入参数则更新相应字段,否则该字段不会被覆盖或更新。
```javascript
const opt = {
VideoId: 'e51aa1941e3b46648f4812dbcf5c175d',
Title: 'test_name'
}
ali.updateVideoInfo(opt, (err) => {
if (err) return console.error(err)
console.log('updated successful')
})
```
### addCategory(opt, callback)
- `opt` \<Object\>
- `CateName` \<string\> 分类名称
- `ParentId` \<string\> 可选,父分类ID,若不填,则默认生成一级分类,根节点分类ID为-1
创建视频分类。最大支持三级分类,每个分类最多支持创建100个子分类。
```javascript
const opt = { CateName: '新分类' }
ali.addCategory(opt, (err) => {
if (err) return console.error(err)
console.log('created successful')
})
```
### getCategories(opt, callback)
- `opt` \<Object\>
- `CateId` \<string\> 分类ID,默认为根节点分类ID即-1
- `PageNo` \<number\> 子分类列表页号,默认1
- `PageSize` \<number\> 子分类列表页长,默认10,最大不超过100
获取视频分类及其子分类。
```javascript
const opt = { PageSize: 20 }
ali.getCategories(opt, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```
### updateCategory(opt, callback)
- `opt` \<Object\>
- `CateId` \<string\> 分类ID
- `CateName` \<string\> 分类名称,不能超过64个字节,UTF8编码
更新分类
```javascript
const opt = { CateId: 'xxxx', CateName: '测试分类名' }
ali.updateCategory(opt, (err) => {
if (err) return console.error(err)
console.log('updated successful')
})
```
### deleteCategory(cateId, callback)
- `cateId` \<string\> 分类ID
删除分类。
```javascript
const cateId = 'xxx'
ali.deleteCategory(cateId, (err) => {
if (err) return console.error(err)
console.log('deleted successful')
})
```
### getUploadImageAuth(opt, callback)
- `opt` \<Object\>
- `ImageType` \<string\> 图片类型,可选值 cover:封面,watermark:水印。默认cover。
- `ImageExt` \<string\> 图片文件扩展名,可选值 png,jpg,jpeg,默认 png
上传图片前先获取上传地址和上传凭证
该接口不会真正上传图片文件,您需要拿到上传凭证和地址后使用上传SDK进行文件上传(和视频上传相同);
如果图片上传凭证失效(有效期900秒),请重新调用此接口获取上传地址和凭证;
如果发现返回的ImageURL在浏览器无法访问(403),那是因为您开启了点播域名的鉴权功能,可工单联系我们关闭或自助生成鉴权签名。
```javascript
const opt = {}
ali.getUploadImageAuth(opt, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```
### refreshUploadAuth(videoId, callback)
- `videoId` \<string\> 视频ID
上传凭证失效后需刷新上传凭证
```javascript
const videoId = 'e51aa1941e3b46648f4812dbcf5c175d'
ali.refreshUploadAuth(videoId, (err, result) => {
if (err) return console.error(err)
console.log(result)
})
```