Amazon Web Services ブログ

Amazon IVSとMediaConvertでのポストプロセスワークフロー

Amazon Interactive Video Service(Amazon IVS)ではAmazon Simple Storage Service(Amazon S3)にライブストリームを録画できるようになりました。これにより、過去のライブストリームをAmazon S3に保存し、後で再利用することができます。これをAWS Elemental MediaConvert HLSインジェストと組み合わせることで、入力クリッピング、スティッチング、SCTE-35挿入、画像オーバーレイなどの放送グレードの機能を使用して、再生ストリームのリブランディング、収益化、再パッケージ化を行うことができます。

この記事ではAmazon IVS の自動録画と MediaConvert へのインジェストを自動化するためのワークフローの作成方法を紹介します。Amazon IVS アセットの最初と最後にリーダーとバンパーを縫い付け、MediaConvert を使ってアセットに画像(バグと呼ばれることもあります)をオーバーレイします。MediaConvert を使用して、ABR(Automated Adaptive Bitrate) DASH 出力と SD プロキシ MP4 ファイルを作成します。

前提条件:

Amazon IVSのセットアップ:

収録設定:

まず収録設定を行います。後で作成するチャンネルのためにこの設定を保存しておくことができます。

  1. AWS Management ConsoleでAmazon IVSを開く
  2. ナビゲーションパネルでRecording configurationsからCreate recording configurationを参照
    –   新規Amazon S3バケットを作成するか、既存のものを利用するかを選択
  3. Create configurationを選択
Amazon IVS Setup Image 1-1

Amazon IVSセットアップ1-1

チャンネル設定:

次にAmazon IVSチャンネルを作成し、エンドポイントを作成します。また、前のセクションで記載したように作成した収録設定を選択することも可能です。

  1. AWS Management ConsoleでAmazon IVSを開く
  2. ナビゲーションパネルでChannelsからCreate channelを選択。
    –   チャンネル設定ではDefault configurationを選択してください。

    Amazon IVS Setup Image 1-2

    Amazon IVSセットアップ1-2

  3. ストリームの記録と保存でAuto-record to S3 オプションを選択
    –  Recording configurationで設定したコンフィグを選択します。

    Amazon IVS Image 1-3

    Amazon IVSセットアップ1-3

  4. Create channelをクリック

チャンネルを作成後、Ingest Server、Stream Key、チャンネルARNを書き留めてください。この後のワークフロー設定で利用します。

MediaConvertの設定:

ジョブテンプレート設定:

ジョブの作成プロセスを簡略化するために、ジョブテンプレートを使用します。今回のセットアップでは、MediaConvert の自動 ABR 機能を使用して DASH 出力を作成し、SD プロキシ MP4 出力も作成します。作成したテンプレートは GitHub でご覧いただけます。

ジョブテンプレートの詳細はこちらのドキュメントを参照ください。

  1. AWS Elemental MediaConvert in the AWS Management Consoleを開く
  2. ナビゲーションパネルでジョブテンプレートを選択
  3. インポートテンプレートボタンまたは新規作成で、GitHubからサンプルのジョブテンプレートをインポート
  4. ジョブテンプレートへ名前を付ける
    –   名前を書き留めてください。この後利用します。
  5. 作成を選択

Amazon EventBridgeとAWS Lambdaの設定:

Amazon EventBridgeとAWS Lambdaで、Amazon IVSとMediaConvertをフックします。Amazon IVS は EventBridge へのイベント送信をサポートしています。その後、Lambda 関数を起動して Amazon IVS で記録されたアセットを取得し、作成したジョブテンプレートを使用してジョブを作成し、バンパーやイメージオーバーレイをステッチするための追加設定を行います。ここで重要なのは、Amazon IVS が作成した完全な HLS マニフェストを MediaConvert の入力として使用することです。MediaConvert は、マニフェストの中で最も高い帯域幅タグを持つバリアントマニフェストを使用します。

