MediaConvert でのジョブテンプレートの使用 - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

MediaConvert でのジョブテンプレートの使用

JavaScript code example that applies to Node.js execution

この Node.js コード例は以下を示しています。

  • MediaConvert ジョブテンプレートを作成する方法。

  • コード変換ジョブを作成するためのジョブテンプレートを使用する方法。

  • すべてのジョブテンプレートを一覧表示する方法。

  • ジョブテンプレートを作成する方法。

シナリオ

MediaConvert でコード変換ジョブを作成するために必要な JSON は詳細で、多数の設定が含まれています。後続のジョブを作成するために使用できるジョブテンプレートに既知の正常な設定を保存することで、ジョブ作成を大幅に簡素化できます。この例では、Node.js モジュールを使用して MediaConvert を呼び出し、ジョブテンプレートを作成、使用、および管理します。コードは SDK for JavaScript を使用して、MediaConvert クライアントクラスのこれらのメソッドを使用してこれを実行します。

前提条件タスク

この例をセットアップして実行するには、まず次のタスクを完了します。

  • Node.js をインストールします。詳細については、Node.js のウェブサイトを参照してください。

  • ユーザーの認証情報を使用して、共有設定ファイルを作成します。共有認証情報ファイルの提供の詳細については、共有認証情報ファイルから Node.js に認証情報をロードする を参照してください。

  • MediaConvert に入力ファイルと、出力ファイルが保存されている Amazon S3 バケットへのアクセスを付与する IAM ロールを作成します。詳細については、「AWS Elemental MediaConvert ユーザーガイド」の「IAM アクセス許可の設定」を参照してください。

ジョブテンプレートの作成

emc_create_jobtemplate.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。

テンプレート作成用の 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 モジュールを作成します。前に示したように SDK を必ず設定します。

使用するジョブテンプレートの名前、使用する Settings など、作成するジョブに固有のジョブ作成パラメータ JSON を作成します。次に、AWS.MediaConvert サービスオブジェクトを呼び出すための promise を作成して createJobs メソッドを呼び出し、パラメータを渡します。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 モジュールを作成します。前に示したように SDK を必ず設定します。

AWS.MediaConvert クライアントクラスの listTemplates メソッドで空のリクエストパラメータを渡すためのオブジェクトを作成します。一覧表示するテンプレート (NAMECREATION DATESYSTEM)、一覧表示するテンプレートの数、およびそれらのソート順を決定するための値を含めます。listTemplates メソッドを呼び出すには、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 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 モジュールを作成します。前に示したように SDK を必ず設定します。

削除するジョブテンプレートの名前を AWS.MediaConvert クライアントクラスの deleteJobTemplate メソッドのパラメータとして渡すオブジェクトを作成します。deleteJobTemplate メソッドを呼び出すには、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 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にあります。