Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

69,452 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. ストリーミングのげんざい “No man ever steps in the same river twice” ~ Heraclitus 2014-11-11 Tetsuya Morimoto
  2. 2. がいよう ● 技術背景 – ビデオコーデックと特許料 – Adaptive bitrate streaming ● HTTP ストリーミングの進化 ● まとめ Streaming media RTMP HTTP Progressive download Adaptive bitrate streaming HTTP Live Streaming HTTP Dynamic Streaming Smooth Streaming MPEG-DASH
  3. 3. こーでっく
  4. 4. こーでっく ● 動画ファイルには様々なフォーマットがある – mp4, flv, webm, mov, wmv, 3gp, ... ● 動画ファイルを利用する場合、 – 提供する側があるフォーマットでエンコードして、 – 再生する側があるフォーマットでデコードする ことで内容を見聞きできる ● 何のためにエンコードするか? – 圧縮してサイズを小さくするため ● エンコード ⇔ デコードが双方向にできる装置や ソフトウェアまたはアルゴリズムのことをコーデックと呼ぶ
  5. 5. えいちにーろくよん ● 広範囲に利用されているビデオコーデックの規格 – いろんなベンダーが参加して作ったため、多数の特許権が含まれている ● パテントプールであるMPEG LAに特許料を支払わないといけない – エンドユーザーが無料で視聴できるインターネットビデオのみ免除 (YouTubeのようなサービス) ● コーデック変換が発生する箇所で特許料の支払い義務が生じる – ストリーミング/トランスコードサーバー、ブラウザ、メディアプレイヤー – 一般的にH.264を扱うプロダクトを販売/購入する場合、 その販売/購入代金にその特許料も含まれる ● その販売企業がMPEG LAに特許料を支払う – H.264の特許料はキャップ制で、上限額を支払えば不特定多数へ提供できる ● Adobe Flash Player ● Cisco OpenH264
  6. 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 とライセンスを締結しないといけない
  7. 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を組み込み
  8. 8. うぇぶえむ ● GoogleのWebMプロジェクトとは? – 2010年からGoogleが開発 – open-source, royalty-free, Webに特化したフォーマット – コンテナー: webm (Matroskaのサブセット) ● ビデオコーデック: VP8→VP9 ● オーディオコーデック: Vorbis ビデオとオーディオの圧縮技術はそれぞれ違うため それらを1つにまとめることを「多重化」すると言う また、このまとめたものをコンテナーと呼ぶ – 姉妹プロジェクトとして画像フォーマット: 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で未サポート (別途プラグインが必要)
  9. 9. すとりーみんぐ
  10. 10. はやり ● Streaming方式 (リアル・ストリーミング) – RTMPによるストリーミング – キャッシュが端末に残らない (CDNには残るかも?) – 専用サーバー/クライアントが必要 – (相対的に)帯域制御やサービス品質の保証が容易 ● Progressive download方式 (擬似ストリーミング) – HTTPによるストリーミング(ダウンロード) – 端末や途中経路にキャッシュとしてファイルが残る – Webサーバーから配信、ブラウザ(html5対応)で再生できる ● Webアプリのノウハウでスケールアウトが容易 ● Adaptive bitrate streaming方式 – HTTPストリーミングの進化系 – デバイスや帯域に適したストリーミングを提供 HTTP ストリーミング HTTP ストリーミング あらかじめそれぞれのデバイス、 ビットレートにトランスコードした メディアファイルを用意する 1つのメディアファイルを リアルタイムエンコードする
  11. 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 streaming 2010年ぐらいから始まった html5 2008年First Public Working Draft 2011年Last Call Mozilla (Firefox) 2010 WebM サポートを支持 2012 スマートデバイスで H.264 サポート開始 2014.10 H.264 サポート (OpenH264)
  12. 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 まで)
  13. 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)
  14. 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 をブラウザがサポートしている
  15. 15. すまーとでばいすとぱそこんぶらうざ ● http://caniuse.com/ ● スマートデバイスとパソコンを一緒くたにしてみた IE8 (PC) IE9+ (PC) Chrome (PC) Firefox (PC) Safari (PC) Opera (PC) iOS Android 2.3 Android 4.0+ Windows 8+ MPEG4 /H.264 ☓ ○ ○ ○ ○ ☓ ○ ☓ ○ ○ WebM ☓ ☓ ○ ○ ☓ ○ ☓ ○ ○ ☓ Ogg ☓ ☓ ○ ○ ☓ ○ ☓ ☓ ☓ ☓ HLS ☓ ☓ ☓ ☓ ○ ☓ ○ ☓ ○ ☓ 要件に応じて最適なフォーマット/方式を選択しないといけない ・IE8は<video> タグをサポートしない ・SafariはWebM(VP8) をサポートしない
  16. 16. ぶらうざのもんだい ● HLSのMPEG-2 TS コンテナーにビデオコーデックの指定 はない – iOS (Safari)がVP8 (WebM) をサポートしない – 事実上、HLSのビデオコーデックはH.264のみ ● IE8 (サポートは2016年1月まで)が<video> タグをサ ポートしない – ストリーミングするにはFlash Player またはSilverlight を使うしかない
  17. 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などでも採用されているらしい
  18. 18. なぜふらっしゅなのか ● PC向けブラウザは多くがHLSをサポートしていない ● (2014-11時点で) HLSをサポートするのはSafariのみ – 再生する(H.264デコード)には特許問題の不透明感 – ブラウザベンダーの思惑? ● WindowsはSmooth Streamingあるし ● Chrome/FirefoxはWebMを推進しているし ● そうだ! Flash Playerを使おう – マルチプラットフォーム/ブラウザで動作し、 H.264デコードの特許問題にも抵触しない唯一のソリューション ● IE8が<video>タグに対応していない問題も解決? MPEG-DASHの普及まで
  19. 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
  20. 20. ぼくのかんがえたさいきょうの ● ストリーミングサーバー – Webサーバーをスケールアウトする形態でHLSを提供 ● 将来的にはMPEG-DASHへ移行 – RTMPストリーミングは以下の要件がない限り使わない (いまの時点では) HLS を中心に据え、 対応できないケースを 限定的に対応 ● 端末にキャッシュを残せない ● IE6がサポート対象である (Flash Player 10はHTTPストリーミングを未サポート) – IE8サポートが不要ならWebMを提供するのも1つの方法 ● IE、SafariはWebMプラグインのインストールが必要 ● ブラウザ/各種デバイス – flashhlsでPC/スマートデバイス全てHLSでストリーミング再生 ● MPEG-DASHでWindows Tablet/SmartPhoneも – HLSに対応できないブラウザ (IE8やIE9など)はどうする? Flash Playerは必須 ● MPEG4/H.264をFlash Playerで再生 (なくなるのは時間の問題) ● 要件/構成によってはWebMで代用することも
  21. 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 iOSは? – 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?)
  22. 22. まとめ ● ストリーミングプロトコルはHTTP一択へ – Adaptive bitrate streamingはいまのところ2つに集約化 ● HTTP Live Streaming ● MPEG-DASH (将来的にはこっち?) HLSの展望はApple次第 ● H.264の特許問題はこれらを使うことで一応は回避可能 – OpenH264やFlash Playerなどエンコード/デコード対応 – 但し、アプリの作り込みが必要 ● MPEG-DASHでWebMが普及? – HLSのコンテナー: MPEG-2 TS OS/ ブラウザベンダーの対応次第 ● ビデオコーデック: 仕様にはないけど、事実上はH.264 – MPEG-DASHのコンテナー: MP4, WebM, MPEG-2 TSなど – WebRTCのコーデック: H.264 or VP8(VP9) ?

×