全部產品
Search
文件中心

Intelligent Media Services:轉碼任務

更新時間:Mar 13, 2025

通過閱讀本文,您可以瞭解通過服務端SDK調用OpenAPI發起並查詢智能媒體服務轉碼任務的範例程式碼。

使用說明

發起轉碼任務時,需要先根據使用者所提供的region(提供服務的地區)、name(轉碼任務名稱)、inputPath(轉碼任務的輸入OSS路徑)、outputpath(轉碼任務的輸出OSS路徑)和templateId(轉碼模板ID)參數提交轉碼任務。轉碼任務處理成功後,可以根據返回的JobId(任務ID)查詢該轉碼任務資訊。

轉碼任務參數需注意以下幾點:

  • region為提供服務的地區。

  • name可以為空白。

  • inputPathoutputpath必須和region在同一地區。

  • templateId可通過轉碼範本管理員頁面擷取。

說明

region目前支援地區如下:

  • 點播ApsaraVideo for Media Processing:華東2(上海)、華北2(北京)、華南1(深圳)

  • 即時ApsaraVideo for Media Processing:華東2(上海)

範例程式碼

您可以通過阿里雲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));

相關介面