使用七牛 sdk 上传视频并做分片操作。
step1 生成 token
1 | const qiniu = require("qiniu"); |
生成不同作用的凭证可以查看官方提供的示例nodejs-sdk example。
以上代码为生成上传视频并进行切片处理的凭证。上传相关的文档查看七牛上传策略。
切片动作是由persistentOps
参数触发并启动一个异步任务,
persistentOps 详解
persistentOps
字段用于指定预转数据处理命令和保存处理结果的存储空间与资源名。
为此字段指定非空值,则在成功上传一个文件后,会启动一个异步数据处理任务。persistentId
字段,唯一标识此任务。
当returnBody
中指定了persistentId
魔法变量时,客户端收到的响应内容returnBody
中会有persistentId
;当没有指定returnBody
时,默认也会返回persistentId
。
- 使用默认的存储空间和资源名
* 当只指定了数据处理命令时,服务端会选择上传文件的 Bucket 作为数据处理结果的存储空间,Key 由七牛服务器自动生成。
- 使用指定的存储空间和资源名
- 在数据处理命令后用管道符
|
拼接saveas/<encodedEntryURI>
指令,指示七牛服务器使用EncodedEntryURI格式中指定的 Bucket 与 Key 来保存处理结果。如 avthumb/flv|saveas/cWJ1Y2tldDpxa2V5,是将上传的视频文件转码flv
格式后存储为qbucket:qkey
,其中cWJ1Y2tldDpxa2V5
是qbucket:qkey
的URL安全的Base64编码结果。以上方式可以同时作用于多个数据处理命令,用;
分隔,如avthumb/mp4|saveas/cWJ1Y2tldDpxa2V5;avthumb/flv|saveas/cWJ1Y2tldDpxa2V5Mg==
摘自七牛上传凭证
数据处理命令可以查看官方文档,比如视频切片接口。
step2 前端直传
1 | POST http://up.qiniu.com |
step3 轮询获取结果
1 | GET api.qiniu.com/status/get/prefop?id=${persistentId} |