You need to enable JavaScript to run this app.
导航
媒资上传
最近更新时间:2025.04.17 16:57:48首次发布时间:2021.12.24 17:37:21
我的收藏
有用
有用
无用
无用

本文为您介绍如何使用视频点播服务端 Node.js SDK 将音频、视频、图片等媒资文件上传至视频点播服务。

费用说明

媒资上传到视频点播中会产生存储费用,具体参见媒资存储计费

前提条件

上传音视频

直接上传本地文件

视频点播服务端 SDK 封装了 ApplyUploadInfo - 获取上传地址和凭证CommitUploadInfo - 确认上传接口以及上传逻辑,您只需简单配置即可进行上传。

说明

  • 完整的上传流程请见服务端上传
  • 上传任务成功提交后,您可通过媒资上传完成事件通知获取任务结果。配置方式请见事件通知概述
  • 上传文件时必须携带文件后缀。例如,如需上传 MP4 文件,携带 .mp4.MP4
  • 以下示例为 2022-01-01 版本的 ApplyUploadInfo 和 CommitUploadInfo 接口。若您使用 2020-08-01 版本,示例代码请见历史版本
const uploadMedia = async () => {
  try {
    const options = {
      SpaceName: "your target space name", // 空间名
      FilePath: "your file path", // 绝对路径
      FileName: "your target storage path", // 文件路径(可选)。您可根据业务需求自定义文件路径。设置 FileName, 当 FileName 相同时,有文件覆盖的风险;需要保证 FileName 不同。
      FileExtension: "your file extension", // 文件后缀(可选)。以.开头,不超过 8 位。当您传入 FileExtension 时,不需要重复传入FileName 参数,视频点播将生成 32 位随机字符串,和您传入的 FileExtension 共同拼接成文件路径。
      Functions: JSON.stringify([
        { Name: "GetMeta" },
        {
          Name: "Snapshot",
          Input: {
            SnapshotTime: 2.3,
          },
        },
      ]),
      CallbackArgs: "your callbackArgs"
    };
    const res = await vodOpenapiService.UploadMedia(options);
    // do your work
    // ...
  } catch (err) {
    console.log(err);
  }
};

URL 批量拉取上传

视频点播服务端 SDK 封装了 URL 批量拉取上传接口,您只需简单配置即可进行上传。完整的上传流程请见服务端上传

说明

  • 本接口主要适用于文件没有存储在本地服务器或终端,需要通过公网访问的 URL 地址上传的场景。源文件 URL 支持 HTTP 和 HTTPS。
  • 本接口为异步上传接口。上传任务成功提交后,系统会生成异步执行的任务,排队执行,不保证时效性。
  • 本接口的请求参数和返回参数说明详见 UploadMediaByUrl
  • 上传任务成功提交后,可通过以下方式获取任务结果:
const uploadMediaByUrl = async () => {
  try {
    const options = {
      SpaceName: "your space name",
      URLSets: [
        {
          SourceUrl: "http://demourl/test1.mp4",
          FileName: "movie/test1.mp4", // 文件路径(可选)。设置 FileName, 当 FileName 相同时,有文件覆盖的风险;需要保证 FileName 不同。
          FileExtension: ".mp4", // 文件后缀(可选)。以 . 开头,不超过 8 位。当您传入 FileExtension 时,不需要重复传入 FileName 参数,视频点播将生成 32 位随机字符串,和您传入的 FileExtension 共同拼接成文件路径。
        },
        {
          SourceUrl: "http://demourl/test2.mp4",
          FileName: "cartoon/test1.mp4",
        },
      ],
    };
    const res = await vodOpenapiService.UploadMediaByUrl(options);
    // do your work
    // ...
  } catch (err) {
    console.log(err);
  }
};

流式上传

const uploadMaterial = async () => {
  try {
    const options = {
      SpaceName: "your target space name", // 空间名
      Content: "your file content", // 文件可读流
      FileSize: "your file size", // 文件大小
      FileName: "your target storage path", // 文件路径(可选)。您可根据业务需求自定义文件路径。设置 FileName, 当 FileName 相同时,有文件覆盖的风险;需要保证 FileName 不同。
      FileExtension: "your file extension", // 文件后缀(可选)。以.开头,不超过 8 位。当您传入 FileExtension 时,不需要重复传入FileName 参数,视频点播将生成 32 位随机字符串,和您传入的 FileExtension 共同拼接成文件路径。
      Functions: JSON.stringify([
        { Name: "GetMeta" },
        {
          Name: "Snapshot",
          Input: {
            SnapshotTime: 2.3,
          },
        },
      ]),
      CallbackArgs: "your callbackArgs",
    };
    const res = await vodOpenapiService.UploadMaterial(options);
    // do your work
    // ...
  } catch (err) {
    console.log(err);
  }
};

