2013年6月11日火曜日

html5のVideoタグでLive配信をするApple

Appleの基調講演の配信ページがsafari限定になっていて、何をやってるのか見てみた。

埋め込みタグは
<video id="movie" class=" video" src="http://p.events-delivery.apple.com.edgesuite.net/13oygadvoyibawefpiuawefpiuawdf6/sl_mvp.m3u8" x-webkit-airplay="allow" autohref="true" width="848" height="480" autoplay="autoplay" jsonurl="/apple-events/scripts/ac_media_jsons/june_2013_event.json" expectingmoviejson="true" spec="" style="width: 848px; height: 480px; "></video>
となっています。
おおお!Videoタグ!
たしか前回はObjectタグでQT呼び出しだったはず。
コントローラーは<div>で自作されていた。ShadowDOMな感じではない状態で。

srcには .m3u8 という拡張子のファイルを呼び出しています。
このm3u8はプレイリスト用のよくあるフォーマットです。
http://ja.wikipedia.org/wiki/M3U 
src指定されてるものは最初の画面関連の動画プレイリストのようです。
あと気になるところとして jsonurl という謎のアトリビュートが設定されています。
このjsonファイルも見てみると、これもm3u8のプレイリストを呼び出しています。
で、m3u8のファイル辿ってみると約9秒毎の .ts ファイルを連続再生させています。
中の .ts ファイルは srcで指定されてるのは開始タイミングで行われていたものが定義されています。jsonurlで指定されてるものは、常時更新されているようです。

この配信方法はhttpのライブ配信では王道のアルゴリズムではあるが、将来Videoタグでライブ配信するときに使われるスタンダードになっていくのだろうか?
W3CなどでLive配信についてはどう議論されてるか追えていないのでよくわかってはいませんが・・後で調べてみます。
DRMかけてセッションがないとDLできない、帯域をデバイスやネットワークなどで常時変更しまくったり、共有しようとしても細切れまくってるから共有するのがめんどくさくなるなどは実現できそうな気はする。
あと、プレイリストの生成をどうなるかがわからないけど、WebRTCな感じでP2Pな方法で動画ファイル送りまくるという方法がうまく使えるかな?

ただ、どうも不安定なようで、再生中に突然src属性で指定されていた最初の動画が流れてしまったり、動画の切替で1フレーム程度白いものが入って変にフラッシュするような挙動になったり、取得できなかった動画をスキップしまくったりしていました。

追記:
HTTP Live Streaming ですねと教えてもらいました。
http://en.wikipedia.org/wiki/HTTP_Live_Streaming
この方法にはiOS時代になって(Flashがないので・・)一気に普及した方法です。
YoutubeLiveもiOS対応になるのがこのあたりで時間かかった感じだったと思います。
videoタグにもとうとうHTTP Live Streamingがやってきたかというのが胸熱。

0 件のコメント:

コメントを投稿