AQ Tech Blog

AWS Media Servicesを利用した動画配信サービスの構築

作成者: shoma.ebe|2024年09月02日
 

はじめに

本記事ではAWS Elemental MediaLive、AWS Elemental MediaPackageを用いて、動画配信サービスを構築します。

構成

動画配信サービスの構成を以下に記載します。

各項目の役割については、以下の通りです。

  • OBS Studio、XSplitなど

    各クライアントからAWS Elemental MediaLiveへ映像を配信
      各クライアントから動画を配信するために必要な配信ソフトです。
    今回はOBS Studioを利用しますが、AWS Elemental Linkという、AWSが有償で提供している配信用ハードウェアを用いることも可能です。
     

    AWS Elemental Link

  • AWS Elemental MediaLive

    ブロードキャスト配信用のビデオ入力をライブ出力に変換
      各クライアントから配信された動画のエンコードを行います。
    またAWS Elemental MediaPackageへの出力を行います。
     
  • AWS Elemental MediaPackage

    ジャストインタイム形式の変換を使用した動画配信
      AWS Elemental MediaLiveから出力された動画のパッケージングを行います。
    またAmazon CloudFrontのオリジンとしての役割も担います。
     

ハンズオン

AWS上に環境を構築していきます。
以下の手順で作業を進めていきます。

  • MediaPackageチャネルの作成
  • MediaPackageエンドポイントの作成
  • MediaLive入力の作成
  • MediaLiveチャネルの作成
  • OBSの設定
  • 動画配信確認
 

MediaPackageチャネルの作成

AWSマネジメントコンソールから「MediaPackage」を検索し、「新しいチャネルの作成」を選択します。



「ID」と「説明」に適切な値を入力し、「作成」を選択します。
今回は設定しませんが、必要に応じて、アクセスログ記録の設定をしましょう。

MediaPackageエンドポイントの作成

チャネルが作成できましたので、続いてエンドポイントの設定を行います。
「エンドポイントの管理」を選択します。

「ID」「説明」に適切な値を入力し、「保存」を選択します。
その他の項目は、今回は設定しませんが、必要に応じて設定してください。

以下の通り、オリジンエンドポイントが作成されました。

MediaLive入力の作成

AWSマネジメントコンソールから「MediaLive」を検索し、左のメニュータブから「入力」を選択、「入力の作成」を選択します。

「入力名」に任意の値を入力し、「入力タイプ」はOBSからRTMPで配信をするため、RTMP(プッシュ)を指定します。
「入力セキュリティグループ」に動画配信元のIPアドレスを入力し、「入力セキュリティグループの作成」を選択します。
「入力の送信先」では「アプリケーション名」と「アプリケーションインスタンス」に任意の値を入力しますが、OBSで配信する際のキーとなりますので、外部公開しないようにご注意ください。
入力が完了しましたら、「入力の作成」を選択します。

以下の通り、入力が作成されました。
URLは後にOBSで配信先として設定しますので、控えておいてください。

MediaLiveチャネルの作成

左のメニュータブから「チャネル」を選択、「チャネルの作成」を選択します。

「チャネルと入力の詳細」を選択し、「チャネル名」に任意の値を入力、「IAMロール」はテンプレートからロールを作成、「テンプレート」としてHTTP live streaming(MediaPackage)を選択します。

入力アタッチメントの「追加」を選択し、先ほど作成したMediaLive入力を「入力」で選択、「確認」を選択します。

「テンプレート」としてHTTP live streaming(MediaPackage)を選択したため、出力グループが自動的に追加されています。
「MediaPackage-1」を選択し、「MediaPackageチャネルID」に先ほど作成したMediaPackageのチャネルを入力、「名前」は任意の値を入力します。

テンプレートから作成したため、出力が大量に作成されていますが、今回は1280_720を使用するため、その他の出力は削除します。

今回は変更しませんが、「出力1:1280_720_1」を選択すると、動画のレートやフレームレートなどの項目を設定したり、オーディオのコーデックを変更することが可能です。

必要な項目を設定し終えたら、「チャネルの作成」を選択します。

これでチャネルの作成は完了です。
「開始」を選択すると、配信の受け付け状態になりますが、実行状態がRunningの状態だと、高コストとなりますので、配信時以外は停止することを推奨します。

OBSの設定

「設定」、「配信」から「サービス」でカスタムを選択し、「サーバー」にはMediaLive入力の作成時に控えたURLのアプリケーション名までを入力し、「ストリームキー」にはアプリケーションインスタンスを入力します。
例)URLが「rtmp://XXX.XXX.XXX.XXX/live/testkey」だった場合
   サーバー:rtmp://XXX.XXX.XXX.XXX/live
   ストリームキー:testkey

動画配信確認

以上で設定は完了しましたので、MediaLiveを開始し、配信ができているかを確認します。
MediaLiveで配信を開始した後、チャンネルの状態がRunningになったことを確認します。

Runningになった後、OBSで配信開始を選択すると、通信が疎通していることがわかります。

実際の配信状況を確認する際はMediaPackageのチャネルを選択し、エンドポイントのプレビューを選択すると、外部サイト(hls.js demo)で配信の内容を確認することができます。

hls.js demo

以上でAWS Media Servicesを利用した動画配信サービスの構築は終了となります。