エアキャラバン 配信班の裏側

#AWS

水曜どうでしょうエアキャラバンin 赤平2020

10/3(土)・4(日)の2日間で開催された「水曜どうでしょうエアキャラバンin 赤平2020」のオンラインイベント会場として、動画を見ながらお買い物ができるライブコマースシステムの開発を行いました。

本記事では配信に焦点を当て、赤平の映像をどのように視聴者まで届けていたか、紹介します。

全体の概要はこちらの記事を参照ください。

配信の全体像

sodane.001.jpeg

構成図は上記の通りです。

Elemental Linkの実物はこちら。電源・LAN・SDI/HDMI など、何も接続していない状態です。

Elemental Linkの購入方法や注意点、設定方法などの記事を後日Up予定です。

IMG_7114.jpg

水曜どうでしょうハウス in 赤平

・マイク&カメラを使用して撮影した映像音声を中継車へ。

・中継車でカメラの色合いや音声の調整、ならびにスイッチング(どの映像や音声を出力するか選択)。

・スイッチングされた映像音声をLiveU を使って、HTB本社まで伝送。 *LiveU:キャリアの回線を束ねて送出することで、広帯域で映像を送出できる。

どうでしょうハウスでの配信事項を箇条書きしました。

LiveUを使用したのは、光回線を引けなかったためです。ハウスが山の中に建てられているため、光回線が近隣まで整備されてませんでした。。仕方ない。

途中豪雨の影響などで、帯域が細くなってしまうこともありましたが、配信開始から終了まで、回線が途切れることはありませんでした!

HTB本社

・LiveU受信機にて受信した映像信号をサブ(副調整室)へ送る

・サブからの信号をElemental Linkへ繋ぎ、クラウドへ送出

サブを経由した理由は、赤平の映像⇆トリキリ(静止画像)のスイッチングや、LiveUの帯域を監視するためです。

赤平の映像⇆トリキリは、①中継車 ②サブ ③MediaLive にてスイッチング可能でしたが、主に②と③でスイッチングを行いました。現地組はそれどころじゃなかった模様…。

MediaLiveのスイッチング方法については、classmethod 清水さんの記事を参考にさせていただきました!

AWS

・MediaLiveのインプットにElemental Linkを指定 →すっごく簡単!

・MediaLiveの出力ストリームは、1280×720_30p (4Mbps)、854×480_30p (2Mbps)、640×360_30p (1Mbps)、426_240_30p (700kbps) の4本立てとしました。なお各音声ビットレートは128kbpsです。

・アーカイブ用にMedia Packageとは別に、S3にもMediaLiveから映像を送出。

 今回の配信はDRMをかけていたため、MediaPackageにてharvest機能が使用できない点、注意が必要です。

・MediaPackageにてAPPLE-HLSマニュフェストファイル群と(.m3u8 + .ts)、DASH-ISOマニュフェストファイル群(.mpd + .mp4)を生成。

 また、MediaPackageでネクストスケープ社の「Multi DRM Kit」を用いてDRMを用いたコンテンツ保護を実施。

 DRMはデジタル著作権管理のことで、第三者によるデジタルコンテンツの複製や再利用を防ぎます。

 具体的にDRMシステムは、GoogleのWidevine、AppleのFairPlay、MicrosoftのPlayReady の3つを使用しました。

 どの端末やブラウザが対応しているかは、こちらのページに紹介されていたので、興味あれば参照ください。 

・CDNとして、CloudFrontを使用。CDNを使用しないと各ユーザーがMediaPackageのオリジンに直接リクエストしてしまいます。

 その結果、MediaPackageが大量のリクエストに処理が追いつかず落ちてしまい、配信が途切れてしまう恐れがあります。

 *MediaPackageのリクエスト数の上限は200/sとされており、こちらはAWSのサービス上限緩和申請対象外。

ポイントとしては、MediaLiveからS3へアーカイブする際、HLSを選択することです!(画像参照)

アーカイブ用なので、Archiveにチェックを入れたくなりますが、、Archiveだとマニュフェストファイルが作成されません。

HLSを選択した上で宛先のURLをs3ssl://AAAAAA/BBBBB/CCCCC のように指定すると、s3へのアーカイブが可能です。

*Archiveを選択して、マニュフェストファイルを自分で作成することも可能ですが、とても面倒なので避けた方が無難です。

マニュフェストファイルやセグメント、CDNなどなど、配信に関する用語をYouTubeに絡めて解説する記事を後日また書きたいと思います!

