本記事ではAWS Elemental MediaLive、AWS Elemental MediaPackageを用いて、動画配信サービスを構築します。
動画配信サービスの構成を以下に記載します。
各項目の役割については、以下の通りです。
OBS Studio、XSplitなど
各クライアントから動画を配信するために必要な配信ソフトです。
今回はOBS Studioを利用しますが、AWS Elemental Linkという、AWSが有償で提供している配信用ハードウェアを用いることも可能です。
AWS Elemental MediaLive
各クライアントから配信された動画のエンコードを行います。
またAWS Elemental MediaPackageへの出力を行います。
AWS Elemental MediaPackage
AWS Elemental MediaLiveから出力された動画のパッケージングを行います。
またAmazon CloudFrontのオリジンとしての役割も担います。
AWS上に環境を構築していきます。
以下の手順で作業を進めていきます。
AWSマネジメントコンソールから「MediaPackage」を検索し、「新しいチャネルの作成」を選択します。
「ID」と「説明」に適切な値を入力し、「作成」を選択します。
今回は設定しませんが、必要に応じて、アクセスログ記録の設定をしましょう。
チャネルが作成できましたので、続いてエンドポイントの設定を行います。
「エンドポイントの管理」を選択します。
「ID」「説明」に適切な値を入力し、「保存」を選択します。
その他の項目は、今回は設定しませんが、必要に応じて設定してください。
以下の通り、オリジンエンドポイントが作成されました。
AWSマネジメントコンソールから「MediaLive」を検索し、左のメニュータブから「入力」を選択、「入力の作成」を選択します。
「入力名」に任意の値を入力し、「入力タイプ」はOBSからRTMPで配信をするため、RTMP(プッシュ)を指定します。
「入力セキュリティグループ」に動画配信元のIPアドレスを入力し、「入力セキュリティグループの作成」を選択します。
「入力の送信先」では「アプリケーション名」と「アプリケーションインスタンス」に任意の値を入力しますが、OBSで配信する際のキーとなりますので、外部公開しないようにご注意ください。
入力が完了しましたら、「入力の作成」を選択します。
以下の通り、入力が作成されました。
URLは後にOBSで配信先として設定しますので、控えておいてください。
左のメニュータブから「チャネル」を選択、「チャネルの作成」を選択します。
「チャネルと入力の詳細」を選択し、「チャネル名」に任意の値を入力、「IAMロール」はテンプレートからロールを作成、「テンプレート」としてHTTP live streaming(MediaPackage)を選択します。
入力アタッチメントの「追加」を選択し、先ほど作成したMediaLive入力を「入力」で選択、「確認」を選択します。
「テンプレート」としてHTTP live streaming(MediaPackage)を選択したため、出力グループが自動的に追加されています。
「MediaPackage-1」を選択し、「MediaPackageチャネルID」に先ほど作成したMediaPackageのチャネルを入力、「名前」は任意の値を入力します。
テンプレートから作成したため、出力が大量に作成されていますが、今回は1280_720を使用するため、その他の出力は削除します。
今回は変更しませんが、「出力1:1280_720_1」を選択すると、動画のレートやフレームレートなどの項目を設定したり、オーディオのコーデックを変更することが可能です。
必要な項目を設定し終えたら、「チャネルの作成」を選択します。
これでチャネルの作成は完了です。
「開始」を選択すると、配信の受け付け状態になりますが、実行状態がRunningの状態だと、高コストとなりますので、配信時以外は停止することを推奨します。
「設定」、「配信」から「サービス」でカスタムを選択し、「サーバー」には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)で配信の内容を確認することができます。
以上でAWS Media Servicesを利用した動画配信サービスの構築は終了となります。