適用於 JavaScript 的 AWS SDK V3 API 參考指南詳細說明 第 3 版 適用於 JavaScript 的 AWS SDK (V3) 的所有 API 操作。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 MediaConvert 中使用任務範本
這個 Node.js 程式碼範例會說明:
如何建立 AWS Elemental MediaConvert 任務範本。
如何使用任務範本來建立轉譯任務。
如何列出所有任務範本。
如何刪除任務範本。
案例
在 MediaConvert 中建立轉碼任務所需的 JSON 是詳細的,其中包含大量的設定。您可以在您在建立後續任務能用的任務範本中儲存已知良好的設定,來大幅簡化任務的建立作業。在此範例中,您使用 Node.js 模組呼叫 MediaConvert 來建立、使用和管理任務範本。此程式碼使用以下 MediaConvert 用戶端類別的方法,使用適用於 JavaScript 的 SDK 來執行此操作:
先決條件任務
若要設定和執行此範例,請先完成這些任務:
-
設定專案環境以執行這些 Node TypeScript 範例,並安裝必要的 適用於 JavaScript 的 AWS SDK 和第三方模組。遵循 GitHub
上的指示。 透過使用者登入資料建立共用組態檔。如需提供共用登入資料檔案的詳細資訊,請參閱 AWS SDKs 和工具參考指南中的共用組態和登入資料檔案。
建立 IAM 角色,讓 MediaConvert 存取您的輸入檔案,以及儲存輸出檔案的 Amazon S3 儲存貯體。如需詳細資訊,請參閱《 使用者指南》中的設定 IAM 許可。 AWS Elemental MediaConvert
重要
這些範例使用 ECMAScript6 (ES6)。這需要 Node.js 13.x 版或更新版本。若要下載並安裝最新版本的 Node.js,請參閱 Node.js 下載。
不過,如果您偏好使用 CommonJS 語法,請參閱 JavaScript ES6/CommonJS 語法。
建立任務範本
以檔名 emc_create_jobtemplate.js 建立一個 Node.js 模組。請務必如先前所示設定 SDK,包括安裝所需的用戶端和套件。
為範本建立指定 JSON 參數。您可以使用來自先前成功任務的多數 JSON 參數,來在範本中指定 Settings 值。此範例使用來自 在 MediaConvert 中建立和管理轉碼任務的任務設定。
透過建立叫用MediaConvert用戶端服務物件並傳遞參數的承諾來呼叫 CreateJobTemplateCommand方法。
注意
將 JOB_QUEUE_ARN 取代為要檢查之任務佇列的 Amazon Resource Name (ARN),並將 BUCKET_NAME 取代為目的地 Amazon S3 儲存貯體的名稱,例如 "s3://BUCKET_NAME/"。
// Import required AWS-SDK clients and commands for Node.js import { CreateJobTemplateCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { Category: "YouTube Jobs", Description: "Final production transcode", Name: "DemoTemplate", Queue: "JOB_QUEUE_ARN", //JOB_QUEUE_ARN Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "BUCKET_NAME", // 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", }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, }; const run = async () => { try { // Create a promise on a MediaConvert object const data = await emcClient.send(new CreateJobTemplateCommand(params)); console.log("Success!", data); return data; } catch (err) { console.log("Error", err); } }; run();
若要執行範例,請在命令提示中輸入以下內容。
node emc_create_jobtemplate.js
您可以在 GitHub 上找到此
從任務範本建立轉碼任務
以檔名 emc_template_createjob.js 建立一個 Node.js 模組。請務必如先前所示設定 SDK,包括安裝所需的用戶端和套件。
建立任務建立參數 JSON,其中包含要用的任務範本名稱,以及專屬於您在建立之任務的要使用 Settings。然後,透過建立叫用MediaConvert用戶端服務物件、傳遞參數的承諾來呼叫 CreateJobsCommand方法。
注意
將 JOB_QUEUE_ARN 取代為任務佇列的 Amazon Resource Name (ARN),將 KEY_PAIR_NAME 取代為 TEMPLATE_NAME 取代為 ,將 ROLE_ARN 取代為角色的 Amazon Resource Name (ARN),並將 INPUT_BUCKET_AND_FILENAME 取代為輸入儲存貯體和檔案名稱 - 例如 "s3://BUCKET_NAME/FILE_NAME"。
// Import required AWS-SDK clients and commands for Node.js import { CreateJobCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { Queue: "QUEUE_ARN", //QUEUE_ARN JobTemplate: "TEMPLATE_NAME", //TEMPLATE_NAME Role: "ROLE_ARN", //ROLE_ARN Settings: { 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" }, ], }, }; const run = async () => { try { const data = await emcClient.send(new CreateJobCommand(params)); console.log("Success! ", data); return data; } catch (err) { console.log("Error", err); } }; run();
若要執行範例,請在命令提示中輸入以下內容。
node emc_template_createjob.js
您可以在 GitHub 上找到
列出您的任務範本
以檔名 emc_listtemplates.js 建立一個 Node.js 模組。請務必如先前所示設定 SDK,包括安裝所需的用戶端和套件。
建立物件,傳遞 MediaConvert 用戶端類別的 listTemplates 方法的空請求參數。包含值來判斷要列出哪些範本 (NAME, CREATION DATE, SYSTEM)、要列出多少以及這些範本的排序。若要呼叫 ListTemplatesCommand方法,請建立叫用 MediaConvert 用戶端服務物件並傳遞參數的承諾。
// Import required AWS-SDK clients and commands for Node.js import { ListJobTemplatesCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; const params = { ListBy: "NAME", MaxResults: 10, Order: "ASCENDING", }; const run = async () => { try { const data = await emcClient.send(new ListJobTemplatesCommand(params)); console.log("Success ", data.JobTemplates); return data; } catch (err) { console.log("Error", err); } }; run();
若要執行範例,請在命令提示中輸入以下內容。
node emc_listtemplates.js
您可以在 GitHub 上找到
刪除任務範本
以檔名 emc_deletetemplate.js 建立一個 Node.js 模組。請務必如先前所示設定 SDK,包括安裝所需的用戶端和套件。
建立物件,為 MediaConvert 用戶端類別的 DeleteJobTemplateCommand 方法傳遞您要刪除做為參數的任務範本名稱。若要呼叫 DeleteJobTemplateCommand方法,請建立叫用 MediaConvert 用戶端服務物件並傳遞參數的承諾。
// Import required AWS-SDK clients and commands for Node.js import { DeleteJobTemplateCommand } from "@aws-sdk/client-mediaconvert"; import { emcClient } from "./libs/emcClient.js"; // Set the parameters const params = { Name: "test" }; //TEMPLATE_NAME const run = async () => { try { const data = await emcClient.send(new DeleteJobTemplateCommand(params)); console.log( "Success, template deleted! Request ID:", data.$metadata.requestId, ); return data; } catch (err) { console.log("Error", err); } }; run();
若要執行範例,請在命令提示中輸入以下內容。
node emc_deletetemplate.js
您可以在 GitHub 上找到