在以下位置建立和管理轉碼工作 MediaConvert - AWS SDK for JavaScript

AWS SDK for JavaScript V3 參API考指南詳細描述了 AWS SDK for JavaScript 版本 3(V3)的所有API操作。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在以下位置建立和管理轉碼工作 MediaConvert

JavaScript code example that applies to Node.js execution

這個 Node.js 程式碼範例會說明:

  • 如何指定要搭配使用的區域特定端點。 MediaConvert

  • 如何在 MediaConvert.

  • 如何取消轉碼任務。

  • 如何擷取已完成轉碼任務的 JSON。

  • 如何擷取高達 20 個最近建立任務的 JSON 陣列。

該方案

在此範例中,您可以使用 Node.js 模組來呼叫 MediaConvert 以建立和管理轉碼工作。程式碼會使用 SDK JavaScript 來執行這項作業,方法是使用用 MediaConvert 戶端類別的下列方法:

必要工作

若要設定和執行此範例,請先完成這些任務:

  • 設置項目環境以運行這些節點 TypeScript 示例,並安裝所需AWS SDK for JavaScript的第三方模塊。按照上的說明進行操作 GitHub

  • 透過使用者登入資料建立共用組態檔。有關提供共用認證檔案的詳細資訊,請參閱 AWSSDK 和工具參考指南中的共用設定和認證檔案。

  • 建立和設定 Amazon S3 儲存貯體,為任務輸入檔案和輸出檔案提供儲存。如需詳細資訊,請參閱《AWS Elemental MediaConvert使用指南》中的為檔案建立儲存空間

  • 將輸入影片上傳到您佈建用於輸入儲存的 Amazon S3 儲存貯體。如需支援的輸入視訊轉碼器和容器清單,請參閱AWS Elemental MediaConvert使用指南支援的輸入轉碼器和容器

  • 建立可存 MediaConvert 取輸入檔案和存放輸出檔案的 Amazon S3 儲存貯體的 IAM 角色。如需詳細資訊,請參閱AWS Elemental MediaConvert使用指南中的設定 IAM 許可

重要

此範例使用電子郵件密碼 6 (ES6)。這需要 Node.js 版本 13.x 或更高版本。要下載並安裝最新版本的 Node.js,請參閱 Node.js 下載。

但是,如果您更喜歡使用 CommonJS 語法,請參閱JavaScript ES6/共同語法

設定軟體開發套件

如先前所示設定 SDK,包括下載所需的用戶端和套件。由於每個帳戶都 MediaConvert 使用自訂端點,因此您還必須將用戶MediaConvert端類別設定為使用區域特定端點。若要這麼做,請在 mediaconvert(endpoint) 上設定 endpoint 參數。

// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js";

定義簡單的轉碼工作

創建一個libs目錄,並使用文件名創建一個 Node.js 模塊emcClient.js。將下面的代碼複製並粘貼到其中,以創建 MediaConvert 客戶端對象。以您的地區取代「AWS地區」。將 END POINT 取代為您的 MediaConvert 帳戶端點,您可以在主控台的 [帳戶] 頁面上使用該 MediaConvert 端點。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

您可以在這裡找到這個範例程式碼 GitHub。

以檔名 emc_createjob.js 建立一個 Node.js 模組。請務必如先前所示設定 SDK,包括安裝所需的用戶端和套件。建立 JSON,定義轉碼任務參數。

這些參數相當詳細。您可以使用AWS Elemental MediaConvert主控台產生 JSON Job 參數,方法是在主控台中選擇工作設定,然後選擇 [工作] 區段底部的 [顯示工作 JSON]。此範例顯示簡單任務的 JSON。

注意

作業佇列取代為 MediaConvert 作業佇列,將 IAM_ROLE_ARN 取代為 IAM 角色的亞馬遜資源名稱 (ARN)、輸出 _ BUCKET_NAME 以目標值區名稱取代-例如,"s3://OUTPUT_BUCKET_NAME/「,以及輸入值區和檔案名稱的輸入值區和檔案名稱-例如," s3://INPUT_BUCKET/FILE_NAME」。

