2014年2月21日 星期五

ChromeCast 分析 (1) - Search

ChromeCast 介紹:
ChromeCast是一個USB大小的接收裝置,可以放在具有HDMI輸出的電視螢幕上.
它可以讓User從Client端選擇要播放的內容,像是影片或音樂,
也可以透過Chrome的Browser 鏡像映射畫面到ChromeCast的Device上.

ChromeCast 和 Chrome Browser 之間都是透過網頁的通訊協定再作溝通的.
我想是因為google是網頁技術起家的吧,而且透過Web的技術,
User experience 提升很多(在網路通順的情況下)

ChromeCast 硬體:

由於不論是成本或是架構,軟體和硬體的配合也很重要.
所以就順便看了一下ChromeCast 的硬體,
它是採用Marvell 88DE3005,但由於88DE3005 沒有公開的資訊,
因此可以拿88DE3100的架構圖來參考.


ChromeCast Browser:
ChromeCast本身是一個接收端,所以需要一個負責控制端,
如果選擇Chrome Browser當控制端,
需要另外下載Chrome extension才能使用

ChromeCast 模擬器(Android):
由於ChromeCast 在台灣還不容易買到,但上網搜尋了一下,
Android App 有模擬器可以用,叫做Cheapcast.
用起來跟實體的ChromeCast差不多,但Protocol接收的方式還是有些差別.
一開始可以先拿Cheapcast做開發測試.

ChromeCast protocol (DAIL):

搜尋一下ChromeCast 和 Chrome Broswer之間的通訊協定,
可以找到ChromeCast是使用一種叫做DAIL的通訊協定.
DIAL的全名叫做 DIscovery And Launch protocol specification,
從字義上來看,它是Chrome Broswer去搜尋和啟動ChromeCast的通訊協定.

DAIL通訊協定只負責到Launch 完ChromeCast裡面的APP就結束了.
剩下的控制部分是用Web Socket的RAMP協定做溝通.

DAIL是架構在SSDP (Simple Service Discovery Protocol)的基礎上,
在組合起來的通訊協定.
所以在一開始,Chrome Broswer是透過UPnP的M-Search做Broadcast,
透過Wi-Fi 對同網段的設備發出M-Search.

如果有ChromeCast的設備,在接收到M-search的封包時,
就會回應自身的資訊和IP位置給Chrome Broswer.回應的資訊裡面包含一些設備描述,和詳細資訊的XML檔案. Search的架構圖: 

M-Search的格式如下:

回應的XML描述如下:

這時候就完成對ChromeCast的搜尋,
並且可以得到ChromeCast的目標資訊,
接下來就是要Launch ChromeCast 內部的App.

沒有留言:

張貼留言