ストリーミング(動画配信)CDN


ストリーミングCDNとは、動画配信をCDNで行うことです。まず、ストリーミングの場合、Web CDNとは異なるGSLBが使用されていることがあるため、その部分から説明します。

ストリーミング(動画配信用)GSLB

ストリーミングの特徴として、プレイヤー(クライアント)は次のような動作を行います

  1. 最初にメタファイルを取得する
  2. メタファイル記述してある動画本体を取得する

そのため、ストリーミングGSLBでは、メタファイルに含まれる動画本体のURLを(動的に)変更することにより、最適なサーバをプレイヤーに指定することが可能です。ただし、最近、この方法は一般的でなく、多くの場合、Web GSLBと同じくDNSによる最適なサーバの指定を行っています。

プロトコル種別によるCDN

CDNの視点において、ストリーミング配信は、以下の二つに分類されます:

  • 独自プロトコル:Windows Media、Adobe RTMP
  • HTTPベースプロトコル:HLS、HDS、MSスムースストリーミング、MPEG-DASH

現在、ストリーミングはHTTPベースプロトコルに移行しようとしていますが、まだ独自プロトコルも健在であるため、この両者についてCDNを説明します。

独自プロトコル

独自プロトコルの場合、配信ソフトウェアも提供会社独自のものしか使用できません。そのため、ストリーミングCDNは、それら配信ソフトウェアの稼働するサーバを多数用意したシステムであると言えます。また、Adobe社等のサーバライセンスはそこそこ高額であり、CDN事業者はそのライセンスを小売り(ASP)している会社であるとも言えます。

HTTPベースプロトコル

HTTPベースプロトコルの場合、配信ソフトウェアとしては標準的なHTTPサーバの使用が可能です。そして、CDNについても、Web用CDNをストリーミング用CDNとして使用できるようになりました。つまり、ストリーミングだと言って特別なCDNは必要なくなっています(ただし、いくつかの注意点があります)。

また、ライブ動画のタイムシフト再生についても、CDNのキャッシュを活用することにより、オリジンの変更なしで実現できます。

注意点:コンテンツ保護

HTTPベースプロトコルの場合、ストリーミングでありながらもユーザによるコンテンツの複製(ダウンロード)が容易です。これを避けるためには、ワンタイムURL(根本的には、ダウンロードされても悪用されないようにDRM化)が必要になります。

注意点:MPEG-DASH

MPEG-DASHは、それ以外のHTTPベースプロトコルと大きな違いがあり、注意が必要です。

サーバに置くメディアファイルの分割 Range Request、URLパラメータによるキャッシュ
MPEG-DASH 不可 必須
HLS、スムースストリーミング、HDS 可能 不要

HLS等では、サーバ上に細切れにしたTSファイルを配置し、クライアントは、視聴する部分のTSファイルを順番に取得します。

一方、MPEG-DASHは、多くの実装でファイルの分割を許しません。つまり、サーバ上に配置するのは一つの(フルサイズの)動画ファイルです(正確には音声と映像の2種類必要)。そして、MPEG-DASHクライアントは、この一つの動画ファイルから視聴に必要な部分をHTTPで順番に取得します。この「部分的な取得」には、以下の2種類の方法があり、それぞれ特定のCDN機能が必要になります(CDN事業者によっては全くサポートしていないこともあり、詳細の確認が必要です):

  • URL パラメータによる指定
    • 以下のようにURLにパラメータを付加した形で部分ファイルを取得します
      • http://example.jp/test.mp4?seg=1
    • 必要なCDN機能:動的ファイル(URLパラメータを含んだ)キャッシュ
  • HTTP Range Request
    • HTTPリクエストにRange(取得する範囲を指定)ヘッダを付加して送信します
    • 必要なCDN機能:HTTP Rangeリクエストに対するキャッシュ