[AWS Black Belt Online Seminar] 動画配信 on AWS レポート

はじめに

清水です。先日2017年3月28日(火)に行われた"AWS Black Belt Online Seminar 動画配信 on AWS"を聴講したのでレポートします。講師はAWSJソリューションアーキテクトの北迫さんでした。

発表スライドは以下で公開されています。

また2017/04/05現在、以下の"AWS活用資料集"のページから録画されたオンデマンドセミナーを聴講することができます。

セミナーですが、動画配信の基本的な部分から最新のトレンドまで幅広く解説いただいた、AWSで動画配信を考えているなら必聴なセミナーでした。またこれまであまり(特に日本語での)情報がなかったElemental Cloudについても取り上げる、非常に興味深いものでした。

レポート

アジェンダ

  • 動画配信とは
  • 動画配信技術動向
  • AWSで実現する動画配信基盤
  • PaaS型配信サービス Elemental Cloud
  • コストの優位性
  • Advanced動画配信基盤
  • まとめ

動画配信とは

  • ネット回線を使用し映像コンテンツをPC、スマートフォン、スマートテレビなどに配信し視聴
  • 大きく2種類
    • オンデマンド配信
      • VODとも呼ばれる
      • 視聴者が見たいときに自由に視聴できる配信方式
      • 再生制御(早送り、巻き戻し)可能
    • ライブ配信
      • リアルタイムに配信されている動画を視聴する方式
      • 再生制御は行えずリアルタイム視聴のみ

動画配信技術動向

動画配信のテクノロジー

  • ストリーミング
    • わりと昔からある方式
    • 独自のプロトコル(RTMP/MMC/RTSP)を使用、再生プレイヤーも独自形式
    • 遅延が少なくきめ細かな再生制御が可能
    • 配信環境は専用サーバなど整備が必要
  • HTTPダウンロード
    • 動画をダウンロードしてローカルで再生する
    • プログレッシブダウンロードでダウンロードした部分だけの再生も可能
    • クライアントに動画が残るので、保護の面でデメリット
    • ライブ配信未対応。オンデマンド配信のみ
    • 配信環境はWebサーバを立てるだけなので簡単
  • HTTPストリーミング
    • 双方のいいとこ取りで現在の主流
      • HLSやmpeg-DASHはこれ
    • デバイスによってサポートするフォーマットが異なる

再生クライアントのデバイスサポート状況

  • デバイスのネイティブ対応のみを考えると、全てのデバイスをカバーしているHTTPストリーミングの方式はない
    • iOSはHLSストリーミングにしか対応していない、PC(Windows)だとHLSにはネイティブ対応していない、など
  • HTML5のMedia Source Extensionsを使用することでHLSやmpeg-DASHが再生可能
    • このため今後はmpeg-DASHに流れそう。

動画配信トレンドとその課題

  • トレンド1: マルチデバイス
    • PCから様々なデバイスでの再生にシフト。
    • OSによっては再生できるフォーマットが異なり、デバイス毎に適した配信フォーマットの選択が必要
    • 課題
      • デバイスごとにコンテンツ、サーバ環境の準備が必要となり、ストレージ容量、サーバ台数が増加
      • プレイヤー側で配信フォーマットの違いを吸収することもあり
  • トレンド2: マルチビットレート
    • ネットワーク接続環境に合わせて最適化されたコンテンツの配信
    • Adaptive Bitrate(ABR)用のコンテンツを複数事前準備
    • 課題
      • 変換処理負担とストレージ容量の増加
  • トレンド3: マルチキャパシティ
    • 再生デバイス、接続形態多様化により配信キャパシティの想定が難しい
      • ライブ配信の同時接続
      • オンデマンド配信でもSNS等の拡散があると急激なアクセス
    • 配信規模に合わせた柔軟性のあるインフラキャパシティの確保が必要
    • 課題
      • 初期投資コストの増加と余剰設備の運用

課題をまとめると、以下3点

  • デバイス毎に異なる配信フォーマット
  • コンテンツ数およびサイズの増加
  • 想定が難しい配信キャパシティ

AWSで実現する動画配信基盤

