haga0こんにちは、技術2課の芳賀です。MediaConvertについて触る機会があったので手順をまとめてみました。ファイルベースの動画処理サービスで、コンテンツオーナーやコンテンツディストリビューターは、所有するメディアライブラリのサイズに関係なく、スケーラブルに動画処理を行うことができます。プレミアムコンテンツの体験を実現する、以下の高度な機能を提供します。動画の変換処理を数ステップで実行することができます。以下のドキュメントを参考にMediaConvertを使ってみたいと思います。手順の概要としては以下です。ファイルストレージの作成・変換元ファイルの配置IAMロールの作成ジョブテンプレートの作成ジョブを作成する動作確認1.ファイルストレージの作成・変換元ファイルの配置MediaConvertでエンコードする動画を格納するためのS3バケットを作成します。S3のサービスにて「バケットを作成する」で作成します。バケット作成時の設定ウィザードではデフォルトのまま非公開の設定で作成します。ここでは「for-mediaconvert」というS3バケットを作成しました。(同じ名称でS3バケットは作成できないため、任意の名称で作成してください)「for-mediaconvert」のS3バケット内に「input」、「output」のフォルダを作成します。「input」にはエンコード前の動画を格納します。「output」にはエンコード後の動画が格納されるよう後ほどMediaConvert側に設定します。ここでは「input」に複数のTSファイル(動画ファイル)を配置しました。2.IAMロールの作成MediaConvertを使用するためにIAMロールを作成します。アクセス許可の設定IAMサービスより「ロール」を選択し、「ロールの作成」を選択します。サービス「MediaConvert」を選択し、「次のステップ」を選択します。MediaConvertを使用する際に必要なポリシーが選択された状態になります。「次のステップ」を選択します。タグは任意で設定します。ここでは特に何も設定せず「次のステップ」を選択します。ロール名を入力します。ここでは「role-mediaconvert」を入力し「ロールの作成」を選択します。MediaConvert用の「role-mediaconvert」のIAMロールが作成されました。Convertはジョブという単位で1つのファイルをエンコードすることができます。毎回ジョブを一から作成するのは大変手間な為、ジョブテンプレートという形でテンプレートを作成します。同じ形式にエンコードする場合はこのジョブテンプレートを流用することができます。Convertのサービスより「ジョブテンプレート」を選択し、「テンプレートの作成」を選択します。「一般設定」を選択し、ここでは名前に「job-template-appleHLS」を入力します(カテゴリ、説明は任意です)。入力の「追加」を選択します。ここでは入力項目はデフォルトのままとします(このままでも問題なくエンコードすることができます。細かい指定を指定場合は変更してください)。出力グループの「追加」を選択します。HLS」を選択します。エンコード後の動画を格納するS3バケットを指定します。ここでは作成したS3バケットの「output」を選択します。カスタムグループ名に任意の名前を入力します。ここでは「output-group」としました(未入力可)。Output1の名前修飾子は「convert1」としました。エンコード後のファイル名に付与されます(必須)。セグメントの設定についてここではデフォルトの設定としています。必要に応じて変更してください。出力グループの「Output1」を選択します。エンコード後の形式を細かく設定することができますが、ここではプリセットとして用意されている「System-Avc_16x9_1080p_29_97fps_8500kbps」を選択しました。1つのジョブで複数の形式にエンコードしたい場合は、出力グループの「追加」を選択することでOutput2として別なエンコード形式を選択することもできます。「作成」を選択します。Convertのジョブテンプレートが作成されました。4.ジョブを作成するジョブテンプレートをもとにジョブを作成し、動画をエンコードします。作成したジョブテンプレートを選択し「ジョブの作成」を選択します。入力1にて「参照」を選択します。エンコード前のファイルを選択します。格納先のS3バケットを選択、エンコード対象となるファイルを選択します。そのほかの入力項目はジョブテンプレートに設定した内容が反映されています。必要に応じて変更してください(特に変更せずにエンコード可能です)。ジョブの設定の「設定」にて、作成したMediaConvert用のIAMロール「role-mediaconvert」を選択します。「作成」を選択します。※エンコードが即開始されますジョブを確認するとステータスが「PROGRESSING」のジョブのレコードが追加されたことが確認できます。待つとステータスが「COMPLETE」になります。S3バケットの「output」を確認するとエンコード後の画像ファイルが格納されていることを確認できます。ここでは18秒の動画に対してセグメントの長さを10秒でエンコードした為、セグメントファイル(.tsファイル)が2つになっています。「変換前のファイル名」+「.m3u8」のオブジェクトURLに対してアクセスすることで動画を再生することができます。S3から直接動画を再生する為には、対象のオブジェクトURLが公開されている必要があります。※CloudFront、Route53などを組み合わせることで、対象オブジェクトのURLを公開せずともアクセスすることが可能になります。オブジェクトURLにアクセスすると動画をストリーミング再生することが確認できます。専門的な用語が多くかなり躊躇しました。出力設定にはプリセットという事前に設定済みの項目を選択することができ、一般的な出力設定は網羅されているのかと思われます。このおかげで比較的簡単に動画をエンコードすることができました。今回は手動でMediaConvertを操作しましたが、複数の動画をエンコードする場合に毎回操作するのは辛いかと思います。その場合、LambdaからMediaConvertのAPI+今回作成したジョブテンプレートを使用することで、S3配下に配置された動画を一括で変換するなどの実装も可能です。本ブログにてMediaConvertの使い方を少しでもイメージ頂けたら幸いです。エンジニアブログ.TOP。