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

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

目次

    はじめに

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

    構成

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

    202409_AWS Media Service_01

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

    • 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」を検索し、「新しいチャネルの作成」を選択します。

    202409_AWS Media Service_02

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

    202409_AWS Media Service_03202409_AWS Media Service_04

    MediaPackageエンドポイントの作成

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

    202409_AWS Media Service_05

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

    202409_AWS Media Service_06202409_AWS Media Service_07202409_AWS Media Service_08

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

    202409_AWS Media Service_09

    MediaLive入力の作成

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

    202409_AWS Media Service_10

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

    202409_AWS Media Service_11202409_AWS Media Service_12202409_AWS Media Service_13

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

    202409_AWS Media Service_14

    MediaLiveチャネルの作成

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

    202409_AWS Media Service_15

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

    202409_AWS Media Service_16202409_AWS Media Service_17202409_AWS Media Service_18202409_AWS Media Service_19

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

    202409_AWS Media Service_20

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

    202409_AWS Media Service_21

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

    202409_AWS Media Service_22

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

    202409_AWS Media Service_23

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

    202409_AWS Media Service_24

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

    202409_AWS Media Service_25

    OBSの設定

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

    202409_AWS Media Service_26

    動画配信確認

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

    202409_AWS Media Service_27

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

    202409_AWS Media Service_28

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

    hls.js demo

    202409_AWS Media Service_29202409_AWS Media Service_30

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

    アジアクエスト株式会社では一緒に働いていただける方を募集しています。
    興味のある方は以下のURLを御覧ください。