動画配信トレンドの課題を解決

  • 配信フォーマットの多様化の解決
    • 解決策1
      • ストリーミングサーバにおけるシングルコンテンツマルチユース
      • クライアントからのリクエストに応じて、ストリーミングサーバが動的に配信フォーマットを変換
      • Wowza Streaming Engine, Adobe Media Server Unified Streaming Platform, Elemental Cloud等
    • 解決策2
      • プレイヤーによる配信フォーマットの統一
      • サーバサイドはHLS等いずれか1つ
      • クライアントのプレイヤー側でそのフォーマットを再生できるようにする
      • 最近のトレンドはHLSへの統一
      • S3+CloudFrontのみでの配信も可能
      • JWPlayer, Video.js, flowplayer等
  • コンテンツ数及びサイズ増加の解決
    • Adaptive Bitrate対応によりトランスコード処理、コンテンツストレージの増加
    • フルマネージドなストレージサービス、トランスコードサービスを活用
      • Amazon S3
      • Amazon Elastic Transcoder
    • WowzaなどストリーミングサーバからS3を参照して配信することが可能
  • 配信キャパシティ設計の解決
    • 即時利用できる仮想サーバ
    • 容量制限のないコンテンツストレージ
    • データ流量で課金するCDN
      • Amazon CloudFront
      • CDNを活用し、あらゆる規模の配信にもコストをかけずに柔軟に対応
    • Amazon CloudFront
      • 世界75箇所のエッジロケーション。年々エッジロケーションを増加中。
      • ライブ配信でCDN使うことはメリットがないという考えもあるが、これは間違い。
        • TCPオフロードのメリット等あり。ライブ配信でもCDN利用のメリットある。
    • 配信方式毎の基盤要件
      • オンデマンドとライブはキャパシティの考え方が異なる
      • ライブはイベント時のみ必要
  • オンデマンド配信アーキテクチャの紹介
    • ストリーミングサーバによるHTTPストリーミング配信パターン
      • CloudFrontにより小規模から大規模配信まで対応
      • ストリーミングサーバによりマルチデバイス対応
      • マネージドストレージであるS3、マネージドトランスコーダである Elastic Transcoderを利用
    • Amazon S3によるHTTPストリーミング配信パターン
      • S3とCloudFrontのみで配信が可能で、運用が楽
      • 配信フォーマットは例えばHLS等に固定し、プレイヤーで吸収
    • Amazon S3によるRTMPストリーミング配信パターン
      • S3オリジンの場合ならCloudFrontを使ったRTMP配信も可能。
      • 制約が多い。VODにのみ対応。
  • ライブ配信アーキテクチャの紹介
    • ストリーミングサーバによるHTTPストリーミング配信パターン
      • ライブ配信ではストリーミングサーバが必須
      • カメラからライブエンコーダでサーバに送り続ける必要がある
      • ABRはエンコーダ側/ストリーミングサーバ側のどちらかで実施
        • インターネット回線の太さで決めることもある
        • ABRは送るデータ量が増えるので
      • CloudFromationのテンプレートでWowza Streaming Server, Adobe Media Serverなどがある
    • ストリーミングサーバによるRTMPストリーミング配信パターン
      • 例えば遅延をなるべく少なくするため、RTMP等ストリーミングプロトコルを使用する場合
      • CloudFrontが使えないので、EC2でクラスタリングを行う

PaaS型配信サービス Elemental Cloud

Elemetanはアプライアンス型製品だったが、PaaSとして提供されているプラットフォームサービス

  • リソース利用料に応じた従量課金モデル
  • サーバなどの構築、冗長化、スケーラビリティは意識する必要なし
  • ライブ/オンデマンドで利用する製品を選択
    • ELEMENTAL LIVE: ライブエンコーダー
    • ELEMENTAL SERVER: ファイルベーストランスコーダー
    • ELEMENTAL DELTA: ビデオ配信サーバー
    • ELEMENTAL STATMUX: マルチチャネル動的帯域コントロール
    • ELEMENTAL CONDUCTOR: 処理間rに/冗長管理製品
    • ELEMENTAL CLOUD: Elementalクラウドサービス
  • Elemental Cloud
    • 管理画面から各環境をセットアップ
      • AWS Management Consoleとは別の管理画面
      • 自前でストリーミングサーバとかEC2を立ち上げて、はない
    • インフラ運用が一切不要
  • Elemental Cloudオンデマンド配信アーキテクチャ
    • リソース管理、チャンネル管理にELEMENTAL CONDUCTOR
    • トランスコードにELEMENTAL SERVER
      • S3のWatch Folder機能があり、連携可能
    • 配信にELEMENTAL DELTA
      • DRMパッケージング、動画広告挿入が可能
  • Elemental Cloudライブ配信アーキテクチャ
    • オンデマンド配信アーキテクチャからトランスコード部分がELEMENTAL LIVEに変わるだけ

コストの優位性

  • マネージドインフラで運用コストの削減
  • オンデマンド配信
    • 機会損失の会費と不要な帯域課金の削減
    • ストレージコスト優位性によるロングテール対応
  • ライブ配信
    • 極限まで設備投資コストの削減
    • 規模にあわせたキャパシティ
      • CDN利用など
    • 機会損失の回避

Advanced動画配信基盤

