Amazon CloudFrontを利用した動画配信入門
AWSソリューションアーキテクトの北迫です。
導入しやすく、サイトの高速化を容易に実現できるCloudFrontは、非常に多くの皆様に利用いただいています。
その中でも、最近数多くの問い合わせをいただくのが動画配信での利用となります。その理由は、HTTPベースのストリーミング技術が主流になり、PC/スマホ/タブレットなどのマルチデバイスに対しても比較的簡単に動画の配信サービスを提供できる環境が整ってきたためと考えられます。
マルチデバイスへの配信が簡単にできるということは、逆にどれくらいアクセスが来るかキャパシティプランニングが難しくなってきているのも事実です。そこでCloudFrontを活用することで、想定が難しいキャパシティプランから開放され、オリジンの配信サーバの台数を削減できる上、より多くのユーザに対し動画を安定的に配信するプラットフォームを実現することが可能となります。
まず、HTTPベースのストリーミングについて簡単に紹介したいと思います。配信サーバ側で映像ファイルをセグメントという数秒単位の映像に分割し保持することで、クライアントはセグメントファイル単位でGETしながら再生を行うという、標準的なHTTPの世界で実現される方式です。よってCloudFrontを介在させることで、各エッジロケーションでセグメントファイルがキャッシングされ、オリジン配信サーバへの負荷を大幅に軽減することが可能となります。また、Adaptive Bitrate(ABR)という技術で、クライアント端末の状況に合わせて動的に配信する動画のビットレート(映像の品質)を変え、回線が安定しないクライアントでもストレスなく再生できることもこの方式が注目されている要因の一つとなります。
現時点でのHTTPベースストリーミングの代表的なものとして以下があります。
- HTTP Live Streaming (HLS)
- Adobe HTTP Dynamic Streaming (HDS)
- IIS Smooth Streaming
注意しなければならないのは、クライアントデバイスによって再生できる方式が異なるため、マルチデバイス対応といってもクライアントデバイスに合わせて配信方式を変えてあげる必要があります。
※MPEG-Dashという新しい規格で現在統一化を図ってはいますが、普及にはもう少し時間がかかりそうです。
デバイスの標準機能およびPluginのみで再生できる方式
|
iOS |
Android |
Windows PC |
Mac |
HLS |
◯ |
◯ |
☓ |
◯ |
HDS |
☓ |
◯3.2以前のみ |
◯ |
◯ |
Smooth Streaming |
☓ |
☓ |
◯ |
◯ |
※ネイティブの専用Playerなどを利用した場合は、上記に限らない
すべてのデバイスをターゲットにすると、なかなか一筋縄では行かない感じがしますが、複雑なことをせずにマルチデバイスにコンテンツを配信したい場合、HLSとHDSを組み合わせた構成を取ることが非常に多いかと思います。
では、同一のコンテンツであってもHLSとHDSをそれぞれ準備しなければならないのか?というとそれも可能ですが、AWSでもサポートしている、Adobe Media Service(AMS)や、Wowza Media Server(Wowza)をEC2上の配信サーバとして利用することで、On-the-flyで1つの元映像コンテンツをHLSおよびHDSに変換しながら配信を行ってくれます。これはライブ配信およびオンデマンド配信どちらでも利用することが可能です。
ライブ配信に関しては、CloudFrontの開発者ガイドにも詳細が記載されており、CloudFormationを利用した一括デプロイテンプレートの利用方法までStep-by-Stepで説明されています。またオンデマンド配信に関しては、配信サーバのローカルもしくは、バックエンドにNASのような共有コンテンツサーバに映像ファイルを格納することで、クライアントからの配信要求に応じて配信を行ってくれます。
あまり聞き慣れないWowzaという製品ですが、実は優れた機能がいくつかありますので合わせて紹介したいと思います。1. HLS、HDSだけでなくSmooth Streamingにも変換できます。2. オンデマンド配信時Amazon S3をコンテンツストレージとしても指定できます。
ここで一つ豆知識ですが、EC2を配信サーバとして動画配信をする場合、スケーラビリティや可用性を考慮し、配信サーバの前段にELBを使われるパターンが良く見られます。動画の場合、送信データが大きくなる傾向にあり、ELBが送信のボトルネックになる可能性もあるため、Route53などのDNSラウンドロビンを利用されることを推奨します。一般的なオンプレ環境の場合には、ロードバランサーのDSR(Direct Server Return)を使うことが多いかと思います。
次に、ライブ配信の場合は、何らかの配信サーバの利用が不可欠ですが、オンデマンド配信で、クライアントデバイスの制約が受け入れられる場合、AWSのサービスをもっと活用し、もっと簡単に配信できる方法もあります。
HLSのみ
- 動画ファイルを事前にAmazon Elastic Transcoderを利用してHLSに変換し、S3に出力。HLSはCloudFrontとS3で配信が可能なため、CloudFront、S3の設定と、Elastic Transcodeのジョブの実装だけで実現可能。
Smooth Streamingのみ
- Microsoft Expression EncoderなどのSmooth Streamingフォーマット(iSMV)変換をサポートしているトランスコーダを利用し、変換を行ったファイルをS3に格納。CloudFrontのDistribution作成時に、Smooth Streamingをオンにすることで、CloudFrontとS3のみで配信可能。
ということで、今回はAWSで実現できる動画配信のさわりの部分をご紹介しましたが、今週末のJAWS DAYS2014のTrack3: AWS Technical Deep Dive 「CloudFrontで実現するセキュアコンテンツ配信と効果のトラッキング」の中で、CloudFrontを利用したセキュアな動画配信の実現方法についても一歩踏み込んでご紹介します。
コンテンツのリッチ化と動画配信の技術の進化により、多くのシステムで動画配信が活用されるようになってきました。是非皆様の動画配信ライフに活用していただければと思っています。
コメント