「MPEG-DASHとは何か?」のまとめ

MPEG-DASHについて勉強する機会があったので、今更ながら簡単にまとめてみた。

はじめに

  • MPEG-DASH、その業界ではDASHと言えば通じる。
  • DASHはDynamic Adaptive Streaming over HTTPの略。
  • Adaptive Streaming ... なんかカッコイイ響き。
  • ISO/IEC 23001-6 で規格化されている。

DASHの目的

  • HTTPを使ってビデオのストリーミングを行う技術。
  • ネットワークの帯域やビデオのビットレートや端末の性能などの問題を吸収。
  • 再生が途切れない(再生中にバッファリング状態にならない)ように動的にコンテンツ(ビットレートなど)を切り替える。
  • 環境に応じた最適な高品質のビデオストリームを提供できる。
  • SkypeNetflix、Huluなどでも似たような技術を使っている。
  • DASHは普通のHTTPサーバで実現できるのが利点。
  • AkamaiなどのCDNがそのまま利用できる。
  • 従来の放送で利用されているストリームでは、複数のオーディオ/ビデオや字幕などを一本にmuxして端末(プレイヤー)側で必要なESを取り出すが、DASHはそれがサーバとクライアントに分散されたイメージ。
  • 再生中にビデオのビットレートや解像度などを切り替えできるように、サーバには複数のビデオが予め用意されている。動的にエンコードしてもよいが。
  • どのようなビットレートや解像度のビデオが提供されるかのメタ情報が定義される。
  • このメタ情報をMPD(Media Presentation Description)と呼ぶ。

MPD - Media Presentation Description

  • DASHは結局のところ、このMPDを規定する規格。
  • MPDはXMLで記述される。
  • MPDは1つのXMLツリーであるが、XLinkをベースにしたXMLなので部分木を必要に応じてダウンロードする。また、有効期限が定義されるので、MPD自身が動的に変わることもできる。
  • MDPが動的に変わるのはVoDではなく、主にライブ(放送系)を意図している。
  • MPDには抽象度の高いレベルから具体的なビデオのセグメントまで階層的に記述さる。
  • MPDはざっくり言ってしまえば、MP4のmoov boxに相当するもの。
  • MPDのトップレベルはPresentation。
  • Presentationは完結した1本のビデオストリームを抽象化したもの。
  • このPresentationレベルではタイトルや再生時間などは定義されるが、言語や解像度やビットレートなどは不定。とにかく一本のビデオというレベル。
  • PresentationはPeriodの並びから構成される。
  • Periodはビデオを時間でブツ切りに分割したもの。
  • Periodにはstart時刻とduration時間が定義される。両者が計算できればどちらか一方でもよい。
  • PeriodはGroupから構成され、GroupはRepresentationから構成される。
  • RepresentationはSegmentから構成される。
  • Segmentはメディアの最小単位。
  • SegmentにはHTTP range GETで取得できるようにバイト位置や時刻情報などが記述されている。
  • Segmentをつなぎ合わせられるようにIDRを考慮。
  • 規格ではSegmentのガイドラインとしてFragmented MP4 (3GPPなど)とMPEG2-TSについて書かれている。
  • 以上を図式化したもの。


結局何ができるようになるのか

  • ネットワーク環境に動的に応じた高品質ビデオストリーミング配信。
  • オンデマンド、ライブ放送、タイムシフト/キャッチアップサービス。
  • 音声切り替え、アングル(ビュー)切り替えなど。
  • ペアレンタルコントロール
  • 広告などのシームレス挿入。
  • DRMのための共通枠組み。
  • ビデオとオーディオの別々ストリームによる同期。

感想

  • 主流になる技術か?
  • ネットワークの速度に依存せず、最適な品質のストリーミングを実現するという点では、過渡的な技術かも。(ネットワークが十分高速になれば必要ない)
  • 動的なビットレート切り替えは、モバイル系では有効か?
  • むしろ、MPDのEPG的な役割やビデオアングルや音声切り替えなどの応用には有効かもしれない。
  • また、Segment単位でCDNにキャッシュされることにより、ネットワーク中に効率よく分散化されることになるため、ビデオ再生がより快適になるだろう。
  • いずれにしても、HTML5のビデオにも組み込まれるのは時間の問題だと思う。