Post on 07-Jul-2015
description
ストリーミングのげんざい
Tetsuya Morimoto
“No man ever steps in the same river twice”~ Heraclitus
2014-11-11
がいよう
● 技術背景
– ビデオコーデックと特許料
– Adaptive bitrate streaming● HTTP ストリーミングの進化
● まとめStreaming media
RTMPHTTP
Adaptive bitrate streaming
Progressive download
HTTP Dynamic Streaming
HTTP Live Streaming
Smooth Streaming
MPEG-DASH
こーでっく
こーでっく
● 動画ファイルには様々なフォーマットがある
– mp4, flv, webm, mov, wmv, 3gp, ...● 動画ファイルを利用する場合、
– 提供する側があるフォーマットでエンコードして、– 再生する側があるフォーマットでデコードする
ことで内容を見聞きできる● 何のためにエンコードするか?
– 圧縮してサイズを小さくするため● エンコード ⇔ デコードが双方向にできる装置や
ソフトウェアまたはアルゴリズムのことをコーデックと呼ぶ
えいちにーろくよん
● 広範囲に利用されているビデオコーデックの規格
– いろんなベンダーが参加して作ったため、多数の特許権が含まれている● パテントプールである MPEG LA に特許料を支払わないといけない
– エンドユーザーが無料で視聴できるインターネットビデオのみ免除
(YouTube のようなサービス )● コーデック変換が発生する箇所で特許料の支払い義務が生じる
– ストリーミング/トランスコードサーバー、ブラウザ、メディアプレイヤー
– 一般的に H.264 を扱うプロダクトを販売/購入する場合、
その販売/購入代金にその特許料も含まれる● その販売企業が MPEG LA に特許料を支払う
– H.264 の特許料はキャップ制で、上限額を支払えば不特定多数へ提供できる
● Adobe Flash Player● Cisco OpenH264
えいちにーろくよんのとっきょりょう
● MPEG LA の AVC/H.264 情報
– AVC Patent Portfolio License Briefing● ライセンスの要約をまとめた資料● Manufacture and Sale の価格帯も書いてある● あくまで 2008 年時点での参考情報
– いまのライセンスとは違うかもしれない● 特許料は年間キャップ制
– この資料では $6.5 million per year 2011-2015– H.264 をプロダクトで商用利用するには
MPEG LA とライセンスを締結しないといけない
おーぷんえいちにーろくよん
● Cisco のOpenH264プロジェクトとは?
– Cisco 曰く、WebRTC を促進する目的らしい
– Cisco がMPEG LA へ特許料を支払っているため、
Cisco がビルドしたバイナリを使ってライセンス条項に従えば、特許料の支払いは免除される
– オープンソースとしてgithub でホスティング : openh264● RELEASEファイルにライブラリのダウンロード先がある
– 2014-05-23 1.0.0 リリース– 2014-07-09 1.1.0 リリース– 2014-10-28 1.2.0 リリース
● ライセンスについて– サーバーでの商用利用 : License question on server-side for commercial use– クライアントでの商用利用 : License question.
– 2014-10-14 シスコの OpenH264 が Firefox の一部に
● Ericsson はOpenH264 を利用するWebRTC 実装をオープンソース化● Mozilla
– 2014-10-14 OpenH264 Now in Firefox● Firefox33 からOpenH264 を組み込み
うぇぶえむ
● Google の WebMプロジェクトとは?
– 2010 年から Google が開発
– open-source, royalty-free, Web に特化したフォーマット
– コンテナー : webm (Matroskaのサブセット )● ビデオコーデック : VP8→VP9● オーディオコーデック : Vorbis
– 姉妹プロジェクトとして画像フォーマット : webp
– YouTube にアップロードされた動画は webm でエンコードされる● 普及を妨げる要因?
– MPEG LA が H.264 をインターネットの無料動画に限り無料に変更
– VP8 が MPEG LA の管理する特許に抵触の可能性
● 2013-03-07: Google and MPEG LA make a deal over VP8 codec– IE 、 Safari で未サポート (別途プラグインが必要 )
ビデオとオーディオの圧縮技術はそれぞれ違うためそれらを1つにまとめることを「多重化」すると言うまた、このまとめたものをコンテナーと呼ぶ
すとりーみんぐ
はやり
● Streaming 方式 ( リアル・ストリーミング )
– RTMP によるストリーミング
– キャッシュが端末に残らない (CDN には残るかも? )– 専用サーバー/クライアントが必要
– (相対的に ) 帯域制御やサービス品質の保証が容易
● Progressive download 方式 (擬似ストリーミング )
– HTTP によるストリーミング ( ダウンロード )– 端末や途中経路にキャッシュとしてファイルが残る
– Web サーバーから配信、ブラウザ (html5対応 ) で再生できる
● Web アプリのノウハウでスケールアウトが容易● Adaptive bitrate streaming 方式
– HTTP ストリーミングの進化系
– デバイスや帯域に適したストリーミングを提供
HTTP ストリーミング
HTTP ストリーミング
あらかじめそれぞれのデバイス、ビットレートにトランスコードした
メディアファイルを用意する1つのメディアファイルを
リアルタイムエンコードする
さいきん
● Adobe
– 2009 年RTMP の仕様を公開する
● CDN サービスが可能となり、Flash 技術がエンタープライズ分野でも利用される– 2010 年HTTP Dynamic Streaming (HDS) を提供 (FMS 4.0)
– 2011 年HLS をサポート (Flash Player 11+)● Apple
– 2009 年HTTP Live Streaming (HLS) を提供
● 対応ビデオコーデックはH.264 のみ● Google
– 2010 年WebM プロジェクトを開始
● royalty-free なオープンなストリーミングの世界– 2011 年Android 3.0 Honeycomb でHLS をサポート (スマートフォン 4.0)
● Microsoft
– 2010 年Smooth Streaming を提供 (IIS Media Service 4.0)
Red5: FMS の OSS 実装2005 年プロジェクトを開始2009 年に 0.8.0 をリリース2012 年に 1.0 をリリース
Wowza: FMS の競合プロダクト2007 年 1.0 をリリース2009 年 2.0 をリリース (HTTP ストリーミング開始 )
Adaptive bitrate streaming2010 年ぐらいから始まった
html52008 年 First Public Working Draft2011 年 Last Call
Mozilla (Firefox)2010 WebM サポートを支持2012 スマートデバイスで H.264 サポート開始2014.10 H.264 サポート (OpenH264)
えいちえるえす
● HTTP Live Streaming ドキュメント
– Apple が提唱/実装
– IETF で標準化が進められている
● HTTP Live Streaming draft-pantos-http-live-streaming–現時点では Draft 14 (2014-10-14)– 6ヶ月ごとに更新されるため、標準化が決まるのはまだまだ先になりそう?
– プレイリストと小さく分割したセグメントファイルを使う● プレイリスト : M3U フォーマット (m3u8)
– M3U を UTF-8 でエンコードしたのを指して .m3u8 という拡張子で保存する● コンテナー : MPEG-2 TS
–世界的に採用されてる地上波/BS デジタル放送の規格、日本も同様– ビデオコーデックやオーディオコーデックについては IETF の Draft には書いてない–余談 : MatchStick Developer's Guideから未来の展望?
– AES を使った暗号化の仕組みもある
● HTTP 上で暗号化されたファイルを送信
小さく分割したメディアファイルをプレイリストから順番に再生
Adobe社の戦略?2009 年 RTMP仕様公開2010 年 FMS4.0 をリリース - HDS をサポート
※ Flash Player 11以上 H.264 をサポート (IE6 は 10 まで )
すまーとでばいす
● HTTP Live Streaming 対応状況 by JW Player● サポートしているストリーミング方式
– iPhone/iPad● iOS 3.0 (iPhone OS) から HLS をサポート● 但し、 m3u フォーマットの拡張タグなどでバージョン間の違いはある
– Example Playlist Files for use with HTTP Live Streaming– Android
● 2.3 Gingerbread– WebM フォーマットをサポート
● 3.0 Honeycomb– HLS をサポート (MPEG4/H.264)
– Windows Phone/Tablet● Windows8
– Smooth Streaming をサポート (MPEG4/H.264)
プレイリストの中にプレイリストを書いたりして何でもできる
ぱそこんぶらうざ
● http://caniuse.com/
● ブラウザが <video> タグでサポートしているフォーマット
IE8 IE9+ Chrome Firefox Safari Opera
MPEG4/H.264 ☓ ○ ○ ○ ○ ☓
WebM ☓ ☓ ○ ○ ☓ ○
Ogg ☓ ☓ ○ ○ ☓ ○
・ IE8 は Flash player または Silverlight を使う以外にストリーミングする方法はない・ IE9+ で WebMプラグインをインストールすれば WebM フォーマットが再生可能・ Safari のみ、 HLS をブラウザがサポートしている
すまーとでばいすとぱそこんぶらうざ
● http://caniuse.com/
● スマートデバイスとパソコンを一緒くたにしてみた
IE8(PC)
IE9+(PC)
Chrome(PC)
Firefox(PC)
Safari(PC)
Opera(PC)
iOSAndroid
2.3Android
4.0+Windows
8+
MPEG4/H.264 ☓ ○ ○ ○ ○ ☓ ○ ☓ ○ ○WebM ☓ ☓ ○ ○ ☓ ○ ☓ ○ ○ ☓Ogg ☓ ☓ ○ ○ ☓ ○ ☓ ☓ ☓ ☓HLS ☓ ☓ ☓ ☓ ○ ☓ ○ ☓ ○ ☓
要件に応じて最適なフォーマット/方式を選択しないといけない・ IE8 は <video> タグをサポートしない・ Safari は WebM(VP8) をサポートしない
ぶらうざのもんだい
● HLS の MPEG-2 TS コンテナーにビデオコーデックの指定はない
– iOS (Safari) が VP8 (WebM) をサポートしない
– 事実上、 HLS のビデオコーデックは H.264 のみ
● IE8 ( サポートは 2016 年 1月まで ) が <video> タグをサポートしない
– ストリーミングするには Flash Player または Silverlightを使うしかない
めでぃあぷれいやー
● Video.js
– html5 と swf プレイヤーを備えたマルチブラウザ/マルチデバイス対応
● PC 向け : IE8+ 、 Firefox 、 Chrome● スマートデバイス : iOS 、 Android 、 Windows Tablet/SmartPhone
– ライセンス : Apache License 2.0– プラガブルなアーキテクチャ
● hls/mediasource プラグインで HLS に対応– flashhlsプレイヤーの 1 つ ( 要 flash)
● MPEG-DASH の開発も最近始まった– videojs-osmf– DASH Everywhere-ish
– 実績● Google Media Frameworkのプレイヤーに採用● twitpic や airbnb などでも採用されているらしい
なぜふらっしゅなのか
● PC 向けブラウザは多くが HLS をサポートしていない
● (2014-11 時点で ) HLS をサポートするのは Safari のみ
– 再生する (H.264 デコード ) には特許問題の不透明感
– ブラウザベンダーの思惑?● Windows は Smooth Streaming あるし● Chrome/Firefox は WebM を推進しているし
● そうだ!Flash Player を使おう
– マルチプラットフォーム/ブラウザで動作し、
H.264 デコードの特許問題にも抵触しない唯一のソリューション
● IE8 が <video> タグに対応していない問題も解決?
MPEG-DASH の普及まで
びでおじぇーえすのあーきてくちゃ
● video.js
– プレイヤー本体、ブラウザの<video> タグを使う
● video-js-swf
– Flash Player を使うswf プレイヤーの実装
– RTMP /HTTP の両方をサポート
● videojs-contrib-hls
– HLS をサポートするプラグイン● クライアント駆動のビットレートスイッチをサポート● 但し、 IE のサポートは10+ ( 要Typed Arrays, Cross-Origin Resource Sharing)
– プレイリストのパースや h264 ストリームを扱う機能を提供
● videojs-contrib-media-source
– Media Source Extensionsを扱うためのプラグイン
● video 要素のデータを直接的に扱う● ソースから読み込んだデータをbase64 でエンコードして直接swf へバッファとして invoke する
– まだまだ荒削りな実装にみえる (- -#このバッファリングがピーキー、特に IE10
ぼくのかんがえたさいきょうの
● ストリーミングサーバー
– Web サーバーをスケールアウトする形態で HLS を提供
● 将来的には MPEG-DASH へ移行– RTMP ストリーミングは以下の要件がない限り使わない
● 端末にキャッシュを残せない● IE6 がサポート対象である (Flash Player 10 は HTTP ストリーミングを未サポート )
– IE8 サポートが不要なら WebM を提供するのも 1 つの方法
● IE 、 Safari は WebM プラグインのインストールが必要● ブラウザ/各種デバイス
– flashhls で PC /スマートデバイス全て HLS でストリーミング再生
● MPEG-DASH で Windows Tablet/SmartPhone も– HLS に対応できないブラウザ (IE8 や IE9 など ) はどうする?
● MPEG4/H.264 を Flash Player で再生 ( なくなるのは時間の問題 )● 要件/構成によっては WebM で代用することも
( いまの時点では )HLS を中心に据え、対応できないケースを
限定的に対応
Flash Player は必須
だっしゅ
● dashif.org
– Dynamic Adaptive Streaming over HTTP, aka MPEG-DASH
– Adobe HDS とMicrosoft Smooth Streaming はこれに移行
– ベンダーロックインではないAdaptive bitrate streaming HLS⇔
– DRM (デジタル著作権管理 )も扱える● 標準化
– 2012-03: 1st Edition of MPEG-DASH, ISO/IEC 23009-1:2012
– 2014-05: 2nd Edition of MEPG-DASH, ISO/IEC 23009-1:2014● HTML5 Media Source Extensions からも使えるらしい
● コンテナー : MP4, WebM, MPEG-2 TS など
● ISO base media file format (MP4も含む )● Matroska/WebM in MPEG DASH
● OS/ブラウザベンダーの動向
– Apple: Safari8+(Yosemite), Adobe Primetime Support for MPEG-DASH
– Google: Android 4.4から対応、Chrome23+
– Mozilla: Firefox31+(Partial support), DASH Adaptive Streaming for HTML 5 Video (バグ修正中? )
– Microsoft: IE11+, Building a simple MPEG-DASH streaming player
– Opera: 20以降 (Only WebM? )
iOS は?
標準化はされているからこれからの普及待ち
まとめ
● ストリーミングプロトコルは HTTP 一択へ
– Adaptive bitrate streaming はいまのところ 2 つに集約化
● HTTP Live Streaming● MPEG-DASH (将来的にはこっち? )
● H.264 の特許問題はこれらを使うことで一応は回避可能
– OpenH264 や Flash Player などエンコード/デコード対応
– 但し、アプリの作り込みが必要● MPEG-DASH で WebM が普及?
– HLS のコンテナー : MPEG-2 TS● ビデオコーデック : 仕様にはないけど、事実上は H.264
– MPEG-DASH のコンテナー : MP4, WebM, MPEG-2 TS など
– WebRTC のコーデック : H.264 or VP8(VP9) ?
HLS の展望は Apple次第
OS/ ブラウザベンダーの対応次第