JS SDK使用
创建实例
let option = {
appId:"xxx",
accountId:"xxx",
token:"xxx",
}
let vodupload = null;
VhallUpload.createInstance(option,(res) => {
vodupload = res.interface;
},err=>{
console.error(err);
});
// async 用法
try {
const res = await VhallUpload.createInstance(option);
vodupload = res.interface;
} catch (e) {
console.error(err);
}
销毁实例
vodupload.destroy();
文件上传(视频文件、字幕文件)
注意,使用此种方式,文件不管成功失败,都会在上传队列中,需要对对列进行管理
// 文件列表 例如:[file,file,file]
// 文件格式为'rmvb', 'mp4', 'avi', 'wmv', 'mkv', 'flv', 'mp3', 'wav', 'mov', 'SRT' (大小写后缀无关)
const fileList = [];
// 添加文件到任务列表
// 注意,add添加到任务列表中默认是暂停状态的
// 所以需要先调用 vodupload.resume() 再 add
try {
vodupload.add({ files: filesArr });
} catch(e) {
// 文件格式不支持 / 有重复文件等错误
console.error(e);
}
// 开始 / 恢复上传队列
vodupload.resume();
// 暂停上传队列
vodupload.pause();
// 暂停单个文件上传
vodupload.pauseTask(task);
// 暂停多个文件上传
vodupload.pauseTask([task, task]);
// 恢复单个文件上传
vodupload.resumeTask(task);
// 恢复多个文件上传
vodupload.resumeTask([task, task]);
// 移除单个文件上传
vodupload.remove(task);
// 返回所有文件上传任务的列表
const tasks = vodupload.tasks();
// task.status // 0-待上传/上传中 1-成功 3-失败
// task.quickUpload // 是否秒传,仅在task.status为1的时候有效
// task.isPause // 是否被暂停
// task.size // 文件大小
// task.filename // 文件名
// task.file // 上传的文件
// task.fileType // 文件类型 0-视频 1-字幕
// task.result // 上传成功的结果保存
// task.error // 抛出的错误
// task.progress // 进度
文件上传(不使用队列)
此种上传,sdk不会抛出事件,只会执行回调 少量文件上传建议使用此方式,省去管理队列的麻烦
// 选择文件
var opt = {multiple:true,types:[{accept:{'*/*':['.srt'],'video/*':['.mp4','.avi']}}]}
var handles = await showOpenFilePicker(opt)
var files = await Promise.all(handles.map(i => i.getFile()))
// 上传
vodupload.upload(files, t=>console.log(`[${t.filename}] 进度: ${t.progress}` ), t=>console.log('成功: ', t.filename, t.result), ()=>console.log('失败'))
创建点播
let param = {
file:new File(), // 文件对象
fileName:"", // 新的文件名 *命名规则为 字母数字下划线中文
is_safe: 0 // // 是否加密,0为不加密,1为加密,默认为0。
}
let success = function(res){
console.log(res.recordId); // 创建成功,返回点播recordId
}
let failure = function(err){
console.log(err); // 创建失败,返回失败信息
}
vodupload.createDemand(param,success,failure);
- 创建点播的文件必须保证已经上传成功。
- 已创建点播后,切勿删除上传文件,以免导致播放失败。
创建字幕(关联字幕到点播)
let param = {
vodId, // 点播视频id,必填
url, // 上传文件后返回的filePath,必填
lang, // 语言的标识符 (例如zh,en),选填
isDefault: true // 是否是默认字幕
}
let success = function(res){
console.log(res);
}
let failure = function(err){
}
vodupload.createSubtitle(param,success,failure);
删除上传文件 (仅移除中间文件,不会删除已创建的点播)
let param = {
file:new File() // 文件对象
}
let success = function(res){
console.log(res);
}
let failure = function(err){
console.log(err);
}
interface.deleteFile(param,success,failure);
上传事件使用
function progress (e) {
console.log('上传进度', e);
}
vodupload.on(VhallUpload.EVENT.FILE_UPLOAD_PROGRESS, progress);
// 取消监听
vodupload.off(VhallUpload.EVENT.FILE_UPLOAD_PROGRESS, progress);
上传事件
| 事件 | 含义 | 触发条件 | 参数结构 |
|---|---|---|---|
| VhallUpload.EVENT.FILE_UPLOAD_SUCCESS | 文件上传成功 | 文件上传成功时 | 参考下文 |
| VhallUpload.EVENT.FILE_UPLOAD_PROGRESS | 文件上传进度 | 文件上传进度更新时 | 参考下文 |
| VhallUpload.EVENT.FILE_UPLOAD_FAIL | 文件上传失败 | 文件上传失败,网络原因及其他 | 参考下文 |
| VhallUpload.EVENT.UPLOAD_TASK_DRAIN | 上传所有文件完成 | 上传队列中可上传文件传输完成时 | 参考下文 |
事件数据结构
// FILE_UPLOAD_SUCCESS
{
name: '文件名.mp4', // 文件名
file: File, // 文件
id: 11, // 任务id
index: index,
filePath: '/dddd/xxx/aa', // 上传结果的路径
filetype: 0, // 文件类型 0-视频 1-字幕
quickUpload: false, // 是否秒传
status: 0, // 0-未上传/上传中 1-成功 3-失败
size: 213423, // 文件大小
task: task, // 上传任务实例
msg: '文件上传成功'
}
// FILE_UPLOAD_FAIL
{
name: '文件名.mp4', // 文件名
file: File, // 文件
id: 11, // 任务id
index: index,
filetype: 0, // 文件类型 0-视频 1-字幕
status: 0, // 0-未上传/上传中 1-成功 3-失败
size: 213423, // 文件大小
task: task, // 上传任务实例
progress: 0.83233 // 进度
}
// FILE_UPLOAD_FAIL
{
name: '文件名.mp4', // 文件名
file: File, // 文件
id: 11, // 任务id
index: index,
filetype: 0, // 文件类型 0-视频 1-字幕
status: 0, // 0-未上传/上传中 1-成功 3-失败
size: 213423, // 文件大小
task: task, // 上传任务单个文件上传实例
msg: '网络错误'
}
