ストリーミングCDNとは、動画配信をCDNで行うことです。まず、ストリーミングの場合、Web CDNとは異なるGSLBが使用されていることがあるため、その部分から説明します。
ストリーミング(動画配信用)GSLB
ストリーミングの特徴として、プレイヤー(クライアント)は次のような動作を行います
- 最初にメタファイルを取得する
- メタファイル記述してある動画本体を取得する
そのため、ストリーミング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パラメータを含んだ)キャッシュ
- 以下のようにURLにパラメータを付加した形で部分ファイルを取得します
- HTTP Range Request
- HTTPリクエストにRange(取得する範囲を指定)ヘッダを付加して送信します
- 必要なCDN機能:HTTP Rangeリクエストに対するキャッシュ