ストリーミングのげんざい

22
ストリーミングのげんざい Tetsuya Morimoto “No man ever steps in the same river twice” ~ Heraclitus 2014-11-11

description

ストリーミングの技術背景の調査資料です。

Transcript of ストリーミングのげんざい

Page 1: ストリーミングのげんざい

ストリーミングのげんざい

Tetsuya Morimoto

“No man ever steps in the same river twice”~ Heraclitus

2014-11-11

Page 2: ストリーミングのげんざい

がいよう

● 技術背景

– ビデオコーデックと特許料

– Adaptive bitrate streaming● HTTP ストリーミングの進化

● まとめStreaming media

RTMPHTTP

Adaptive bitrate streaming

Progressive download

HTTP Dynamic Streaming

HTTP Live Streaming

Smooth Streaming

MPEG-DASH

Page 3: ストリーミングのげんざい

こーでっく

Page 4: ストリーミングのげんざい

こーでっく

● 動画ファイルには様々なフォーマットがある

– mp4, flv, webm, mov, wmv, 3gp, ...● 動画ファイルを利用する場合、

– 提供する側があるフォーマットでエンコードして、– 再生する側があるフォーマットでデコードする

ことで内容を見聞きできる● 何のためにエンコードするか?

– 圧縮してサイズを小さくするため● エンコード ⇔ デコードが双方向にできる装置や

ソフトウェアまたはアルゴリズムのことをコーデックと呼ぶ

Page 5: ストリーミングのげんざい

えいちにーろくよん

● 広範囲に利用されているビデオコーデックの規格

– いろんなベンダーが参加して作ったため、多数の特許権が含まれている● パテントプールである MPEG LA に特許料を支払わないといけない

– エンドユーザーが無料で視聴できるインターネットビデオのみ免除

(YouTube のようなサービス )● コーデック変換が発生する箇所で特許料の支払い義務が生じる

– ストリーミング/トランスコードサーバー、ブラウザ、メディアプレイヤー

– 一般的に H.264 を扱うプロダクトを販売/購入する場合、

その販売/購入代金にその特許料も含まれる● その販売企業が MPEG LA に特許料を支払う

– H.264 の特許料はキャップ制で、上限額を支払えば不特定多数へ提供できる

● Adobe Flash Player● Cisco OpenH264

Page 6: ストリーミングのげんざい

えいちにーろくよんのとっきょりょう

● 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 とライセンスを締結しないといけない

Page 7: ストリーミングのげんざい

おーぷんえいちにーろくよん

● 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 を組み込み

Page 8: ストリーミングのげんざい

うぇぶえむ

● 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つにまとめることを「多重化」すると言うまた、このまとめたものをコンテナーと呼ぶ

Page 9: ストリーミングのげんざい

すとりーみんぐ

Page 10: ストリーミングのげんざい

はやり

● Streaming 方式 ( リアル・ストリーミング )

– RTMP によるストリーミング

– キャッシュが端末に残らない (CDN には残るかも? )– 専用サーバー/クライアントが必要

– (相対的に ) 帯域制御やサービス品質の保証が容易

● Progressive download 方式 (擬似ストリーミング )

– HTTP によるストリーミング ( ダウンロード )– 端末や途中経路にキャッシュとしてファイルが残る

– Web サーバーから配信、ブラウザ (html5対応 ) で再生できる

● Web アプリのノウハウでスケールアウトが容易● Adaptive bitrate streaming 方式

– HTTP ストリーミングの進化系

– デバイスや帯域に適したストリーミングを提供

HTTP ストリーミング

HTTP ストリーミング

あらかじめそれぞれのデバイス、ビットレートにトランスコードした

メディアファイルを用意する1つのメディアファイルを

リアルタイムエンコードする

Page 11: ストリーミングのげんざい

さいきん

● 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)

Page 12: ストリーミングのげんざい

えいちえるえす

● 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 まで )

Page 13: ストリーミングのげんざい

すまーとでばいす

● 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)

プレイリストの中にプレイリストを書いたりして何でもできる

Page 14: ストリーミングのげんざい

ぱそこんぶらうざ

● http://caniuse.com/

● ブラウザが <video> タグでサポートしているフォーマット

IE8 IE9+ Chrome Firefox Safari Opera

MPEG4/H.264 ☓ ○ ○ ○ ○ ☓

WebM ☓ ☓ ○ ○ ☓ ○

Ogg ☓ ☓ ○ ○ ☓ ○

・ IE8 は Flash player または Silverlight を使う以外にストリーミングする方法はない・ IE9+ で WebMプラグインをインストールすれば WebM フォーマットが再生可能・ Safari のみ、 HLS をブラウザがサポートしている

Page 15: ストリーミングのげんざい

すまーとでばいすとぱそこんぶらうざ

● 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) をサポートしない

Page 16: ストリーミングのげんざい

ぶらうざのもんだい

● HLS の MPEG-2 TS コンテナーにビデオコーデックの指定はない

– iOS (Safari) が VP8 (WebM) をサポートしない

– 事実上、 HLS のビデオコーデックは H.264 のみ

● IE8 ( サポートは 2016 年 1月まで ) が <video> タグをサポートしない

– ストリーミングするには Flash Player または Silverlightを使うしかない

Page 17: ストリーミングのげんざい

めでぃあぷれいやー

● 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 などでも採用されているらしい

Page 18: ストリーミングのげんざい

なぜふらっしゅなのか

● PC 向けブラウザは多くが HLS をサポートしていない

● (2014-11 時点で ) HLS をサポートするのは Safari のみ

– 再生する (H.264 デコード ) には特許問題の不透明感

– ブラウザベンダーの思惑?● Windows は Smooth Streaming あるし● Chrome/Firefox は WebM を推進しているし

● そうだ!Flash Player を使おう

– マルチプラットフォーム/ブラウザで動作し、

H.264 デコードの特許問題にも抵触しない唯一のソリューション

● IE8 が <video> タグに対応していない問題も解決?

MPEG-DASH の普及まで

Page 19: ストリーミングのげんざい

びでおじぇーえすのあーきてくちゃ

● 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

Page 20: ストリーミングのげんざい

ぼくのかんがえたさいきょうの

● ストリーミングサーバー

– 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 は必須

Page 21: ストリーミングのげんざい

だっしゅ

● 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 は?

標準化はされているからこれからの普及待ち

Page 22: ストリーミングのげんざい

まとめ

● ストリーミングプロトコルは 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/ ブラウザベンダーの対応次第