0.2.0 • Published 2 years ago

multi-uploader v0.2.0

Weekly downloads
16
License
MIT
Repository
-
Last release
2 years ago

multi-uploader

file uploader with axios spark-md5 & html API

默认场景

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

主要功能

TODO

  • 封装 init upload check
  • 分片上传
  • 断点续传/快速重传
  • 取消上传
  • 暂停上传
  • 日志(参照老 PC 上传参数)
  • 重传策略 (失败后调用 reupload 会先 check 看服务器之前接受了多少再重新上传剩余部分)
  • 截图(canvas 截图 非 ffmpeg 前端截图失败后会上传成功轮询后端接口)
  • 节点监听(点击)
  • 节点监听(拖拽)
  • [] 将视频文件的最后两个分片提前至上传开启时上传,即优化上传第1、2、n-1、n个分片(视频首尾两片),整体发布流程不变

后续规划

使用方式

install

npm install multi-uploader

esm case

import wbu from 'multiUploader';

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',
    area: '#drop'
  },
});

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();

wbUploader.stop();

默认步骤

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

0.2.0

2 years ago

0.1.19

2 years ago

0.1.18

2 years ago

0.1.17

2 years ago

0.1.15

3 years ago

0.1.16

3 years ago

0.1.14

3 years ago

0.1.10

3 years ago

0.1.11

3 years ago

0.1.12

3 years ago

0.1.13

3 years ago

0.1.9

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.6

3 years ago

0.1.4

3 years ago

0.0.21

3 years ago

0.0.22

3 years ago

0.0.23

3 years ago

0.1.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.3

3 years ago

0.0.20

3 years ago

0.0.19

3 years ago

0.0.18

3 years ago

0.0.16

3 years ago

0.0.17

3 years ago

0.0.15

3 years ago

0.0.14

3 years ago

0.0.13

3 years ago

0.0.12

3 years ago

0.0.11

3 years ago

0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago