0.0.1 • Published 3 years ago

wb-uploader v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

wb-uploader

file uploader with axios spark-md5 & html API

默认场景

微博视频上传(其他暂未考虑)

主要功能

TODO

  • 封装 init upload check
  • 分片上传
  • 断点续传/快速重传
  • 取消上传
  • 日志(参照老 PC 上传参数)
  • 重传策略 (失败后调用 reupload 会先 check 看服务器之前接受了多少再重新上传剩余部分)
  • 截图(canvas 截图 非 ffmpeg 前端截图失败后会上传成功轮询后端接口)
  • 节点监听(点击)

后续规划

  • 节点监听(拖拽)

使用方式

esm case

import wbu from 'wbUploader';

const wbUploader = new wbu({
  default: {
    source: 339644097,
    max_size: 15 * 1024 * 1024 * 1024, // 文件大小限制
    dispatchUrl: 'https://www.weibo.com/api/i/fileplatform/dispatch', // 调度
    batchScreenshotUrl: 'https://www.weibo.com/ajax/multimedia/output', // 后端截图
    batchDetailUrl: 'https://www.weibo.com/ajax/multimedia/batch', // 获取视频宽高
  },
  inputEle: {
    target: '#video_button_upload',
    accept: 'video/mp4,video/x-m4v,video/*,.mkv',
  },
});

wbUploader.on('beforeInit', (data) => {
  //...
  wbUploader.init();
});

wbUploader.on('beforeUpload', (data) => {
  //...
  wbUploader.upload();
});

wbUploader.on('uploadStatus', (data) => {
  //... 返回速度 百分比
});

wbUploader.on('success', ({ file }) => {
  //...
});

wbUploader.on('screenshot', (data) => {
  //... 返回截图数据
});

wbUploader.cancael();

wbUploader.addFiles(event);


wbUploader.reUpload();

默认步骤

dispatch wiki

暴露参数

const dispatchParams = {
  source: 'XXX',
  types: 'video',
  version: 4,
  auth_accept: 'weibo',
};

分别获取

init wiki

强制格式 multipart/mixed

暴露参数

const initParams = {
  pri: 'false',
  biz_file: [],
};

init 将返回

"upload_id":"428823272216888400",
    "media_id":"4288232720938283",
    "strategy":{
        "upload_protocol":"sve",
        "chunk_size":512, // 分片大小,单位kb
        "chunk_retry":50, // 分片重试次数
        "chunk_delay":3000, // 分片重试间隔,单位ms
        "chunk_timeout":120000 // 分片请求超时,单位ms
        "chunk_read_timeout":60000 // 分片网络超时,单位ms
        "max_gop_duration":1000, // SVE最大分片时长
        "min_piece_video_duration":3000, // SVE最小分片时长
        "threads":2 // 并发上传个数
        "url_tag":"1",
        "encode":{ // 调用方编码策略
            "encoder":{ // 编码器
                "type":"open264",
                "version":1
            },
            "config":{ // 编码参数
                "definition":"720p",
                "bitrate":5767168
            }
        },
        "idc":"ali", // 源站机房
        "wait_timeout":3600000 // 后台上传超时,即后台断网多久后停止后台上传,客户端目前为3600s,单位ms
        "chunk_slow_speed":100 // 分片上传慢速阈值,达到阈值后切换链路,单位kb/s
    },
    "auth":"a=xx&b=xx&sign=xxxx",
    "init_log_info":"{\"ab\":\"\"}"

这些将会作为我们的默认参数, 带回来的 auth 将会放在 upload 与 header 头中

upload wiki

check wiki