セキュア動画配信アーキテクチャ

  • 有料会員のみに配信したい場合
  • セキュリティレベルにより3種類を紹介
CloudFrontの署名付きCookieを利用したアクセス制御
  • 一番簡単な方法
  • オンデマンド/ライブの双方に対応
  • 視聴OKなユーザにはCloudFrontのCookieを生成
  • バックエンドはWowzaでもElementalでも、S3でもかまわない
  • SSL通信可能
  • 映像自体は暗号化されていない
Elastic Transcoderの暗号機能と組み合わせたコンテンツの保護
  • Elastic Transcoderの暗号化機能を使って映像自体を暗号化
  • プレイヤー側でAESの鍵を取得する
  • 鍵の管理はユーザ認証サーバ
  • オンデマンド配信のみ対応
    • フルマネージドオンデマンド配信
DRMを利用したセキュア配信
  • 最もセキュリティレベルが高い
  • WowzaやElementalのアドオン、連携機能でSaaS型DRMと連携する。
  • AESの仕組みと異なり、プレイヤーは独自プレイヤーとなる
    • デバイスやプレイヤーを固定することが可能で、より高いセキュリティを実現
  • DRM部分のコストが高く、数十万人規模の会員がいないとペイできない
  • ライブ、オンデマンドどちらにも対応

自動トランスコードアーキテクチャ

  • AWS LambdaとS3のイベント通知を活用
    • S3へのファイルアップロードでLambdaを起動
    • LambdaでElastic Transcoderを呼び出し、トランスコード処理
    • トランスコードされたファイルはS3に格納、そのまま配信可能
    • フルマネージドトランスコード基盤

ライブ配信環境の冗長化

  • マルチAZ構成のストリーミングサーバとRoute 53のDNSフェイルオーバーの組み合わせ
    • ライブは失敗することができない
    • CDN(CloudFront)は冗長化済み
    • 配信サーバの冗長化のためマルチAZで構築
    • Route53でDNSフェイルオーバーする
      • ボトルネックとなる可能性があるので、この部分にELBは使わない
      • オリジンからの通信流量が増え、ELBのスケールアップが間に合わない可能性
      • 使わなくていいのであれば、ELBは使わない方が良い
    • ライブエンコーダ側で複数のサーバに同じ映像を投げる機能を使用し映像を伝送

まとめ

  • 幅広いデバイスへの配信
    • 最近は少し落ち着いてきた。後はmpeg-DASHにどう流れるか
  • マネージドサービスの利用
  • コストメリット
    • クラウドの特性を上手に利用する

Q&A

  • mpeg-DASHでAWSから配信するにはどのような方法があるか?
    • Elastic Transcoderでmpeg-DASH変換
    • フロントはCloudFront, S3があればOK
    • 他にWowzaの利用なども可能
    • mpeg-DASHはクライアントのプレイヤーがあまりない
    • dash.jsがまだ安定していないことがあり、注意を。
  • 4Kの配信はどのように行うか?
    • Elemental Cloudは4kに対応済み
    • Elastic Transcoderは2017/03/28の時点でH.264までで、4kで利用されるH.265にはまだ対応していない
    • WowzaなどもH.265対応
    • 4kでの注意点として、クライアントの環境に左右される点
      • クライアントのネット環境が悪いと、ABRでユーザは実際には2kで見ていたり、、
    • NTT東日本さんのサービスで4k配信は良い方法
  • CloudFrontを使ったライブ配信のメリット、TCPハンドシェイクについての詳細は?
  • ライブ配信をしながら録画し、サムネイル作成をしたい
    • ライブ配信サーバの機能に依存する
    • ライブ配信をしながら録画、はDVR機能でそれぞれのストリーミングサーバが対応しいている
    • 録画後のファイルの扱いについて、WowzaはS3への出力は対応していなかったはずなので、自分でS3に置かないと行けない
    • Elementalは同録をS3へ保存する昨日あり
    • サムネイル作成はAPI利用などを検討を
    • 簡単な方法だと、S3にファイルを追いてElastic Transcoderのサムネイル作成機能を使用する

おわりに

"AWS Black Belt Online Seminar 動画配信 on AWS"の聴講レポートでした。基本となる動画配信方式の解説から、より具体的なアーキテクチャ解説まで含まれているセミナーでしたので、AWSで動画配信を考えている方はまず聞いておくべき、また既に動画配信に携わっている方でも新たな発見があるかと思います。私個人として特に気になった点は以下になります。

  • 現在の主流が配信方式をHLSに固定しプレイヤーで吸収すること
  • mpeg-DASHへの統一はまだ完了していないこと
  • PaaSとして提供されているElementa Cloud
  • Q&Aでもあった4Kでの動画配信

今後も動画配信のトレンドに注目していきたいと思います。