const params = { Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN UserMetadata: { Customer: "Amazon", }, Role: "IAM_ROLE_ARN", //IAM_ROLE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "OUTPUT_BUCKET_NAME", //OUTPUT_BUCKET_NAME, e.g., "s3://BUCKET_NAME/" }, }, Outputs: [ { VideoDescription: { ScalingBehavior: "DEFAULT", TimecodeInsertion: "DISABLED", AntiAlias: "ENABLED", Sharpness: 50, CodecSettings: { Codec: "H_264", H264Settings: { InterlaceMode: "PROGRESSIVE", NumberReferenceFrames: 3, Syntax: "DEFAULT", Softness: 0, GopClosedCadence: 1, GopSize: 90, Slices: 1, GopBReference: "DISABLED", SlowPal: "DISABLED", SpatialAdaptiveQuantization: "ENABLED", TemporalAdaptiveQuantization: "ENABLED", FlickerAdaptiveQuantization: "DISABLED", EntropyEncoding: "CABAC", Bitrate: 5000000, FramerateControl: "SPECIFIED", RateControlMode: "CBR", CodecProfile: "MAIN", Telecine: "NONE", MinIInterval: 0, AdaptiveQuantization: "HIGH", CodecLevel: "AUTO", FieldEncoding: "PAFF", SceneChangeDetect: "ENABLED", QualityTuningLevel: "SINGLE_PASS", FramerateConversionAlgorithm: "DUPLICATE_DROP", UnregisteredSeiTimecode: "DISABLED", GopSizeUnits: "FRAMES", ParControl: "SPECIFIED", NumberBFramesBetweenReferenceFrames: 2, RepeatPps: "DISABLED", FramerateNumerator: 30, FramerateDenominator: 1, ParNumerator: 1, ParDenominator: 1, }, }, AfdSignaling: "NONE", DropFrameTimecode: "ENABLED", RespondToAfd: "NONE", ColorMetadata: "INSERT", }, AudioDescriptions: [ { AudioTypeControl: "FOLLOW_INPUT", CodecSettings: { Codec: "AAC", AacSettings: { AudioDescriptionBroadcasterMix: "NORMAL", RateControlMode: "CBR", CodecProfile: "LC", CodingMode: "CODING_MODE_2_0", RawFormat: "NONE", SampleRate: 48000, Specification: "MPEG4", Bitrate: 64000, }, }, LanguageCodeControl: "FOLLOW_INPUT", AudioSourceName: "Audio Selector 1", }, ], ContainerSettings: { Container: "MP4", Mp4Settings: { CslgAtom: "INCLUDE", FreeSpaceBox: "EXCLUDE", MoovPlacement: "PROGRESSIVE_DOWNLOAD", }, }, NameModifier: "_1", }, ], }, ], AdAvailOffset: 0, Inputs: [ { AudioSelectors: { "Audio Selector 1": { Offset: 0, DefaultSelection: "NOT_DEFAULT", ProgramSelection: 1, SelectorType: "TRACK", Tracks: [1], }, }, VideoSelector: { ColorSpace: "FOLLOW", }, FilterEnable: "AUTO", PsiControl: "USE_PSI", FilterStrength: 0, DeblockFilter: "DISABLED", DenoiseFilter: "DISABLED", TimecodeSource: "EMBEDDED", FileInput: "INPUT_BUCKET_AND_FILENAME", //INPUT_BUCKET_AND_FILENAME, e.g., "s3://BUCKET_NAME/FILE_NAME" }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, };

建立轉碼工作

建立工作參數 JSON 之後,呼叫非同步run方法來叫用用MediaConvert戶端服務物件,並傳遞參數。回應 data 中會傳回所建立任務的 ID。

const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Job created!", data); return data; } catch (err) { console.log("Error", err); } }; run();

若要執行範例,請在命令提示字元中輸入下列命令。

node emc_createjob.js

這個完整的示例代碼可以在這裡找到 GitHub。

取消轉碼工作

創建一個libs目錄,並使用文件名創建一個 Node.js 模塊emcClient.js。將下面的代碼複製並粘貼到其中,以創建 MediaConvert 客戶端對象。以您的地區取代「AWS地區」。將 END POINT 取代為您的 MediaConvert 帳戶端點,您可以在主控台的 [帳戶] 頁面上使用該 MediaConvert 端點。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

您可以在這裡找到這個範例程式碼 GitHub。

以檔名 emc_canceljob.js 建立一個 Node.js 模組。請務必如先前所示設定 SDK,包括下載所需的用戶端和套件。建立包含要取消任務 ID 的 JSON。然後通過創建一個 promise 來調用MediaConvert客戶端服務對象並傳遞參數來調用該CancelJobCommand方法。在 promise 回呼中處理回應。

注意

JOB_ID 取代為要取消之工作的識別碼。

// Import required AWS-SDK clients and commands for Node.js import { CancelJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { Id: "JOB_ID" }; //JOB_ID const run = async () => { try { const data = await emcClient.send(new CancelJobCommand(params)); console.log("Job " + params.Id + " is canceled"); return data; } catch (err) { console.log("Error", err); } }; run();

若要執行範例,請在命令提示字元中輸入下列命令。

node ec2_canceljob.js

您可以在這裡找到這個範例程式碼 GitHub。

列出最近的轉碼工作

創建一個libs目錄,並使用文件名創建一個 Node.js 模塊emcClient.js。將下面的代碼複製並粘貼到其中,以創建 MediaConvert 客戶端對象。以您的地區取代「AWS地區」。將 END POINT 取代為您的 MediaConvert 帳戶端點,您可以在主控台的 [帳戶] 頁面上使用該 MediaConvert 端點。

import { MediaConvertClient } from "@aws-sdk/client-mediaconvert"; // Set the account end point. const ENDPOINT = { endpoint: "https://ENDPOINT_UNIQUE_STRING.mediaconvert.REGION.amazonaws.com", }; // Set the MediaConvert Service Object const emcClient = new MediaConvertClient(ENDPOINT); export { emcClient };

您可以在這裡找到這個範例程式碼 GitHub。

以檔名 emc_listjobs.js 建立一個 Node.js 模組。請務必如先前所示設定 SDK,包括安裝所需的用戶端和套件。

建立參數 JSON,包括用於指定要檢查之任務佇列的 ASCENDING Amazon 資源名稱 (ARN) 清DESCENDING單排序或排序清單的值,以及要包含的任務狀態。然後通過創建一個 promise 來調用MediaConvert客戶端服務對象並傳遞參數來調用該ListJobsCommand方法。

注意

QUEUE_ARN 取代為要檢查的任務佇列的亞馬遜資源名稱 (ARN),並將狀態取代為佇列的狀態

// Import required AWS-SDK clients and commands for Node.js import { ListJobsCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { MaxResults: 10, Order: "ASCENDING", Queue: "QUEUE_ARN", Status: "SUBMITTED", // e.g., "SUBMITTED" }; const run = async () => { try { const data = await emcClient.send(new ListJobsCommand(params)); console.log("Success. Jobs: ", data.Jobs); } catch (err) { console.log("Error", err); } }; run();

若要執行範例,請在命令提示字元中輸入下列命令。

node emc_listjobs.js

您可以在這裡找到這個範例程式碼 GitHub。