n 1,UPnP(UniversalPlug and Play):通用即插即用
n DLNA (Digital Living Network Alliance)數字生活網絡聯盟。
n DMP(Digital Media Player):數字媒體播放器。
n DMS(Digital Media Server):數字媒體服務器
n SOAP -簡單對象存取協議(Simple Object Access Protocol ),它是一種應用程序之間進行數據通訊的機制。它是一種在HTTP上使用XML發送命令並接收值的遠程過程調用
n SSDP-A multicast discovery and search mechanism that use a multicastvariant of HTTP over UDP
n CP-控制點,控制點是一個控制器,它可以檢索設備和服務描述,發送動作到服務,查詢服務的狀態變量和從服務接收事件。允許用戶使用或運行一個設備,例如CD播放機,的程序可以認爲是控制點。
具體步驟:
1:設備尋址,獲取網絡地址。通過DHCP協議獲取IP地址。設備尋址功能可以直接使用機頂盒已實現的功能。
2:DMS 定時廣播(advertise)自己的設備描述信息和服務描述信息。發現家庭網絡上的UPnP設備.
3:DMP 定時搜索(search)是否有DMS.
從發現消息中得到設備描述的URL,並通過URL取得設備描述 .
4:DMP成爲控制點。控制對方UPnP設備,向DMS發送服務的命令。
發出動作實質上是一種遠程過程調用,控制點將動作送到設備服務,在動作完成之後,服務返回相應的結果。
n
5:DMS反饋內容。
控制點首先需要向服務訂閱相關事件,當mediaserver上這些變量改變時,服務就會發布更新,則控制點就會收到設備事件.
6:DMP端顯示內容
n 瀏覽器裝載設備描述文件和媒體資源描述文件,顯示給用戶。用戶同時可以發出控制指令。
DMP 組件的功能有:
- 初始化DMP系統,包括UPnP協議棧;
2. 根據uPnP協議發現DMS設備並完成交互。
3. 完成主控的操作命令和信息收集命令。
n 主控完成頁面的命令分發功能。
n 對於頁面的媒體播放命令,音視頻播放命令轉交vod完成;圖片播放命令轉交圖片解析組件完成;字幕播放命令轉交字幕組件完成。
n 對於頁面的信息查詢命令,主控通過DLNA模塊交給DMP組件完成.
n DMS 組件的功能有:
l 初始化DMS系統,包括UPnP協議棧;
l 根據uPnP協議廣播DMS設備及服務,並完成與DMP的交互。----廣播自己
l 及時收集本地存儲內容目錄,並以服務的形式供其它互聯設備如DMP訪問。----遍歷U盤,生成媒體庫,並實時提供目錄服務
l 提供web server服務供其它互聯設備如DMP提取描述文件和媒體文件內容。----提供描述文件以及媒體文件下載
n DMS還集成了一個USB監控模塊,它以1秒的頻率監控/var/mnt/目錄下USB設備的插拔情況。不管是插入還是拔出U盤,都會觸發內容目錄收集模塊重新生成媒體庫。
n 而內容目錄收集模塊初始化時,會遍歷該發現的U盤目錄下的所有文件夾及文件,調用開源代碼ffmpeg的接口讀取媒體文件的相關信息,生成內容目錄存儲到媒體庫中。
n 此模塊首先通過uPnP發佈本服務即可執行的動作和事件。內容目錄服務(CDS)模塊需完成此DMP發來的瀏覽動作,按規定格式準備好節目目錄信息,通過uPnP返回給DMP。CDS提供的數據來源於媒體數據庫即由內容目錄收集模塊遍歷生成的媒體庫。
n /* List of UPnP ContentDirectory Service actions */
n struct service_action_t cdsServiceActions[] = {
n {SERVICE_CDS_ACTION_SEARCH_CAPS, _cdsGetSrchCap},
n {SERVICE_CDS_ACTION_SORT_CAPS, _cdsGetSortCap},
n {SERVICE_CDS_ACTION_UPDATE_ID, _cdsGetSysUpdateId },
n {SERVICE_CDS_ACTION_BROWSE, _cdsBrowse },
n { NULL, NULL }
n };
n 爲了配合UPnP SDK完成HTTP Server的功能,本模塊需實現以下接口:
n URLProtocol http_protocol = {
n "http",
n http_open,
n http_read,
n http_write,
n http_seek,
n http_close,
n };
n 當本模塊接收到UPnPSDK轉發過來的事件註冊請求時,根據請求的服務類型,將本模塊支持的狀態變量反饋給UPnP SDK。由UPnP SDK將狀態變量的取值、更新信息通知給DMP設備。