動画ファイルのサイズを圧縮し、ストリーミング速度を向上させ、データ転送のコストを削減する方法として、Amazon Elastic TranscoderまたはAWS Elemental MediaConvertサービスを利用することがあります。私はこの課題に対する解決策としてAWS Elemental MediaConvertを選択しました。なぜなら、これはTranscoderよりも費用が抑えられ、かつ高度なセキュリティ機能(DRM)が組み込まれているからです。今回はスムーズな動画変換ガイドを紹介したいと思います。
[AWS Elemental MediaConvert]って何?
AWS Elemental MediaConvertでは、設定した構成で動画をストリーム配信することができます。変換ジョブは、動画ファイルがS3バケットにアップロードされるたびに自動的に作成されます。ビデオ変換の完了およびエラーのステータスに関する通知も受信できます。 コスト削減に関しては、ファイルを他の形式に変換するための非常にコスト効果の高い選択肢です。 AWS Elemental MediaConvertは、ファイルベースの動画変換サービスであり、放送レベルの機能が備わっています。これにより、オンデマンド(VOD)の動画コンテンツを容易に作成し、大規模な多画面配信が可能となります。このサービスは、高度なビデオおよびオーディオ機能をシンプルなウェブサービスインターフェースと、使用量に応じた課金で組み合わせています。 AWS Elemental MediaConvertを使用することで、自身のビデオ処理インフラストラクチャの構築と運用の複雑さを気にせず、魅力的なメディアエクスペリエンスを提供することに焦点を当てることができます。詳細情報については、AWS Elemental MediaConvertのドキュメントを参照してください。 この記事では、MediaConvertとLambdaを利用して動画ファイルをMP4形式に変換し、完了またはエラーのステータスに関する通知を電子メールで受け取る方法を共有します。開発フレームワークはAWS Amplifyです。
AWSアーキテクチャ概要

動画変換の処理流れ
- 管理者が動画ファイルをS3フォルダー/video/にアップロードします。
- Event Bridgeは管理して/video/フォルダーに新しいファイルがアップロードされると、イベントがトリガーとなり、動画情報がLambda関数に送信されます。
- Lambda側で動画情報を受け取った後で動画変換の初期設定を行って、Lambda Layer FFProbeを使用してビデオファイルのサイズ情報を取得した上でMediaConvertでジョブの作成を起動します。
- MediaConvertはジョブ情報を基にして動画変換処理を実行します。処理が成功した場合、結果はS3フォルダー/video-convert/にアップロードされます。
- Event Bridgeは「Completed」または「Error」のイベントを監視し、イベントが発生するとAWS SNSサービスを介してユーザーに通知のメールを送信します。
- ユーザーはCloudFront経由でS3フォルダー/video-convert/内の変換した動画ファイルを確認できます。
AWS開発開始
コマンド実行:amplify init 名前: env AWSプロフィールを入力する 他のパラメーターはデフォルトにしても結構です。
コマンド実行:amplify add function 初期作成:Lambda 関数(serverless function) 機能名:videoConvertを入力する 開発言語:nodeJS Do you want to configure advanced settings > No 
mediaconvertのため、下記の2URLが必要です。
- Url MediaConvert endpoint(Endpoint)
- Default queue(ARN)
MediaConvertのURLを取得方法 AWS Console→リージョンを選択→MediaConvert→メニュー→アカウントを選択すると下記のイメージ画像が表示される。 Endpoint:https://xxxxxxxx.mediaconvert.ap-southeast-1.amazonaws.com
Default queueのURLを取得方法 AWS Console→リージョンを選択→MediaConvert→Queue→Defaultを押下すると下記の画面が表示されます。 ARN: arn:aws:mediaconvert:ap-southeast-1:573580132305:queues/Default 
S3 バケット内に動画の保存場所を作成
AWS Console→リージョンを選択→S3→Create bucket→Bucket name 名前:onetech-demo-mediaconvert
S3バケットへのアクセス権限とオブジェクトへのアクセス権限の設定を行います。 Bucket→onetech-demo-mediaconvert→Permissions→Bock public access→Edit→Uncheck Block all public access
Bucket → onetech-demo-mediaconvert → Permissions → Object Ownership → Edit
Event BridgeはS3バケットへのアクセス許可設定 onetech-demo-mediaconvertバケットをクリックする。 下記の画面に沿って設定を行う。 Properties → Event notifications → Amazon EventBridge → Edit → Turn ON → Save Changes 
node JSを使って開発プログラム開始
node JSライブラリをインストールする。