AWS Lambda – functionの作成とパーミッション設定

  1. AWS Management ConsoleでAWS Lambdaを開く
  2. ナビゲーションパネルでFunctionsからCreate functionを選択
  3. Author from scratchを選択
  4. Basic Informationで以下を入力
    –   関数に名前をつける
    –   Runtime libraryからPython 3-8を選択
    –   Execution roleでCreate a new role with basic Lambda permissionsを選択
  5. Create functionを選択
  6. Lambda functionを作成後Configurationタブを選択
  7. 左側のナビゲーションからPermissionsを選択
  8. Execution roleでRole nameを選択するとIAM コンソールが開きます
  9. PermissionsタブでAttach policyをクリック
  10. AWSElementalMediaConvertFullAccess policyを検索しチェックボックスを選択
    – 注:これによりLambda 関数は MediaConvert のすべての API にアクセスし、任意の IAM ロールを MediaConvert に渡すことができます。独自のポリシーを作成して、このロールを特定の API 呼び出しに対してのみ実行したり、特定の IAM ロールのみを渡したりするように制限することができます。
  11. AmazonS3ReadOnlyAccess policyを選択しチェックボックスを選択
    – 注:これにより、Lambda関数はそのアカウントのすべてのバケットのすべてのオブジェクトにアクセスできるようになります。独自のポリシーを作成して、このロールが特定のバケットへのアクセスのみを許可するように制限することができます。
  12. Attach policyを選択

AWS Lambda – コード指定

  1. AWS ManagementコンソールからAWS Lambdaを開く
  2. ナビゲーションバーで Functionsを選択
  3. 前のセクションで作成したFunctionを選択
  4. Code Source EditorでGitHub codeをコピー&ペースト
  5. 次の変数を検索し、ご利用のアカウント情報とワークフロー情報に置き換える
    1. mediaconvert_clientはご利用のアカウントでのMediaConvert API endpointを指定
    2. role_arn, はMediaConvert ジョブをアサインしたrole ARNを指定
    3. preroll_pathにはご指定のプリロールファイルを保存したAmazon S3パスを指定
    4. postroll_pathにはご指定のポストロールファイルを保存したAmazon S3パスを指定
    5. previously_recorded_imageにはご指定のオーバーレイファイルを保存したAmazon S3パスを指定
    6. job_templateではMediaConvertの設定セクションで作成したジョブテンプレートを指定

Amazon EventBridge

  1. AWS Managementコンソールから Amazon CloudWatch を開く
  2. ナビゲーションバーイベントでRulesをクリック
  3. Create ruleを選択
  4. Event SourceでInteractive Video Service (IVS)をService Nameとして選択
  5. Event Pattern PreviewでEdit linkを選択
  6. 次のJSONを利用
    –   channel ARNを設定したものに置き換えてください

    {
       "source":[
          "aws.ivs"
       ],
       "resources":[
          "<ARN from setting up channel configuration>"
       ],
       "detail":{
          "recording_status":[
             "Recording End"
          ]
       }
    }

ワークフローをつなげる:

Amazon IVSへストリームを送信

すべてのパーツが揃ったら、Amazon IVSにストリームを送信する必要があります。ハウツーガイドについては、ドキュメント他のブログ記事をチェックしてください。前述のセットでAmazon IVSから提供されたIngestサーバーとStream Keyが必要です。

ストリームが停止すると自動アーカイブ機能の処理が始まります。Amazon IVSが録画終了メッセージをEventBridgeに送信するとこれがLambda関数のトリガーとなってMediaConvertジョブが作成されます。

ソリューションの停止:

ソリューションを停止するには、Amazon CloudWatchに作成されたEventBridgeルールを削除または無効化してください。

ソリューションの削除:

次のドキュメントを参照してこのソリューションで利用されているAWSリソースを削除してください。

注: Amazon S3に保存されている全てのファイルを削除してください。

まとめ

このソリューションでは、Amazon Interactive Video ServiceとAWS Elemental MediaConvertの間でサーバーレスのワークフローを構成する方法を紹介しました。これは、お客様が独自のワークフローを拡張しカスタマイズするための出発点に過ぎません。

AWSは、Direct-to-Consumer (D2C)とストリーミングのための最も目的に合ったサービスを提供し、インターネット上でライブおよびオンデマンドのメディアを確実に配信し、収益化し、サポートし、比類のない体験をあらゆる場所のスクリーンに届けるのを支援します。詳細は https://thinkwithwp.com/media/direct-to-consumer-d2c-streaming/ をご覧ください。

ご質問やご意見がある場合や、他のコミュニティメンバーとのディスカッションに参加したい場合は、AWS Developer Forums: Media Servicesをご覧ください。

 


参考リンク

AWS Media Services
AWS Media & Entertainment Blog (日本語)
AWS Media & Entertainment Blog (英語)

AWSのメディアチームの問い合わせ先: awsmedia@amazon.co.jp
※ 毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。

翻訳は BD山口とSA斎藤が担当しました。原文はこちらをご覧ください。