「MPEG-DASHとは何か?」のまとめ
MPEG-DASHについて勉強する機会があったので、今更ながら簡単にまとめてみた。
はじめに
- MPEG-DASH、その業界ではDASHと言えば通じる。
- DASHはDynamic Adaptive Streaming over HTTPの略。
- Adaptive Streaming ... なんかカッコイイ響き。
- ISO/IEC 23001-6 で規格化されている。
DASHの目的
- HTTPを使ってビデオのストリーミングを行う技術。
- ネットワークの帯域やビデオのビットレートや端末の性能などの問題を吸収。
- 再生が途切れない(再生中にバッファリング状態にならない)ように動的にコンテンツ(ビットレートなど)を切り替える。
- 環境に応じた最適な高品質のビデオストリームを提供できる。
- SkypeやNetflix、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について書かれている。
- 以上を図式化したもの。