https://www.chromium.org/developers/design-documents/media-router
メディアルータとウェブプレゼンAPI
メディアルータはChromeのコンポーネントで、ブラウザ外にあるコンテントをレンダリングするためクライアント同士を結びつける。ブラウザをmedia sourceと呼び、そのコンテントをレンダリングできる端点をmedia sinkと呼ぶ。メディアソースとメディアシンクがリンクされると(一般的にはユーザの許可が必要)、メディアルートが作成され、クライアントとシンクでの2方向のメッセージングが可能になる。メディアルートによりクライアントはメッセージを介してピアツーピアでシンクとやり取りできる(WebRTCやCast Streamingなど通常「ミラーリング」と呼ばれるものを経由して)。メディアルートを使ってリモートでレンダリングされたメディアをピアツーピアセッション無しで制御する「flinging」も可能である。メディアルートはユーザやクライアントや要求で終了し、それ以降はアクセスできない。
ウェブプレゼンAPIによりウェブアプリはそのコンテントを2番めのスクリーン(有線、無線を問わず)で描画することを要求できる。コンテントはローカルでレンダリングされスクリーンに送られるかもしれないし、リモートでレンダリングされるかもしれない。ウェブアプリはコンテントを2方向のメッセージングで制御できる。
Blinkの一部ではないメディアルータはデスクトップのChromeとChromeOSのみで実装されることに注意すること。プレゼンAPIの機能はAndroidのChromeではそれと似たようなプラットフォームのコンポーネント(Android Media Route Providerフレームワークなど)をつかって実装される予定である。
目標
このプロジェクトの目標:
- 多くのクライアントからのメディアシンク利用を可能にする:プレゼンAPI経由、Chromeアプリ経由、ブラウザ本体経由、ChromeOSのシステムコール経由のウェブアプリ
- ローカルでレンダリングされたコンテントのミラーリングから外部スクリーンへのサポート。外部スクリーンはオンスクリーンやオフスクリーンのタブ、Chromeアプリのウインドウ、そしてシステムデスクトップ。
- HTML5ドキュメントをリモートのレンダリングデバイスへ「flinging」することをサポート
- デスクトップやAndroidのCast Chrome Sender SDKを拡張のインストールなしでサポート
- 追加のMedia Route Providerの実装による新しいタイプのメディアシークをChromeへ追加することを許可
以下は今は目標ではないがそのうちに目標になるかもしれないもの:
- ローカルコンテントの多数のシンクへの同時マルチキャスト
- サードパーティのメディアルートプロバイダ(JavascriptやNaCl内)のサポートと実行時のメディルートプロバイダのインストールのサポート
- メディアのレンダリングが主目的ではないシンクのサポート
概観
メディアルータは4つの部分に分かれる。
- Chrome Media RouterはC++API経由のインプロセスで公開されたサービスで、外部プロセスへは2つのMojoインターフェース(PresentationインタフェースとMedia Router APIインタフェース)を経由して公開される:その仕事はクライアントからのメディアシーク利用可能性問い合わせの返答、メディアルートの構築と破棄、メッセージングを使ったメディアルート制御。Media Router Dialog制御や、Media Routerコンポーネント拡張のための多くの関数のデリゲートも行う。
- Media Router拡張は外部コンポーネント拡張で、メディアシンクと対話する。コンポーネント拡張はCastやDIALデバイス利用のサポートをすることになるが、時間の経過とともに他のタイプのシンクも追加される。
The component extension interacts with the Chrome Media Router via the Media Router API Mojo service, and uses some chrome.* platform APIs, such as chrome.dial, chrome.cast.channel, and chrome.mdns to implement network level interaction with Cast and DIAL devices.
3.Users interact with the Chrome Media Router through the Media Router Dialog. This WebUI component allows users to choose the destination media sink for new media routes and view and stop active media routes. It may be pulled up by the user clicking the Cast icon in the browser toolbar, or at the request of a Web application via the Presentation API. 4.The Presentation Mojo interface acts as a bridge between the Chrome Media Router and the Blink implementation of the Presentation API (launch bug).
アーキテクチャ
以下の図は上で記したコンポーネントのアーキテクチャである。