通过 Web 上传 SDK,您可以上传本地视频或图片、管理视频封面,并创建和更新点播间,快速完成企业直播媒资接入。本文档介绍如何集成 Web 上传 SDK 并使用 Web 上传 SDK 完成上述功能。
参考以下步骤,将上传 SDK 集成到您的 Web 应用中。
在您项目的 .html 文件中添加以下代码引入 SDK。
<script src="https://unpkg.byted-static.com/byted/byte-live-console-uploader/1.0.0/dist/index.min.js"></script>
创建 uploader 实例,初始化 SDK。示例代码如下:
let uploader document.getElementById('test').addEventListener('change', async function () { const fileList = this.files; // 从服务端获取用户 token const data = await (await fetch(`http://127.0.0.1:3000`, { mode: 'cors' })).json() // 创建 uploader 实例 uploader = new ByteConsoleTools.Uploader({ userId: "210020****", region: "cn-north-1", service: "iframeTest", videoConfig: { spaceName: "livesaas-new", processAction: [ { name: "GetMeta", }, ] }, // 包含 AccessKeyId 和 SecretAccessKey 的对象 userToken: data.userToken, }); // 上传前检查,详情参考下文 uploader.initCheck({ file: fileList, type: 'video', }).then(fileKey => { console.log(fileKey); }).catch(e => { console.log(e) }) });
创建 uploader 实例时,您需要设置以下参数:
名称 | 类型 | 是否必选 | 默认值 | 描述 |
|---|---|---|---|---|
userId | String | 是 | 不适用 | 账号 ID。获取方式参考前提条件。 |
region | String | 是 | 不适用 | 上传地区。您需将此参数设为 |
service | String | 是 | 不适用 | 服务名称,仅用于标记。 |
videoConfig | JSON | 是 | 不适用 | 视频上传配置。当前仅支持以下参数:
|
userToken | JSON | 是 | 不适用 | 用户 token。获取方式参考前提条件。示例如下所示:
|
用于视频上传后处理的 Action 对象数组,包含以下参数:
名称 | 描述 |
|---|---|
name | Action 名称。当前仅可设为 |
在上传文件前,调用 initCheck 检查以下内容:
说明
如果您希望在上传完成后自动创建点播间,也需要在 initCheck 中传入与点播间相关的参数。详见步骤五:创建点播间。
上传视频或图片前检查的代码如下所示:
上传视频前进行检查的示例代码如下:
uploader.initCheck({ file: fileList, type: 'video', }).then(fileKey => { console.log(fileKey); }).catch(e => { console.log(e) })
上传视频或图片前检查的相关参数如下表所示:
名称 | 类型 | 是否必选 | 默认值 | 描述 |
|---|---|---|---|---|
file | Array | 是 | 不适用 | 待上传文件。每次仅可上传一个文件。 |
type |
| 是 | 无 | 待上传文件的类型。可设为:
|
vid | String | 否 | 无 | 如果您将 说明 仅当 |
检查通过后,SDK 会返回上传任务 ID fileKey,例如 'file_149544227xxxx_xxxxxx'。
您可调用以下方法控制上传任务:
调用 start 启动上传任务。示例代码如下:
uploader.start();
调用 pause 暂停上传任务。SDK 会暂存当前文件的上传信息。
uploader.pause();
调用 restart 重启上传任务。SDK 会从暂停位置重新开始上传。
uploader.restart();
调用 cancel 取消上传任务,并删除当前文件的上传信息。
uploader.cancel();
如果您希望在本地视频上传完成后自动创建点播间,您需要在 initCheck 中传入与点播间相关的参数。相关参数如下表所示。
名称 | 类型 | 是否必选 | 默认值 | 描述 |
|---|---|---|---|---|
newVideoRoomName | string | 是 | 无 | 点播间名称。传入该参数后,SDK 可在本地视频上传完成后自动创建点播间。 |
file | Array | 是 | 不适用 | 待上传的视频文件。每次仅可上传一个文件。 |
type |
| 是 | 无 | 待上传文件的类型。在当前创建点播间场景下,固定取值为 |
示例代码如下所示。SDK 会先进行上传前检查,之后上传视频:
fileKey,例如 'file_149544227xxxx_xxxxxx'。uploader.initCheck({ newVideoRoomName: '<点播间名称>', file: fileList, // 每次仅可上传一个文件。 type: 'video', }); uploader.start();
调用 updateVideoRoom,通过传入视频 ID、或上传本地视频的方式,更新点播间。
名称 | 类型 | 是否必选 | 默认值 | 描述 |
|---|---|---|---|---|
videoRoomId | string | 是 | 无 | 点播间 ID。可通过监听 video_room_created_result 事件获取点播间 ID。详见文档末尾。 |
file | Array | 否 | 无 | 待上传的视频文件。每次仅可上传一个文件。 说明
|
type |
| 否 | 无 | 待上传文件的类型。在当前创建点播间场景下,固定取值为 说明 如果您传入了 |
vids | Array | 否 | 无 | 传入视频的 ID。 说明
|
isAppend | bool | 否 | false | 是否追加视频。
|
以下示例代码展示了同时处理本地视频上传和 vids 指定视频上传的场景:SDK 会先上传本地视频文件,再上传 vids 中指定的视频。
uploader.updateVideoRoom({ videoRoomId: '<点播间id>', // 可通过监听 video_room_created_result 事件获取点播间 ID。详见文档末尾。 file: fileList, // 每次仅可上传一个文件。 type: 'video', // 固定取值为 `video`。 vids: ['<vid1>', '<vid2>'], // 传入视频的 ID。 isAppend: true // 保留点播间内已有视频,追加新视频。 });
您可以参考以下示例代码监听上传任务的事件。
uploader.on('event_name', function(data) { console.log('event_name', data); });
下表列出上传任务生命周期中 SDK 可能触发的事件。
事件名称 | 描述 |
|---|---|
crc32 | SDK 进行视频切片后触发。上传视频时,SDK 会将视频切分成多个片段。该事件返回 CRC-32 信息数组和每个片段的长度。 |
progress | 返回上传任务的进度 (%)。 |
fileMerge | 所有视频分片上传成功并合并后触发。 |
complete | 上传任务完成时触发。SDK 触发 |
error | 提示错误信息。 |
video_room_created_result 用于监听点播间创建结果。示例代码如下:
uploader.on('video_room_created_result', result => { console.log(result); // result.VideoRoomId });
无论创建成功还是失败,SDK 都会触发该事件:
VideoRoomId,即点播间 ID;