[初心者向け] AWS MediaServices の役割をライブ配信ワークフローと照らし合わせながら理解する
こんにちは、大前です。
最近はコロナの影響で、テレワークやらライブ配信やらの話題をよく聞きますね。
この機会に、ライブ配信の仕組みを理解しておきたいという方もいるのではないでしょうか。(こじつけ)
そこで、今回は AWS MediaServices についての入門記事的なものを書いていきたいと思います。
具体的に何を書くかという所で、「そもそもAWS MediaServices 色々あるらしいけど、違いがわからん」状態の方も多いのではないでしょうか。(自分もそうでした)
そこで、細かいサービス毎の機能についての話は置いておき、AWS MediaServices はそれぞれどういう時に出てくるサービスなのかについて書いていければと思います。
今回登場する主な AWS MediaServices は以下です。
- AWS Elemental MediaConnect
- AWS Elemental MediaLive
- AWS Elemental MediaPackage
- AWS Elemental MediaStore
この記事で「AWS MediaServices の使い所が理解できた!」方が一人でも増える様な内容を目指していければと思います。
AWS MediaServices 概要
Media 六兄弟
AWS MediaServices は、主に AWS 上で動画配信を行うために使用されるサービスです。
サービスとしては、以下の6つが存在します。巷では Media 六兄弟とか呼ばれていたりとか、いなかったりとか。
- AWS Elemental MediaConnect
- 信頼性と柔軟性が高く、安全なライブビデオの転送
- AWSElemental MediaLive
- ブロードキャストとマルチスクリーンビデオ配信のために入力をライブ出力に変換する
- AWS Elemental MediaPackage
- ライブおよびオンデマンドのビデオコンテンツの作成とパッケージ化
- AWS Elemental MediaStore
- ライブやオンデマンドのメディアワークフロー向けにビデオアセットを作成および保存する
- AWS Elemental MediaTailor
- サーバー側の広告挿入を使って、ビデオコンテンツをパーソナライズし、収益化する
- AWS Elemental MediaConvert
- オンデマンドブロードキャストとマルチスクリーン配信のためのファイルベースのビデオアセットを準備する
上記サービスは、全て東京リージョンで使用することができますので、気になった方は触ってみてください。
OTT(Over-The-Top)
AWS MediaServices の役割を理解するためには、まず動画配信のフローを理解する必要があります。
ここで述べた「動画配信」とは、"インターネット回線を通じて、動画コンテンツ等を提供する事" を指します。YouTube や Netflix といえばイメージしやすいでしょうか。
上記の様に、通信回線ではなく、インターネット経由で動画コンテンツ等のサービスを提供する企業の事を OTT(Over-The-Top)と呼んだりします。
OTT はメディア系でよく見かけるワードですので、頭の片隅に入れておくと良いかもしれません。
動画配信ワークフローとは
極端な見方をすると、動画配信の根本的な目的は動画コンテンツをユーザに届ける事です。
ですが、それを実現するためには色々な仕組みが必要です。
例えば、撮影された生の動画ファイルはサイズが膨大であるため、それをユーザに届けるにはファイルサイズを適切に小さくする必要があります。
これをエンコードと呼び、圧縮する際のアルゴリズムの事をコーデックと呼びます。
よく目にするコーデックとしては H.264 などでしょうか。
また、ユーザがコンテンツを再生する環境は様々であるため、各環境に対応したコンテンツを生成する必要があります。
これをパッケージングと呼ぶことが多いです。
パッケージングには、各環境に対応する為のコンテンツ生成だけではなく、コンテンツを保護する為にDRMの仕組みを入れたり、広告のメタデータを埋め込むなど、様々な役割が内包されます。
ユーザからのリクエストに素早く応える為に、コンテンツを保管しておく場所も必要になってきます。これをオリジンと呼びます。
この様に、ユーザに動画コンテンツを届ける為に必要な様々な仕組みが組み合わさったものが、動画配信のワークフローとなります。
AWS MediaServices は、上記における各仕組みを AWS 上で提供し、動画配信ワークフローを実現するためのサービスとなります。
では、具体的に AWS 上でライブ配信を行う際には、どういったサービスが使用されるのかについて考えてみましょう。
AWS 上でのライブ配信ワークフロー
AWS 上での動画配信ワークフローを考えるに当たって、再度以下の図から初めていきます。
動画配信のソースとしては、大きく分けてライブと VOD(Video on Demand)が挙げられるのですが、今回は説明をシンプルにするため、ライブをソースとするライブ配信ワークフローを考えていきます。
上述した様に、撮影したライブ映像をユーザに届ける為には色々な仕組みが必要です。
今回は、AWS 外で生成されたライブ映像を AWS 上で構成された配信ワークフローを経由して、ユーザにコンテンツを届ける様な構成を考えていきます。
コンテンツを AWS に転送
AWS 上でコンテンツに対して様々な処理をする為には、撮影したコンテンツをオンプレから AWS に持って来る必要があります。
上でも述べていますが、大抵のケースで生の撮影データはサイズが膨大な為、AWS にコンテンツを転送する前にオンプレミス側で圧縮(エンコード)する必要があります。
上記の、AWS に転送される前にオンプレでエンコードされたコンテンツについて、AWS ドキュメント上では Mezzanine Stream(メザニンストリーム)と表現される事が多いです。
「Mezzanine」には「中間」といった意味合いがある様です。
また、オンプレ側で使用するエンコーダーとして、AWS は Elemental Live と呼ばれる物理エンコーダーを提供しています。
AWS Elemental MediaConnect
ここで、オンプレから転送されて来る Mezzanine Stream を AWS 側で受ける際に使用できるサービスが AWS Elemental MediaConnect です。
MediaConnect は、ライブ動画の伝送に特化したサービスで、上記の様なオンプレ → AWS だけでなく、AWS 内の異なるリージョン間のライブ動画伝送なども行う事が出来ます。
Direct Connect
オンプレ → AWS 間の接続は、Direct Connect を使用した閉域網接続を使用することも可能です。
エンコード〜パッケージング〜オリジン
AWS に動画を取り込んだら、ファイルを圧縮(エンコード)し、各再生環境に応じてコンテンツを変換(パッケージング)し、一連の処理が完了したコンテンツをオリジンに格納します。
AWS Elemental MediaLive
AWS 上でエンコードの役割を司るサービスが、AWS Elemental MediaLive です。
MediaLive によって、オンプレから来た動画ファイルが、私たちがよく目にする H.264 などのコーデックに変換されます。
また、MediaLive の主な役割はエンコードですが、HLS 形式で出力するなど、パッケージングも行う事が出来ます。
AWS Elemental MediaPackage
AWS 上でパッケージングとオリジンの役割を併せ持つサービスが、AWS Elemental MediaPackage です。
基本的に、MediaLive でエンコードされたファイルを受け取り、パッケージング処理を行います。
ジャストインタイム(JIT)パッケージング
MediaPackage の大きな特徴の1つとして、ジャストインタイムパッケージングというものがあります。
パッケージングによって、様々な再生環境に対応するコンテンツが生成されます。
ただし、複数の再生環境に対応するパッケージングファイルを用意してしまうと、オリジンサーバーの容量を圧迫してしまいます。
そこで、パッケージング前のコンテンツのみを保持しておき、リクエストに応じて都度パッケージング処理をする事によってオリジンの負荷を下げる仕組みがジャストインタイムパッケージングです。
JIT の仕組み上、MediaPackage はオリジンも内包したサービスとなっています。
DRM や 広告挿入との連携
他にも、デジタル著作権保護(DRM)や、広告挿入なども MediaPackage はサポートしています。
今回は記事ボリュームの都合上取り上げていませんが、MediaTailor と連携する事で広告挿入の仕組みを実現できます。
AWS Elemental MediaStore
AWS 上でライブコンテンツのオリジン機能を提供するサービスが、AWS Elemental MediaStore です。
エンコード&パッケージングされた動画を格納するといった用途で使用されます。
MediaStore は、ライブ動画の様に頻繁に更新&参照されるコンテンツに特化したオブジェクトストレージです。
結果整合性をもつ S3 ではライブ動画を格納する事が難しい為、ライブ配信ではこの MediaStore が採用されます。
MediaStore の詳細については、以下ブログを参照ください。
MediaStoreをS3よりも整合性の強いストレージとして理解する
MediaLive / MediaPackage / MediaStore 使い分け
MediaServices を学ぶにあたり、躓きやすいポイントとしては上記 3 サービスの使い分けではないでしょうか。
「MediaPackage ってパッケージング用サービスだけど MediaLive でも HLS 出力できるよね・・・?」
「MediaPackage も MediaStore もオリジン?どっち使うのが良いの?」
こんな声が聞こえてきそうです。
パターンとしては、基本的に以下のどちらかになります。
① MediaLive + MediaStore
MediaLive でエンコードとパッケージングまで行い、MediaStore にはパッケージング済みのファイル(HLS の ts ファイルなど)を格納する構成です。
ユースケースとしては、DRM や広告挿入などパッケージングに不要で、かつコンテンツの再生環境も限られている(HLSだけとか)場合にはこの構成で十分だと思います。
② MediaLive + MediaPackage
MediaLive にてエンコードのみを行い、パッケージングとオリジンの機能は MediaPackage で実現する構成です。
① では実現が難しい、DRM や広告挿入、MediaTailor との連携などが可能になります。
また、MediaPackage を使用する事で、上に述べた様なジャストインタイムパッケージングの恩恵を受ける事ができます。
基本的には、MediaLive + MediaStore の構成をベース検討し、やりたい事(複数デバイス対応、DRM、広告挿入、etc)が達成出来ない場合には MediaPackage の使用を検討する、という流れが良いのではないでしょうか。
CDN
CloudFront
MediaStore もしくは MediaPackage をオリジンとしてコンテンツを格納したら、各サービスのエンドポイントにユーザからアクセスしてもらう事により、晴れてコンテンツをユーザに配信する事が可能となります。
ただし、大多数のユーザからのアクセスがオリジンに集中する事を避ける為、CDN として CloudFront を使用する事ができます。
気になったら公式チュートリアルをやってみよう
文字ベースで色々と書いてみましたが、実際にサービスを触ってみるのが一番です。
AWS 公式のチュートリアルのリンクを貼っておきますので、是非ご活用ください。
- MediaLive、MediaPackage、CloudFront を使ってライブ動画チャネルを構築する
- MediaLive、MediaStore、CloudFront を使ってライブ動画チャネルを構築する
おわりに
AWS MediaServices の役割について、ライブ配信のワークフローを紐解きながら説明してみました。
Media系のサービスはパッと見難しそうですが、役割がそれぞれ分かれているので、一度頭に入れてしまえば適切なサービスを選定できる様になると思います。
今回紹介できなかったサービスを含め、次はもう少し各サービスの機能に焦点を当てて何か書いていければ良いなと思います。
以上、AWS 事業本部の大前でした。