0.0.1 • Published 3 years ago
wb-uploader v0.0.1
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
0.0.1
3 years ago