NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

AWS Media Servicesを使った動画配信基盤

本記事は  AWSアワード記念!夏のアドベントカレンダー  17日目の記事です。
🎆🏆  16日目  ▶▶ 本記事 ▶▶  18日目  🏆🎆

はじめに

みなさんこんにちは、梅原です。この度2024 Japan AWS Jr. Championsに選出いただきました。
サポートしていただいたみなさんありがとうございました。これからもよろしくお願いします。

さて今回は、AWS上で動画配信基盤を構築するためのサービスであるAWS Media Servicesについてご紹介したいと思います。
動画配信技術の詳細というより、動画配信基盤をAWS上で構築するための概要的な話が多めです。ぜひ参考にしていただけたら嬉しいです。

動画配信とは

そもそも動画配信の形態は3つあります。

  • VOD(Video On Demand)
    閲覧者が好きなときに見ることができる動画配信形式です。NetflixやAmazon Primeといったサービスがイメージしやすいのではないでしょうか。

  • ライブ型
    カメラから取り込まれた映像や事前に準備しておいた動画をリアルタイムで配信する形式です。Youtube Liveやテレビの生配信が該当します。

  • 双方向ライブ配信
    文字通り双方向でライブ配信をする形式となります。ZoomやChimeといったオンラインビデオ会議で使われてます。

AWS上でも3つの動画配信形式に合わせた基盤を構築することができます。

AWS上で構築するメリット

先ほど挙げたYouTubeやZoomといった既存のプラットフォームがあるにも関わらず、独自でAWS上に構築するメリットは何なのでしょうか?

AWS上で構築するメリットは自社ドメインのサービスに組み込むことができることだと思っています。 具体的には4点です。

  1. 独自のセキュリティ設定を追加できる
    AWS上で動画配信基盤を構築する場合は、独自のWAFを利用することができます。例えば、WAFを利用することでIP制限をかけるといったこともできます。動画基盤に一定のセキュリティを要求する場合は自社で基盤を作る必要があります。

  2. 既存の認証機能を使うことができる 自社サービスの有料会員のみに特定の動画を見せたいといった要件がある場合は、既存動画プラットフォームでは適しません。例えばYouTubeの限定公開機能では、動画のURLさえ知っていれば誰でも見ることができてしまいます。 AWS上で構築することで独自の認証機能を使うことができるので、ユーザー毎の出し分けも可能になります。

  3. AWS以外のプラットフォームを利用しないでよくなる 動画自体もYouTube上に保管することになりますし、そもそも会社によってはプラットフォームの利用がNGといったこともあると思います。そういった場合でもAWSであれば、データを国内に保管しておくこともできますし、プラットフォームの利用もAWSのみでよくなります。

  4. サイトの統一感を出せる
    YouTube動画をWebサイトに埋め込むことで、WebサイトにYouTubeの埋め込み感が出てしまいます。自社で動画配信基盤を構築することで、自社サービスのドメインも使うことができるので、ブランディングの一つになります。

AWSの動画配信サービス

動画ワークフローと対応するサービスは以下の画像の様になっています。

「AWS 上で実装するライブ動画配信のアーキテクチャパターン〜 2022 年版 〜」より引用

  • Amazon Interactive Video Service(以下IVS)
    上記画像の一番下に記載のあるAmazon IVSはまず最初に利用を検討するサービスです。
    先述した動画配信フロー全体を担っており、フルマネージドなサービスとなっています。 かなり抽象化されているので、CloudFrontの設定変更といったカスタマイズはできないです。
    なお、VOD配信には対応してません。

