aliyun-upload-vod

阿里云点播视频上传SDK npm版本

Usage no npm install needed!

<script type="module">
  import aliyunUploadVod from 'https://cdn.skypack.dev/aliyun-upload-vod';
</script>

README

aliyun-upload-vod

npm version

简介

阿里云视频点播上传SDK是阿里视频云端到云到端服务的重要一环,为您提供上传媒体文件到点播存储的开发工具包。集成点播上传SDK,就可以快捷上传包括视频、音频、图片、字幕等在内的各种媒体文件。同时提供服务端、Web端、移动端等多种版本SDK,全面适配各个主流平台和运行环境。 官方文档

开发

安装

npm install aliyun-upload-vod

使用

import as module

import AliyunUpload from "aliyun-upload-vod";

global

    import AliyunUpload from 'aliyun-upload-vod';

    var uploader = new AliyunUpload.Vod({
      //阿里账号ID,必须有值
      userId: '1303984639806000',
      //上传到视频点播的地域,默认值为'cn-shanghai',//eu-central-1,ap-southeast-1
      region: 'cn-shanghai',
      //分片大小默认1 MB,不能小于100 KB
      partSize: 1048576,
      //并行上传分片个数,默认5
      parallel: 5,
      //网络原因失败时,重新上传次数,默认为3
      retryCount: 3,
      //网络原因失败时,重新上传间隔时间,默认为2秒
      retryDuration: 2,
      //添加文件成功
      addFileSuccess: () => {
        if (uploader !== null) {
          uploader.startUpload();
        }
      },
      //开始上传
      onUploadstarted: (uploadInfo) => {
        // 如果是 UploadAuth 上传方式, 需要调用 uploader.setUploadAuthAndAddress 方法
        // 如果是 UploadAuth 上传方式, 需要根据 uploadInfo.videoId是否有值,调用点播的不同接口获取uploadauth和uploadAddress
        // 如果 uploadInfo.videoId 有值,调用刷新视频上传凭证接口,否则调用创建视频上传凭证接口
        // 注意: 这里是测试 demo 所以直接调用了获取 UploadAuth 的测试接口, 用户在使用时需要判断 uploadInfo.videoId 存在与否从而调用 openApi
        // 如果 uploadInfo.videoId 存在, 调用 刷新视频上传凭证接口(https://help.aliyun.com/document_detail/55408.html)
        // 如果 uploadInfo.videoId 不存在,调用 获取视频上传地址和凭证接口(https://help.aliyun.com/document_detail/55407.html)
        if (!uploadInfo.videoId) {
          let createUrl = 'https://demo-vod.cn-shanghai.aliyuncs.com/voddemo/CreateUploadVideo?Title=testvod1&FileName=aa.mp4&BusinessType=vodai&TerminalType=pc&DeviceModel=iPhone9,2&UUID=59ECA-4193-4695-94DD-7E1247288&AppVersion=1.0.0&VideoId=5bfcc7864fc14b96972842172207c9e6'
          axios.get(createUrl).then(({data}) => {
            let uploadAuth = data.UploadAuth
            let uploadAddress = data.UploadAddress
            let videoId = data.VideoId
            uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress,videoId)
          })
          self.statusText = '文件开始上传...'
          console.log("onUploadStarted:" + uploadInfo.file.name + ", endpoint:" + uploadInfo.endpoint + ", bucket:" + uploadInfo.bucket + ", object:" + uploadInfo.object)
        } else {
          // 如果videoId有值,根据videoId刷新上传凭证
          // https://help.aliyun.com/document_detail/55408.html?spm=a2c4g.11186623.6.630.BoYYcY
          let refreshUrl = 'https://demo-vod.cn-shanghai.aliyuncs.com/voddemo/RefreshUploadVideo?BusinessType=vodai&TerminalType=pc&DeviceModel=iPhone9,2&UUID=59ECA-4193-4695-94DD-7E1247288&AppVersion=1.0.0&Title=haha1&FileName=xxx.mp4&VideoId=' + uploadInfo.videoId
          axios.get(refreshUrl).then(({data}) => {
            let uploadAuth = data.UploadAuth
            let uploadAddress = data.UploadAddress
            let videoId = data.VideoId
            uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress,videoId)
          })
        }
      },
      //文件上传成功
      onUploadSucceed: () => {
        this.$message.success('文件上传成功');
      },
      //文件上传失败
      onUploadFailed: () => {
        this.$message.error('文件上传失败');
      },
      //文件上传进度,单位:字节
      onUploadProgress: (uploadInfo, totalSize, loadedPercent) => {
        this.loadedPercent = Math.ceil(loadedPercent * 100);
        console.log(this.loadedPercent);
      },
      //上传凭证或STS token超时
      onUploadTokenExpired: () => {
        this.$message.error('文件上传token超时');
      },
      //全部文件上传结束
      onUploadEnd: () => {
        console.log("onUploadEnd: uploaded all the files")
      }
    });
    var userData = '{"Vod":{}}';
    uploader.addFile(file.raw, null, null, null, userData);
  }

文档

Documents

License

The ISC License(https://opensource.org/licenses/ISC)

请自由地享受和参与开源