通过阅读本文,您可以了解通过服务端SDK调用OpenAPI发起并查询智能媒体服务转码任务的示例代码。

使用说明

发起转码任务时,需要先根据用户所提供的region(提供服务的区域)、name(转码任务名称)、inputPath(转码任务的输入OSS路径)、outputpath(转码任务的输出OSS路径)和templateId(转码模板ID)参数提交转码任务。转码任务处理成功后,可以根据返回的jobId(任务ID)查询该转码任务信息。

转码任务参数需注意以下几点:
  • region目前仅支持服务地域中的区域。
  • name可以为空。
  • inputPathoutputpath必须和region在同一区域。
  • templateId可通过转码模板管理页面获取。

示例代码

您可以通过阿里云OpenAPI开发者门户在线调试。

import Console from '@alicloud/tea-console';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
import Util from '@alicloud/tea-util';
import ICE20201109, * as $ICE20201109 from '@alicloud/ice20201109';
import * as $tea from '@alicloud/tea-typescript';
import Credential, { Config } from '@alicloud/credentials';

/**
 * Node.js环境版本为8.x及以上。
 * 安装阿里云SDK Credentials工具。  npm install @alicloud/credentials
 * 安装IMS SDK npm install --save @alicloud/ice20201109@1.3.11
 *
 */
export default class Client {


  /** Credentials方式初始化客户端
   * @param regionId 提供服务的区域
   * @return 发送请求的客户端
   */
  static async createClient(regionId: string): Promise<ICE20201109> {

    const cred = new Credential();
    let config = new $OpenApi.Config({ });
    config.credential = cred;
    config.endpoint = `ice.${regionId}.aliyuncs.com`;
    return new ICE20201109(config);
  }

  /** 明文方式初始化客户端
   * 如需硬编码AccessKey ID和AccessKey Secret,代码如下,但强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
   * @param accessKeyId 阿里云AK
   * @param accessKeySecret 阿里云SK
   * @param regionId 提供服务的区域
   * @return 发送请求的客户端
   */
  //  static async createClient(accessKeyId: string, accessKeySecret: string, regionId: string): Promise<ICE20201109> {
  //     let config = new $OpenApi.Config({ });
  //     config.accessKeyId = accessKeyId;
  //     config.accessKeySecret = accessKeySecret;
  //     config.regionId = regionId;
  //     config.endpoint = `ice.${regionId}.aliyuncs.com`;
  //     return new ICE20201109(config);
  //   }


  // 读取命令行参数
  static async main(args: string[]): Promise<void> {
    let regionId = args[0];
    let name = args[1];
    let inputPath = args[2];
    let outputPath = args[3];
    let templateId = args[4];
    // 初始化客户端
    let client = await Client.createClient(regionId);
    // 构造提交任务请求
    let request = new $ICE20201109.SubmitTranscodeJobRequest({
      name: name,
      // 输入信息
      inputGroup: [
        new $ICE20201109.SubmitTranscodeJobRequestInputGroup({
          type: "OSS",
          media: inputPath,
        })
      ],
      // 输出信息
      outputGroup: [
        new $ICE20201109.SubmitTranscodeJobRequestOutputGroup({
          output: new $ICE20201109.SubmitTranscodeJobRequestOutputGroupOutput({
            type: "OSS",
            media: outputPath,
          }),
          processConfig: new $ICE20201109.SubmitTranscodeJobRequestOutputGroupProcessConfig({
            transcode: new $ICE20201109.SubmitTranscodeJobRequestOutputGroupProcessConfigTranscode({
              templateId: templateId,
            }),
          }),
        })
      ],
    });
    // 发送提交任务请求
    let response = await client.submitTranscodeJob(request);
    // 打印结果信息
    Console.log(Util.toJSONString($tea.toMap(response)));
    // 提取任务ID,并构造查询任务请求
    let jobId = response.body.transcodeParentJob.parentJobId;
    let queryRequest = new $ICE20201109.GetTranscodeJobRequest({
      jobId: jobId,
      });
      // 发送查询任务情况请求
      let queryResponse = await client.getTranscodeJob(queryRequest);
      // 打印结果信息
      Console.log(Util.toJSONString($tea.toMap(queryResponse)));
      }

}

Client.main(process.argv.slice(2));

相关接口