AWS SDK for JavaScript v2 はサポート終了となりました。AWS SDK for JavaScript v3 に移行することをお勧めします。その他の詳細、移行方法については、こちらの発表内容
MediaConvert でのコード変換ジョブの作成と管理
この Node.js コード例は以下を示しています。
MediaConvert でコード変換ジョブを作成する方法。
コード変換ジョブをキャンセルする方法。
完了したコード変換ジョブの JSON を取得する方法。
最近作成されたジョブの最大 20 個の JSON 配列を取得する方法。
シナリオ
この例では、Node.js モジュールを使用して MediaConvert を呼び出し、コード変換ジョブを作成および管理します。コードは SDK for JavaScript を使用して、MediaConvert クライアントクラスのこれらのメソッドを使用してこれを取得します。
前提条件タスク
この例をセットアップして実行するには、まず次のタスクを完了します。
Node.js をインストールします。詳細については、Node.js のウェブサイト
を参照してください。 ユーザーの認証情報を使用して、共有設定ファイルを作成します。共有認証情報ファイルの提供の詳細については、共有認証情報ファイルから Node.js に認証情報をロードする を参照してください。
ジョブの入力ファイル用および出力ファイル用のストレージを提供する Amazon S3 バケットを作成して設定します。詳細については、「AWS Elemental MediaConvert ユーザーガイド」の「ファイルのストレージを作成する」を参照してください。
入力動画を、入力ストレージ用にプロビジョニングした Amazon S3 バケットにアップロードします。サポートされている入力動画のコーデックとコンテナの一覧については、「AWS Elemental MediaConvert ユーザーガイド」の「サポートされる入力コーデックおよびコンテナ」を参照してください。
MediaConvert に入力ファイルと、出力ファイルが保存されている Amazon S3 バケットへのアクセスを付与する IAM ロールを作成します。詳細については、「AWS Elemental MediaConvert ユーザーガイド」の「IAM アクセス許可の設定」を参照してください。
シンプルなコード変換ジョブの定義
emc_createjob.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。コード変換ジョブのパラメータを定義する JSON を作成します。
これらは非常に詳細なパラメータです。AWS Elemental MediaConvert コンソール
var params = { Queue: "JOB_QUEUE_ARN", UserMetadata: { Customer: "Amazon", }, Role: "IAM_ROLE_ARN", Settings: { OutputGroups: [ { Name: "File Group", OutputGroupSettings: { Type: "FILE_GROUP_SETTINGS", FileGroupSettings: { Destination: "s3://OUTPUT_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: "s3://INPUT_BUCKET_AND_FILE_NAME", }, ], TimecodeConfig: { Source: "EMBEDDED", }, }, };
コード変換ジョブの作成
ジョブパラメータの JSON を作成した後で、createJob サービスオブジェクトを呼び出すための promise を作成して、AWS.MediaConvert メソッドを呼び出し、パラメータを渡します。次に、promise コールバックのレスポンスを処理します。作成されたジョブの ID がレスポンスの data で返されます。
// Create a promise on a MediaConvert object var endpointPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .createJob(params) .promise(); // Handle promise's fulfilled/rejected status endpointPromise.then( function (data) { console.log("Job created! ", data); }, function (err) { console.log("Error", err); } );
この例を実行するには、コマンドラインに次のように入力します。
node emc_createjob.js
このサンプルコードは、このGitHub
コード変換ジョブのキャンセル
emc_canceljob.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。キャンセルするジョブの ID を含む JSON を作成します。次に、cancelJob サービスオブジェクトを呼び出すための promise を作成して AWS.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 MediaConvert to customer endpoint AWS.config.mediaconvert = { endpoint: "ACCOUNT_ENDPOINT" }; var params = { Id: "JOB_ID" /* required */, }; // Create a promise on a MediaConvert object var endpointPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .cancelJob(params) .promise(); // Handle promise's fulfilled/rejected status endpointPromise.then( function (data) { console.log("Job " + params.Id + " is canceled"); }, function (err) { console.log("Error", err); } );
この例を実行するには、コマンドラインに次のように入力します。
node ec2_canceljob.js
このサンプルコードは、このGitHub
最新のコード変換ジョブの一覧表示
emc_listjobs.js というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。
パラメータの JSON を作成します。これには、リストを ASCENDING または DESCENDING でソートするかを指定する値、チェックするジョブキューの ARN、および追加するジョブのステータスが含まれます。次に、listJobs サービスオブジェクトを呼び出すための promise を作成して AWS.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 = { MaxResults: 10, Order: "ASCENDING", Queue: "QUEUE_ARN", Status: "SUBMITTED", }; // Create a promise on a MediaConvert object var endpointPromise = new AWS.MediaConvert({ apiVersion: "2017-08-29" }) .listJobs(params) .promise(); // Handle promise's fulfilled/rejected status endpointPromise.then( function (data) { console.log("Jobs: ", data); }, function (err) { console.log("Error", err); } );
この例を実行するには、コマンドラインに次のように入力します。
node emc_listjobs.js
このサンプルコードは、このGitHub