使用 Job 範本 MediaConvert - AWS SDK for JavaScript

我們宣布了即將推 end-of-support 出的 AWS SDK for JavaScript v2。我們建議您移轉至 AWS SDK for JavaScript v3。有關日期,其他詳細信息以及如何遷移的信息,請參閱鏈接的公告。

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

使用 Job 範本 MediaConvert

JavaScript code example that applies to Node.js execution

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

  • 如何創建 MediaConvert 工作模板。

  • 如何使用任務範本來建立轉譯任務。

  • 如何列出所有任務範本。

  • 如何刪除任務範本。

使用案例

中建立轉碼工作所需的 JSON 詳細資訊,其中 MediaConvert 包含大量的設定。您可以在您在建立後續任務能用的任務範本中儲存已知良好的設定,來大幅簡化任務的建立作業。在此範例中,您可以使用 Node.js 模組 MediaConvert 來呼叫建立、使用和管理工作範本。程式碼會使用 SDK JavaScript 來執行這項作業,方法是使用用 MediaConvert戶端類別的下列方法:

先決條件任務

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

  • 安裝 Node.js。如需詳細資訊,請參閱 Node.js 網站。

  • 透過使用者登入資料建立共用組態檔。如需提供共用登入資料檔案的詳細資訊,請參閱 從共用登入資料檔案中在 Node.js 中載入登入資料

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

建立任務範本

以檔名 emc_create_jobtemplate.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。

為範本建立指定 JSON 參數。您可以使用來自先前成功任務的多數 JSON 參數,來在範本中指定 Settings 值。此範例使用來自 建立和管理轉碼工作 MediaConvert的任務設定。

建立呼叫 AWS.MediaConvert 服務物件的 promise 並傳遞參數,來呼叫 createJobTemplate 方法。接著在 promise 回呼中處理回應。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the Region AWS.config.update({ region: "us-west-2" }); // Set the custom endpoint for your account AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" }; var params = { Category: "YouTube Jobs", Description: "Final production transcode", Name: "DemoTemplate", Queue: "JOB_QUEUE_ARN", Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "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", }, }, }; // Create a promise on a MediaConvert object var templatePromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .createJobTemplate(params) .promise(); // Handle promise's fulfilled/rejected status templatePromise.then( function (data) { console.log("Success!", data); }, function (err) { console.log("Error", err); } );

若要執行範例,請在命令列中輸入以下內容。

node emc_create_jobtemplate.js

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

透過任務範本來建立轉譯任務

以檔名 emc_template_createjob.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。

建立任務建立參數 JSON,其中包含要用的任務範本名稱,以及專屬於您在建立之任務的要使用 Settings。接著,若要呼叫 createJobs 方法,請建立叫用 AWS.MediaConvert 服務物件的 promise 來傳遞參數。在 promise 回呼中處理回應。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the Region AWS.config.update({ region: "us-west-2" }); // Set the custom endpoint for your account AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" }; var params = { Queue: "QUEUE_ARN", JobTemplate: "TEMPLATE_NAME", Role: "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: "s3://BUCKET_NAME/FILE_NAME", }, ], }, }; // Create a promise on a MediaConvert object var templateJobPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .createJob(params) .promise(); // Handle promise's fulfilled/rejected status templateJobPromise.then( function (data) { console.log("Success! ", data); }, function (err) { console.log("Error", err); } );

若要執行範例,請在命令列中輸入以下內容。

node emc_template_createjob.js

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

列出任務範本

以檔名 emc_listtemplates.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。

建立物件,傳遞 AWS.MediaConvert 用戶端類別的 listTemplates 方法的空請求參數。包含值來判斷要列出哪些範本 (NAME, CREATION DATE, SYSTEM)、要列出多少以及這些範本的排序。要調用該listTemplates方法,請創建一個用於調用 MediaConvert 服務對象的承諾,並傳遞參數。接著在 promise 回呼中處理回應。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the Region AWS.config.update({ region: "us-west-2" }); // Set the customer endpoint AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" }; var params = { ListBy: "NAME", MaxResults: 10, Order: "ASCENDING", }; // Create a promise on a MediaConvert object var listTemplatesPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .listJobTemplates(params) .promise(); // Handle promise's fulfilled/rejected status listTemplatesPromise.then( function (data) { console.log("Success ", data); }, function (err) { console.log("Error", err); } );

若要執行範例,請在命令列中輸入以下內容。

node emc_listtemplates.js

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

刪除任務範本

以檔名 emc_deletetemplate.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。

建立物件,為 AWS.MediaConvert 用戶端類別的 deleteJobTemplate 方法傳遞您要刪除做為參數的任務範本名稱。要調用該deleteJobTemplate方法,請創建一個用於調用 MediaConvert 服務對象的承諾,並傳遞參數。在 promise 回呼中處理回應。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the Region AWS.config.update({ region: "us-west-2" }); // Set the customer endpoint AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" }; var params = { Name: "TEMPLATE_NAME", }; // Create a promise on a MediaConvert object var deleteTemplatePromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .deleteJobTemplate(params) .promise(); // Handle promise's fulfilled/rejected status deleteTemplatePromise.then( function (data) { console.log("Success ", data); }, function (err) { console.log("Error", err); } );

若要執行範例,請在命令列中輸入以下內容。

node emc_deletetemplate.js

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