こんにちは、矢野(喬)です。
需要が高いのかライブ配信関連の更新をよく目にするようになりましたね。その時流に乗ろうと思いAWSを使ったライブ配信をブログにしながら知見を深めていこうという目論見です。
先ずはAWS Elemental MediaLiveとAWS Elemental MediaPackageを用いた配信環境を作ってみました。
構成図
構成リソース概要
構成図中に出てくるリソースはどんな事ができるサービスか手短にまとめてみます。
Open Broadcaster Software ( 以降OBS )
- 無料で利用できる配信ソフト。手軽に配信するには十分過ぎるほど機能が充実している
- Open Broadcaster Software®️ | OBS よりダウンロード可能
AWS Elemental MediaLive ( 以降MediaLive )
- あらゆる映像データをライブ配信として利用できるよう処理し繋げることのできるサービス
- 冗長性や変換、複数ソースの受け取り、複数リソースへの配信などライブ配信で必要な機能が揃っている
- AWS Elemental MediaLive(ライブビデオコンテンツを変換)| AWS
AWS Elemental MediaPackage ( 以降MediaPackage )
- インターネット配信に向けて映像データを変換、保護、負荷に応じた拡大縮小を行ってくれるパッケージングサービス
- AWS Elemental MediaPackage(動画の発信とパッケージ化)| AWS
手順概要と構築順
OBS
- 本ブログではMediaLiveとの連携部分に絞ってご紹介します
- 画面構成や映像、音声の詳細設定は省略いたします
MediaLive
- OBSからの映像を受け取るInput設定
- MediaPackageに映像を繋ぐChannel設定
MediaPackage
- MediaLiveからの映像を受け取り、視聴可能なエンドポイントの作成
構築順
0.OBS配信設定
1.MediaPackage設定
2.MediaLive設定
3.OBSを含む配信設定
4.視聴確認
手順詳細
0.OBS配信設定
前述の通り省略させていただきます。映像や音声を組み合わせて配信画面を構成してください
解像度は 1280 x 720 として進めます
1.MediaPackage設定
1-1.AWS Elemental MediaPackageに移動し、「Create a new channel」をクリック
1-2.Channel details → ID に任意のIDを入力 (本記事ではBasic-Package)
1-3.作成されたChannel ID から、Endpoints → 「Add Endpoints」をクリック
1-4.ID に任意のIDを入力 (本記事ではBasic-Endpoint)
1-5.Packager settings → Type から 「CMAF]を選択、HLS manifest → ID から任意のIDを入力 (本記事ではBasic-Endpoint)
1-6.Endpointの項目入力が終わったら「Save」をクリックして作成
1-7.Endpointが作成されたことを確認
2.MediaLive設定
2-1.AWS Elemental MediaLiveに移動し、「チャネルの作成」をクリック
2-2.入力アタッチメント → 「追加」→ 「入力の作成」をクリック(アタッチできる入力が無い場合はここで入力を作成)
2-3.入力名に任意の名前を入力し (本記事ではBasic-input)、入力タイプを「RTMP(プッシュ)」をクリック
2-4.Network mode は外からのアクセスなので「Pubic」、入力セキュリティグループは未作成の場合「作成」から自身のグローバルIP等を入力し、「入力セキュリティグループの作成」をクリック
作成されたら「既存の使用」が選択され、作成したセキュリティグループが表示される
2-5.入力の送信先から、input class → 「SINGLE_INPUT」を選択。送信先Aの「アプリケーション名とインスタンス」に任意の値を入力(本記事ではlive、basic)し「作成」をクリック
2-6.アタッチされた「入力」を確認し、「確認」をクリック
2-7.チャネル作成の元画面に戻ったら、チャネル名に任意の値を入力(本記事ではBasic-Live)。MediaLive用IAMロールが未作成の場合は「IAMロールの作成」をクリック、「既存のロールの使用」にチェックが入り、「MediaLiveAccessRole」が選択されていることを確認
2-8.チャネルテンプレート → テンプレート から「HTTP live streaming (MediaPackage)」を選択。選択すると自動的に幾つかの項目が入力されます
2-9.Channel classを「SINGLE_PIPELINE」に変更
2-10.テンプレートを選んだことで、画面左の出力グループにMediaPackageのグループが追加されていることを確認しクリック
2-11.MediaPackage destination → MediaPackage channel IDに先程作成したIDを入力(本記事ではBasic-Package)。MediaPackage設定の名前には任意の値を入力(本記事ではBasic-Package)
2-12.MediaPackage出力から、「出力2:1280_720_1」以外を「×」ボタンで削除
2-13.「チャネルの作成」をクリックし作成。チャネルが作成されたことを確認
↓
3.OBSを含む配信設定
3-1.MediaLiveで作成したチャネルから「開始」をクリック。チャネルの状態が「Running」になるまで待機
3-2.OBSから「設定」→「配信」→ サービスを「カスタム」、サーバーには 2-6.にも表示されている、MediaLiveの入力エンドポイントURLのアプリケーションを入力(本記事ではrtmp://~/live)、ストリームキーに入力エンドポイントURLのインスタンス名を入力(本記事ではbasic)
3-3.OBSの「配信」をクリック(配信が問題なく開始されるとOBS画面下のLIVEの時計が動く)
4.視聴確認
4-1.MediaPackageのエンドポイントの「Preview」でライブ映像がプレビュー可能であることを確認。「URL」記載の.~m3u8が再生できることを確認(QRコードを表示させ、iPhoneのSafariで再生も可能)
料金
MediaLive、MediaPackageの料金計算は少々複雑であり、CloudFrontを含めた配信が望ましい事もあるので大雑把な数字を申します。
条件として今回の構成で以下の場合200円に届かない程度というイメージです(実績値)
- 数十人程度の視聴者
- 1時間の配信
- シングル入力+シングル出力
詳細は公式ページをご参照ください。)
料金 - AWS Elemental MediaLive | AWS)
料金 - AWS Elemental MediaPackage | AWS
おわりに
AWSサービスを使った基本的なライブ配信構成環境構築のご紹介となります。こうしてまとめてみますと、最低限の設定ですがやるべきことが多いですね。
ここから冗長性を持たせたり、複数解像度で配信したり、セキュアな構成を追加していくことになりますが、本記事がその第一歩目になれば幸いです。
次回は最低限の構成をAmazon Interactive Video Serviceを使って構築する記事を予定しています。
ありがとうございました。