sukusyo.png

視聴ページ

・プレイヤーにはTHEOPlayerを使用。再生スタート時にプレイヤーが指定したURLに飛んでいき、DRMのキーを取得することで、再生が可能となっている。世の中には沢山プレイヤーがありますが、DRMに対応しているプレイヤーかつ、費用面からTHEOPlayerを採用しました。

・各ユーザーの端末が何のソフトウェアを使用しているか識別し、APPLE HLSまたはMPEG-DASH、どちらかをCloudFrontへデータのリクエストし、配信のマニュフェストファイルとセグメントファイルを受けとり、プレイヤーにて再生。例えば、Iphoneのsafariで再生するとAPPLE HLSを、WindowsPCのChormeで再生するとMPEG-DASHのファイルをリクエストしています。

下の写真はDRMをかけた映像を再生中に、スマフォでスクリーンショットを撮った写真です。

写真は真っ暗となってしまいます!同様に、OBSなどで配信画面をキャプチャーしようとしても、真っ暗となり、DRMでコンテンツ保護されていることがわかります。

IMG_7063.jpeg

上限緩和申請に関して

本配信にあたってAWSサービスの上限緩和申請を行いました。その際AWSの弊社担当である川原さんには大変お世話になりました!我々の無茶な相談に対して、ご対応いただきました。本当にありがとうございました!

また、Membersアカウントで日頃からお世話になっているクラスメソッドさんにも、上限緩和申請やアカウント移行など、ご協力いただきました。ありがとうございました!

はじめに、AWSではアカウント毎に、サービスのデフォルトのクォータがあります。

今回の配信に関して言えば、Lambda関数のリージョンごとの同時実行数は1000、CloudFrontのディストリビューションごとのデータ転送レートは150Gbpsデフォルトで定められていました。

DRMで使用したLambda関数の実効時間を見ると、1処理あたりおおよそ0.3sの処理時間を要するとログの情報からわかっていたので、1000/0.3 = 3333人が同時に再生ボタンを押して、DRMのLambdaを起動できることは分かっていました。

ここで、Lambdaのクォータ値は1関数ごとではなく、1リージョンあたりです。DRMの他にも、TwitterのTweet表示やShopifyのPickup機能の実装でもLambdaを用いるため、デフォルト値の1000で充分とは考えにくく、10000とした緩和申請を進めていました。しかし、去年のどうでしょう祭でLambdaの同時実行数の上限を10,000に引き上げていたのですが、そのまま上限緩和され続けているようでした。classmethodさんに問い合わせたところ、「上限緩和後に元の数値に戻る事象は、今までの事例から発生したことはございません。」とのことでした。

また、配信では、最高品質の平均ビットレートをCBR( Constant-Bit-Rate ) の4Mbpsとしました。仮に常に4Mbpsで配信が行われたとすると、1Gb = 1024Mbなので、(150 * 1024) / 4 = 38,400人まで視聴できます。38,400という数字で足りるのか?不安に思い、こちらのサービスについても、緩和申請を行いました。なお、こちらはイベント実施期間の10/3〜10/4間のみの緩和となっていました。

緩和申請に関しては、classmethodさんがAWSとの間に入っていただき、手厚いサポートをいただけるため、スムーズに行うことができました!

おわりに

ざっくりとした記事になってしまいました。すみません。。時間あるときにもっと細かい事項も記事化したいです。

エアキャラバンの反省点としては、スポーツを中継するといったものではなく、配信は動きが少ないものだったので、1280_720 30pの4Mbpsではなく、3Mbpsでも良かったのかな…と。そうすればAWSの使用料金の大部分はCloudFrontの使用料金でしたので、配信費用を3/4に抑えることが出来た、と配信終わってから少し後悔。それでも、クラスメソッドさんのCDN割引プランによって、大きく配信費用を抑えることができました。東京リージョンでは約50%の割引率…半額ですよ、恐ろしい。

配信そのものが途切れることなく、安定してコンテンツを配信できたので、終わり良ければ全てよしでした!

以上、オープンレポートでした

技術的なことで調べたり勉強したことを残していきます。日報をブログでやってみています
きっとゆるめに脱線することもあると思いますが、ゆるめに見守っていただければと思います。


参考にさせてもらったみんなのアウトプットに最大限のリスペクトと感謝を。
そして、この記事が誰かの役に立つことを願って

1

この記事を書いたのは

zaki

最近AWSの勉強を始めました。

合わせて読みたい