よりカスタマイズしたいといった要件には、Media Services群を使います。Media Servicesとは動画配信で使用するサービス群の総称で、全部で6つサービスがあります。 すべてマネージドサービスであり、サーバーの管理は不要です。

  • AWS Elemental MediaLive
    動画のエンコーディングサービス。S3に保存した動画やカメラから送信される動画をエンコーディングしてくれます。

  • AWS Elemental MediaStore
    動画ファイルを保管するためのサービスです。

  • AWS AWS Elemental MediaPackage
    こちらも動画ファイルを保管するためのサービスです。MediaStoreとの違いは、端末に合った動画ファイルのパッケージングや動画コンテンツ保護のDRM、ライブ配信中の巻き戻しが可能なことです。

  • AWS Elemental MediaConnect
    AWS 内の異なるリージョン間などで動画伝送行うことができます。

  • AWS Elemental MediaConvert
    配信やアーカイブのためのオンデマンド動画に変換するサービスです。

  • AWS Elemental MediaTailor
    サーバーサイドで動画に広告を挿入するサービスです。

以上のサービスを組み合わせて動画配信基盤を構築します。
また物理デバイスを購入し、自社ネットワークで処理した動画をAWSに送信するAWS Elemental Linkもあります。
なお双方向動画配信に関しては、Amazon Chime SDKを使用することになります。

配信アーキテクチャ

ここでようやく配信のアーキテクチャのご紹介です。 今回はS3に保管したMP4動画ファイルをライブ配信する構成を取ってみます。 アーキテクチャ図はこちらです。

S3に保存した動画をライブ配信する構成

動画配信のワークフローの流れに沿って説明します。

①配信データの取り込み

動画ファイルをAWS上で処理するために取り込みを行います。
今回は事前録画した動画をライブ配信するので、MediaLiveに読み込ませる動画はS3に保管しておきます。事前録画ではないライブ型配信の場合は、OBSソフトウェアからRTMPなどで送信する必要があります。

②エンコーディング

動画ファイルはそのままだと大きすぎるので、エンコーディングしてファイルを圧縮する必要があります。また動画ファイル全体を一回で送るのではなく、細切れファイルにして、その細切れ動画を都度httpで送信するHLSやDASHといったプロトコルがよく利用されます。 MedialiveではHLSやDASH用のファイルを作成して、後続のS3にファイルを出力してくれます。

Medialiveは他にも解像度ごとの動画ファイル作成もしています。
回線の弱いユーザーが高解像度つまり情報量(ビットレート)が多い映像を読み込もうとすると、読み込みに時間がかかるのでユーザー体験が悪くなります。また配信する側にとっても無駄に大きいデータを配信することになり、配信のコストが高くなります。 そのためにビットレートが少ない動画が必要で、動的にビットレートを切り替えるアダプティブビットレートもあります。

またMediaLiveの機能として、動画の配信スケジューリングで、ライブ配信開始前には特定の動画をループして再生しておき、定刻になったら配信を開始するといったことも可能です。

③ライブ配信用データの保管

Meidaliveによって分割された動画ファイルをメディアストレージに保管しておきます。 メディアストレージに関しては、MediaStoreとMediaPackege、S3の選択肢がありますが、今回の構成ではS3を使用しています。
コンソールでも以下のように記載されている通り、メディアストレージはS3でも可能となっています。

Amazon Simple Storage Service (Amazon S3) now provides the performance, consistency, and low latency required to deliver live streaming video content for a lower cost than AWS Elemental MediaStore.

それぞれの再生端末にあったパッケージングが必要であったり、動画コンテンツ保護のためのDRM、ライブ配信中の巻き戻しを実装したい場合は、MediaPackegeを使用します。

④配信

メディアストレージに保存したファイルをオリジンとして配信を行います。 CDNを使って動画コンテンツのキャッシュも効果的に行いましょう。動画を再生するブラウザでは、HLS.jsやVideo.jsで再生可能です。

最後に

いかがでしたでしょうか。思いの外登場サービスも少なく、簡単な構成で動画配信基盤を構築できるのは意外でした。 また、AWS Well-Architectedには動画配信用のLensもあるので、W-Aを意識したアーキテクチャも参考にしてみてください。

執筆者: 梅原航
2024 Japan AWS Jr. Champions