上传素材

视频点播服务端 SDK 封装了 ApplyUploadInfo - 获取上传地址和凭证CommitUploadInfo - 确认上传接口以及上传逻辑,您只需简单配置即可进行上传。

说明

  • 完整的上传流程请见服务端上传
  • 上传任务成功提交后,您可通过素材上传完成事件通知获取任务结果。配置方式请见事件通知概述
  • 上传文件时必须携带文件后缀。例如,如需上传 MP4 文件,携带 .mp4.MP4
  • 以下示例为 2022-01-01 版本的 ApplyUploadInfo 和 CommitUploadInfo 接口。若您使用 2020-08-01 版本,示例代码请见历史版本
const uploadMaterial = async () => {
  try {
    const options = {
      SpaceName: "your target space name", // 空间名
      FilePath: "your local file path", // 目标文件的绝对路径
      FileName: "your target storage path", // 文件路径(可选)。您可根据业务需求自定义文件路径
      FileExtension: "your file extension", // 文件后缀(可选)。以 . 开头,不超过 8 位。当您传入 FileExtension 时,不需要重复传入 FileName 参数,视频点播将生成 32 位随机字符串,和您传入的 FileExtension 共同拼接成文件路径。
      FileType: "your file type",
      Functions: JSON.stringify([
        { Name: "GetMeta" },
        {
          Name: "AddOptionInfo",
          Input: {
            Title: "素材测试名称",
            Tags: "test",
            Description: "素材测试,视频文件",
            Category: "video",
            Format: "MP4",
            RecordType: 2,
          },
        },
      ]),
      CallbackArgs: "your callbackArgs"
    };
    const res = await vodOpenapiService.UploadMaterial(options);
    // do your work
    // ...
  } catch (err) {
    console.log(err);
  }
};

其它示例

签发临时上传 Token

如果您使用客户端上传 SDK 进行上传,您需要在应用服务端通过 AK 和 SK 在本地签出临时上传 Token,不依赖外网。如希望同时生成多个临时上传 Token,您可以循环调用生成方法。临时上传 Token 用于客户端上传,详见客户端上传

// 可设置临时密钥过期时间(单位为毫秒),默认为 1h。
vodOpenapiService.GetUploadToken();
// 如下示例设置临时上传凭证过期时间为 30min。
vodOpenapiService.GetUploadToken(30 * 60 * 1000);

查询 URL 批量拉取上传任务状态

接口的请求参数和返回参数说明详见 QueryUploadTaskInfo

const queryUploadTaskInfo = async () => {
  try {
    const options = { JobIds: "your job ids" };
    const res = await vodOpenapiService.QueryUploadTaskInfo(options);
    // do your work
    // ...
  } catch (err) {
    console.log(err);
  }
};

历史版本

2020-08-01 上传音视频

接口请求参数和返回参数说明详见 ApplyUploadInfoCommitUploadInfo

const uploadMedia = async () => {
  try {
    const options = {
      SpaceName: "your space name",
      FilePath: "your file path", // 绝对路径
      Functions: JSON.stringify([
        { Name: "GetMeta" },
        {
          Name: "Snapshot",
          Input: {
            SnapshotTime: 2.3,
          },
        },
      ]),
      CallbackArgs: "your callbackArgs"
    };
    const res = await vodOpenapiService.UploadMedia(options);
    // do your work
    // ...
  } catch (err) {
    console.log(err);
  }
};

2020-08-01 上传素材

接口请求参数和返回参数说明详见 ApplyUploadInfoCommitUploadInfo

const uploadMaterial = async () => {
  try {
    const options = {
      SpaceName: "your space name",
      FilePath: "your file path", // 绝对路径
      FileType: "your file type",
      Functions: JSON.stringify([
        { Name: "GetMeta" },
        {
          Name: "AddOptionInfo",
          Input: {
            Title: "素材测试名称",
            Tags: "test",
            Description: "素材测试,视频文件",
            Category: "video",
            Format: "MP4",
            RecordType: 2,
          },
        },
      ]),
      CallbackArgs: "your callbackArgs"
    };
    const res = await vodOpenapiService.UploadMaterial(options);
    // do your work
    // ...
  } catch (err) {
    console.log(err);
  }
};