互聯互連協議的共性是要解決如何發現裝置(SSDP協議等),擷取裝置有些什麼能力(也就是能提供些什麼服務),如何控制、協調和使用各自裝置上服務,如何屏蔽這些標準之間的差異性,提供基於應用程式層之上的overlay協議棧
1. 閃聯協議原理
2.dlna原理
術語:DLNA: Digital Live Network Alliance, 資源共用協議標準以實現裝置之間互聯、互連和互操作功能 MS:媒體伺服器 MR:媒體播放器 CP 控制點 CDs:內容目錄服務 AVT:媒體傳輸服務 RCs:呈現控制服務 CM:串連管理服務 UPnP 基於IP網路的裝置隨插即用協議
原理:DLNA協議主要是解決區域網路中裝置之間的互聯、互連和互操作問題,在UPnP基礎之上定義了裝置互動規範,其中AV架構規定了裝置(媒體伺服器MS,控制點CP,媒體播放器MR)之間的通訊規範,具體分為以下步驟:
1. 控制點基於SSDP協議尋找/發現網路中媒體伺服器
2. 控制點調用媒體伺服器MS的內容目錄服務CDs的Browser介面瀏覽媒體檔案,選中感興趣的媒體檔案後,調用媒體播放器MR的媒體傳輸服務AVT的SetAVTransport介面把連結地址URI發送給媒體播放器。
3. 控制點調用媒體播放器上的AVT和RCs服務來控制媒體播放(播放,暫停,聲音和亮度調節)
互動過程:
媒體播放器和媒體伺服器之間基於http(標配)或rtsp(可選)進行媒體檔案傳輸,控制點不參與媒體傳輸過程,控制點主要是來協調媒體伺服器和媒體播放器之間的互操作功能的,比如選擇兩者都支援的傳輸協議和媒體格式,通常會有個UI介面來操作各自提供的介面(UPnP Action),比如手機,遙控器等,下面描述控制點播放視頻的互動過程。
1. 發現DLNA網路中的音視頻裝置(媒體伺服器和媒體播放器):控制點會自動通過UPnP的發現機制來檢測到網路中的媒體伺服器和媒體轉譯器,一種通過手機以組播的形式發送UPnP M-SEARCH命令來尋找裝置,另外是網路中的音視頻裝置會間隔地發送ssdp:alive訊息告訴控制點其裝置資訊和其提供的服務。
2. 尋找、瀏覽網路中媒體伺服器的視頻:調用媒體伺服器提供的內容目錄服務介面ContentDirectory::Search()或Browser(),媒體伺服器會以didl-lite規範返回目錄及檔案資訊,其中包括支援的傳輸協議和格式
3. 擷取媒體播放器的協議資訊:控制點調用媒體播放器串連管理服務的介面ConnectionManager::GetProtocolInfo()來擷取傳輸協議和支援的資料格式列表。
4. 匹配傳輸協議和資料格式:控制點在第2步從媒體伺服器擷取到的視頻格式和支援的傳輸協議,在第3步同樣擷取到媒體播放器支援的傳輸協議和媒體資料格式,通過比較選擇兩者都支援的協議和資料格式。
5. 配置媒體伺服器和媒體播放器:DLNA中媒體伺服器和媒體播放器必須都支援串連管理服務,控制點通過調用ConnectionManger::PrepareForConnection()介面來做預配置處理並返回傳輸服務(AVTransport)的執行個體Id,以方便多個控制點操作狀態的管理
6. 選取要播放的視頻:控制點根據第2步中返回的視頻列表中選擇要播放的視頻,調用音視頻傳輸服務AVTransport::SetAVTransportURI()介面來告訴媒體播放器資源儲存地址。
7. 開始視頻傳輸:控制點調用媒體播放器的音視頻傳輸服務AVTransport:play() /stop()介面進行控制操作,這個時候實際就是媒體播放器從媒體伺服器上下載視頻播放,控制點不參與視頻資料的傳輸過程。
8. 視頻顯示控制:控制點調用媒體播放器的呈現控制服務RendringControl的介面來調整顯示效果,如控制亮度,對比,聲音大小等。
9. 重複選擇下一個視頻:控制點通過調用AVTransport::SetAVTransportURI() 或者AVTransport::SetNextAVTransportURI()介面來重複上面的過程播放下一個視頻。
10. 播放結束:當控制點不想再播放視頻時,就可以調用串連管理服務ConnectionManager::ConnectionComplete()介面來結束媒體伺服器和媒體播放器