Android Wi-Fi Display(Miracast)介紹
2012年11月中旬,Google發佈了Android 4.2。雖然它和Android 4.1同屬Jelly Bean系列,但卻添加了很多新的功能。其中,在顯示部分,Android 4.2在Project Butter基礎上再接再厲,新增了對Wi-Fi Display功能的支持。由此也導致整個顯示架構發生了較大的變化。
本文首先介紹Wi-Fi Display的背景知識,然後再結合代碼對Android 4.2中Wi-Fi Display的實現進行介紹。
一背景知識介紹
Wi-Fi Display經常和Miracast聯繫在一起。實際上,Miracast是Wi-Fi聯盟(Wi-Fi Alliance)對支持Wi-Fi Display功能的設備的認證名稱。通過Miracast認證的設備將在最大程度內保持對Wi-Fi Display功能的支持和兼容。由此可知,Miracast考察的就是Wi-Fi Display(本文後續將不再區分Miracast和Wi-Fi Display)。而Wi-Fi Display的核心功能就是讓設備之間通過Wi-Fi無線網絡來分享視音頻數據。以一個簡單的應用場景爲例:有了Wi-Fi Display後,手機和電視機之間可以直接藉助Wi-Fi,而無需硬連線(如HDMI)就可將手機中的視頻投遞到TV上去顯示[①]。以目前智能設備的發展趨勢來看,Wi-Fi Display極有可能在較短時間內幫助我們真正實現多屏互動。
從技術角度來說,Wi-Fi Display並非另起爐竈,而是充分利用了現有的Wi-Fi技術。圖1所示爲Wi-Fi Display中使用的其他Wi-Fi技術項。
圖1 Miracast的支撐體系結構
由圖1可知,Miracast依賴的Wi-Fi技術項[②]有:
- Wi-Fi Direct,也就是Wi-Fi P2P。它支持在沒有AP(Access Point)的情況下,兩個Wi-Fi設備直連並通信。
- Wi-Fi Protected Setup:用於幫助用戶自動配置Wi-Fi網絡、添加Wi-Fi設備等。
- 11n/WMM/WPA2:其中,11n就是802.11n協議,它將11a和11g提供的Wi-Fi傳輸速率從56Mbps提升到300甚至600Mbps。WMM是Wi-Fi Multimedia的縮寫,是一種針對實時視音頻數據的QoS服務。而WPA2意爲Wi-Fi Protected Acess第二版,主要用來給傳輸的數據進行加密保護。
上述的Wi-Fi技術中,絕大部分功能由硬件廠商實現。而在Android中,對Miracast來說最重要的是兩個基礎技術:
- Wi-Fi Direct:該功能由Android中的WifiP2pService來管理和控制。
- Wi-Fi Multimedia:爲了支持Miracast,Android 4.2對MultiMedia系統也進行了修改。
下邊我們對Miracast幾個重要知識點進行介紹,首先是拓撲結構和視音頻格式方面的內容。
Miracast一個重要功能就是支持Wi-Fi Direct。但它也考慮了無線網絡環境中存在AP設備的情況下,設備之間的互聯問題。讀者可參考如圖2所示的四種拓撲結構。
圖2 Miracast的四種拓撲結構
圖2所示內容比較簡單,此處就不再詳述。另外,在Wi-Fi Display規範中,還存在着Source將Video和Audio內容分別傳送給不同Render Device的情況。感興趣的讀者可參考Wi-Fi Display技術規範。
另外,Miracast對所支持的視音頻格式也進行了規定,如表1所示。
表1 Miracast 視音頻格式支持
分辨率 |
17種 CEA格式,分辨率從640*480到1920*1080,幀率從24到60 29種VESA格式,分辨率從800*600到1920*1200,幀率從30到60 12種手持設備格式,分辨率從640*360到960*540,幀率從30到60 |
視頻 |
H.264高清 |
音頻 |
必選:LPCM 16bits,48kHz採樣率,雙聲道 可選: LPCM 16bits,44.1kHz採樣率,雙聲道 Advanced Audio coding Dolby Advanced Codec 3 |
最後,我們簡單介紹一下Miracast的大體工作流程。Miracast以session爲單位來管理兩個設備之間的交互的工作,主要步驟包括(按順序):
- Device Discovery:通過Wi-Fi P2P來查找附近的支持Wi-Fi P2P的設備。
- Device Selection:當設備A發現設備B後,A設備需要提示用戶。用戶可根據需要選擇是否和設備B配對。
- Connection Setup:Source和Display設備之間通過Wi-Fi P2P建立連接。根據Wi-Fi Direct技術規範,這個步驟包括建立一個Group Owner和一個Client。此後,這兩個設備將建立一個TCP連接,同時一個用於RTSP協議的端口將被創建用於後續的Session管理和控制工作。
- Capability Negotiation:在正式傳輸視音頻數據前,Source和Display設備需要交換一些Miracast參數信息,例如雙方所支持的視音頻格式等。二者協商成功後,才能繼續後面的流程。
- Session Establishment and streaming:上一步工作完成後,Source和Display設備將建立一個Miracast Session。而後就可以開始傳輸視音頻數據。Source端的視音頻數據將經由MPEG2TS編碼後通過RTP協議傳給Display設備。Display設備將解碼收到的數據,並最終顯示出來。
- User Input back channel setup:這是一個可選步驟。主要用於在傳輸過程中處理用戶發起的一些控制操作。這些控制數據將通過TCP在Source和Display設備之間傳遞。
- Payload Control:傳輸過程中,設備可根據無線信號的強弱,甚至設備的電量狀況來動態調整傳輸數據和格式。可調整的內容包括壓縮率,視音頻格式,分辨率等內容。
- Session teardown:停止整個Session。
通過對上面背景知識的介紹,讀者可以發現:
- Miracast本質就是一個基於Wi-Fi的網絡應用。這個應用包括服務端和客戶端。
- 服務端和客戶端必須支持RTP/RTSP等網絡協議和相應的編解碼技術。
http://blog.csdn.net/innost/article/details/8474683