Posted by & filed under 開発.


先日、社内勉強会でベンダーロックインではない Adaptive bitrate streaming 方式として MPEG-DASH (以下DASH) について紹介しました。

私自身、名前だけ知っていたものの、まだ先の話だろうと考えていました。勉強会向けにちょっと調べたらOS/ブラウザベンダーの足並みが揃いつつあります。まさに勉強会で一番勉強するのは発表者ですね。先の話どころか、いまいまの話でした。

新しいもの好きな方のために Chromecast も対応済です。MatchStick は未対応のようです。おそらくは Firefox の正式サポートを待ってからになるのかもしれません。

現時点では Adaptive bitrate streaming のデファクトスタンダードと言える HTTP Live Streaming を提供している Apple はどうでしょうか。

OS X Yosemite の Safari では対応しているようです。このニュースを Apple ではなく Adobe が報じているのもおもしろいです。iOS が DASH に対応するのか、するならいつ頃か?というのに注目が集まっています。

 

前置きが長くなりました。では早速ですが、DASH を試してみましょう。

ここでは、DASH の MPD スキーマを生成するために MP4Box というツールを使います。他にもいろいろなツールがあると思いますが、いくつか試してみた限りではこのツールが簡単でした。MP4Box をインストールするには、GPAC のダウンロードページを参照してください。私の環境 (Ubuntu 14.04) では、ソースをダウンロードしてきて make && make install で簡単にインストールできました。

MP4Box を使って DASH の MPD (Media Presentation Description) スキーマを作成します。ここでは10秒ずつセグメント化しますが、実際にセグメントファイルを作成するのではなく Range を定義しています。

以下の2つのファイルが作成されます。

mpd ファイルの中身をみてましょう。こんな感じの xml ファイルが作成されます。

次にメディアプレイヤーとして DASH クライントの参照実装である dash.js を使います。

dash.js を使ってストリーミングを行うサンプルページを作ってみましょう。この html は dash.js の README で紹介されている方法です。

これで準備が整いました。では実際にストリーミングしてみましょう。HTTP サーバーは何でも構いませんが、ここでは Python を使って HTTP サーバーを起動します。

私の環境では IE11, Chrome38, Safari8 (on Yosemite) で再生できました。

リファレンス:

WebM も Mozilla のドキュメントを見ながら試してみたのですが、この内容では Chrome38, Firefox33 ともに再生できませんでした。たぶんやり方が変わっているのでしょうが、私がよく分かっていません。また機会があれば挑戦してみます。


関連文書:

3 Responses to “MPEG-DASH の Adaptive bitrate streaming を試してみる”