基于UPnP發(fā)現與組播技術(shù)的IPTV終端實(shí)現
關(guān)鍵詞:IPTV;UPnP;IP組播技術(shù); MPEG-2
引言
IPTV是一項系統技術(shù), 可使音/視頻內容節目或信號以IP 包的方式在不同物理網(wǎng)絡(luò )中被安全、有效和保質(zhì)地傳送或分發(fā)給不同用戶(hù)。
基于UPnP中的簡(jiǎn)單服務(wù)發(fā)現協(xié)議(SSDP,Simple Service Discovery Protocol)和IP組播技術(shù),本文提出并實(shí)現了一種新的IPTV終端系統。該系統不僅能將CATV(有線(xiàn)電視網(wǎng))模擬信號和本地AV模擬信號轉換為數字信號,并通過(guò)MPEG-2編碼,再使用RTP/RTCP協(xié)議組播到家庭網(wǎng)絡(luò ),而且提供了實(shí)時(shí)串流視頻、本地視頻定時(shí)存儲播放和VoD(Video On Demand)服務(wù)。
UPnP協(xié)議棧中的SSDP協(xié)議
UPnP(Universal Plug and Play――通用即插即用)是針對局域網(wǎng)絡(luò )范圍內對等(peer-to-peer)互聯(lián)而設計的一種應用層技術(shù)標準,旨在為家庭、小型企業(yè)、公共場(chǎng)所提供基于IP技術(shù)、易于使用的網(wǎng)絡(luò )服務(wù)自動(dòng)發(fā)現機制。
SSDP用于服務(wù)發(fā)現,控制點(diǎn)借此可定位其感興趣的資源在網(wǎng)絡(luò )中的位置,設備可借此告之它們的可用性。SSDP客戶(hù)(控制點(diǎn))可往本地保留的多播地址的SSDP端口(239.255.255.250:1900)發(fā)送發(fā)現(Discovery)消息來(lái)尋找SSDP服務(wù);SSDP服務(wù)(設備)也可以同樣的方式發(fā)送SSDP指示來(lái)宣告它的存在。
本文IPTV終端的UPnP發(fā)現過(guò)程,即控制點(diǎn)(運行在mClinux上的服務(wù)器程序)搜索網(wǎng)絡(luò )上的UPnP設備(運行在PC上的客戶(hù)端程序),同時(shí),UPnP設備也要宣告自己的存在。當用戶(hù)在PC上打開(kāi)一個(gè)新的客戶(hù)端程序時(shí),它會(huì )通過(guò)標準的本地多播地址發(fā)送多播發(fā)現消息宣告一個(gè)新的用戶(hù)存在??刂泣c(diǎn)監聽(tīng)該多播地址,獲取用戶(hù)的可用信息。同樣,當控制點(diǎn)被添加到網(wǎng)絡(luò )時(shí),它會(huì )多播一條發(fā)現消息來(lái)搜索是否已有客戶(hù)端存在。
IPTV終端系統設計
系統軟件架構及
子系統模塊設計
IPTV終端系統軟件架構分為服務(wù)器和客戶(hù)端兩部分,如圖1所示。
圖2 IPTV終端系統軟件架構圖
服務(wù)器軟件部分包括:
RTP/RTCP模塊:該模塊包含RTP/RTCP協(xié)議棧,負責將視頻信息打包成RTP組播或單播到局域網(wǎng)中。
串流模塊:客戶(hù)端用戶(hù)選擇本地音/視頻文件或VoD服務(wù)器里存有的音/視頻文件,將其發(fā)送到VLC播放器中處理并轉發(fā)到服務(wù)器的串流模塊,由此模塊在局域網(wǎng)內組播,供在線(xiàn)合法用戶(hù)觀(guān)看。
定時(shí)音/視頻存儲、播放模塊:管理員選擇本地音/視頻文件,將其發(fā)送到VLC播放器中處理并轉發(fā)到服務(wù)器的定時(shí)音/視頻存儲、播放模塊,由此模塊異步寫(xiě)入Flash中存儲。管理員可以設定要播放存儲視頻的時(shí)間、播放次數、連續播放時(shí)間間隔、播放長(cháng)度和結束時(shí)間等。
用戶(hù)合法性管理模塊:該模塊在用戶(hù)登錄時(shí)檢查普通用戶(hù)或系統管理員的合法性,并實(shí)時(shí)管理所有在線(xiàn)用戶(hù)信息,定時(shí)顯示所有在線(xiàn)用戶(hù)的IP地址。
UPnP服務(wù)發(fā)現模塊:該模塊負責使用UPnP中簡(jiǎn)單服務(wù)發(fā)現協(xié)議監聽(tīng)局域網(wǎng)內客戶(hù)端程序的運行,并在客戶(hù)端程序發(fā)出SSDP Notify消息時(shí)響應。
服務(wù)控制模塊:由管理員更改服務(wù)器IP地址,用戶(hù)更改音量、頻道、畫(huà)質(zhì)等模塊組成。
硬件驅動(dòng)模塊:該模塊由服務(wù)器上的硬件驅動(dòng)程序組成。
客戶(hù)端軟件部分包括:
UPnP服務(wù)發(fā)現模塊:客戶(hù)端應用程序運行時(shí),在局域網(wǎng)內發(fā)送UPnP SSDP宣告消息。
用戶(hù)登錄模塊:當收到服務(wù)器的UPnP響應消息時(shí),運行此模塊,檢查用戶(hù)合法性。
VoD上傳模塊:通過(guò)VLC播放器和服務(wù)器上的串流模塊,將音/視頻上傳到本地VoD服務(wù)器。
遙控器程序:系統UI部分,提供友好的系統管理員和普通用戶(hù)操作界面。
VLC播放器:一種強大的跨平臺媒體播放軟件,支持多種音/視頻格式(MPEG-1、MPEG-2、 MPEG-4、DivX、MP3、ogg...)、流媒體協(xié)議和串流組播。
系統硬件體系結構設計與實(shí)現
本方案是以華邦ARM W90N740芯片為主控制器的硬件平臺,在W90N740的外圍添加網(wǎng)絡(luò )模塊、串口接口模塊、調諧器模塊、音/視頻解碼及數字化處理模塊、MPEG-2音/視頻壓縮模塊和USB模塊等。系統硬件體系結構如圖2所示。
圖2 系統硬件體系結構框圖
1、CPU部分
CPU(W90N740)、ROM(512KB)、Flash(8MB)、SDRAM(32MB)、SRAM(32K32b)和CPLD構成了最基本的處理系統。ROM存放BOOT程序,每次RESET后,CPU從這里運行,該部分程序主要作硬件初始化,為運行mClinux作準備。Flash存放mClinux和用戶(hù)程序。SDRAM是程序運行時(shí)存放mClinux和用戶(hù)程序的地方。SRAM是PCI橋成為本地總線(xiàn)主機時(shí),寫(xiě)入數據的地方,由于PLX9080不能操作SDRAM,所以,要用一個(gè)SRAM來(lái)做數據緩存。CPLD主要完成PCI總線(xiàn)的仲裁、地址譯碼、RESET信號的產(chǎn)生、中斷信號的匯總、SRAM的片選,以及一些信號的電平或時(shí)序轉換。在CPU與 SRAM的數據總線(xiàn)和地址總線(xiàn)之間有一個(gè)開(kāi)關(guān),用于解決當CPU訪(fǎng)問(wèn)PCI設備和PCI設備訪(fǎng)問(wèn)SRAM同時(shí)發(fā)生時(shí)引起的死鎖。當這種情況發(fā)生時(shí),開(kāi)關(guān)將斷開(kāi)CPU的數據總線(xiàn)和地址總線(xiàn),同時(shí)輸出WAIT信號,讓CPU處于等待中,而讓PCI設備先訪(fǎng)問(wèn)SRAM,完成后,再恢復CPU對PCI設備的訪(fǎng)問(wèn)。
2、PLX9080部分
PLX9080將PCI總線(xiàn)和本地總線(xiàn)連接起來(lái),它主要提供本地地址到PCI地址的雙向轉換,本地控制到PCI控制的雙向轉換。PLX9080收到CPU的命令后,首先向CPLD的PCI仲裁器申請,獲得許可后,開(kāi)始進(jìn)行PCI讀寫(xiě)。PCI設備(比如SAA7134)也是通過(guò)PLX9080將數據寫(xiě)入本地存儲器,當外部設備向PLX9080發(fā)起PCI寫(xiě)操作后,PLX9080將向CPU申請本地總線(xiàn)的使用權,CPU釋放總線(xiàn)的控制權,PLX9080就將PCI的地址翻譯成本地地址,將數據寫(xiě)入SRAM中。
3、SAA7134HL部分
SAA7134HL主要將SIF和CVBS信號進(jìn)行解碼、取樣,然后數字化,組合成ITU-R BT.656格式的視頻數據和I2S格式的音頻數據送給MPEG-2壓縮,同時(shí)接收MPEG-2壓縮器已經(jīng)壓縮好的傳輸流數據,進(jìn)行緩沖后,將數據通過(guò)PLX9080寫(xiě)入SRAM中,完成后向CPU發(fā)出中斷,請求CPU進(jìn)行處理。SAA7134HL還包含了一個(gè)I2C MASTER總線(xiàn)控制器,可以完成對調諧器和SAA6752HS的控制。
4、SAA6752HS部分
SAA6752HS主要對SAA7134HL送來(lái)的視頻和音頻數據按照MPEG-2標準進(jìn)行壓縮,完成壓縮后將數據回送給SAA7134HL進(jìn)行傳送。
硬件功能說(shuō)明如下:
*調諧器:該部分是將從天線(xiàn)或同軸電纜接收進(jìn)來(lái)的TV射頻信號進(jìn)行解調,輸出視頻信號和音頻信號。
*視頻、音頻解碼和數字化:該部分將復合的視頻信號(CVBS)解碼,取出其中的Y、U、V分量信號,然后對這些信號取樣作A/D轉換,再把這些數據組合成滿(mǎn)足ITU-R BT.656的數據,輸出給MPEG-2壓縮部分。同時(shí),也對音頻信號取樣作A/D轉換,再把這些數據組合成I2S格式的數據輸出給MPEG-2壓縮部分。
*MPEG-2壓縮部分:這部分將滿(mǎn)足ITU-R BT.656規定的視頻數據和I2S格式的音頻數據按照MPEG-2標準進(jìn)行壓縮,生成MPEG-2傳輸流輸出到PCI傳輸部分。
*PCI傳輸部分:該部分將MPEG-2傳輸流的數據經(jīng)過(guò)緩沖后,將其經(jīng)過(guò)PCI總線(xiàn)寫(xiě)入到系統的內存中,然后發(fā)中斷給處理器,通知其有數據要處理。
*PCI橋:PCI橋是將處理器的本地總線(xiàn)和PCI總線(xiàn)連接起來(lái)的部件,主要完成對PCI 總線(xiàn)和本地總線(xiàn)的申請,以及PCI總線(xiàn)地址與本地總線(xiàn)地址之間的轉換、PCI總線(xiàn)地址與本地總線(xiàn)之間的控制時(shí)序的轉換。
*處理器及其外圍部件:該部分主要由CPU和能讓其運行起來(lái)的基本外圍器件組成。包括地址譯碼、SDRAM、Flash、ROM器件。
*接口部分:與外部進(jìn)行通信的接口,由兩個(gè)以太網(wǎng)端口和一個(gè)RS-232,以及一個(gè)USB口組成。
測試運行情況
服務(wù)器平臺配置:CPU (W90N740)、ROM(512KB)、Flash(8MB)、SDRAM(32MB)、SRAM(32K32b),及mClinux操作系統。
客戶(hù)端平臺配置: 奔騰 CPU(2.4GHz)、內存(256MB)、Windows XP 操作系統。
在測試中, 普通用戶(hù)使用IPTV終端在局域網(wǎng)內接收并流暢播放CATV電視、本地AV,觀(guān)看實(shí)時(shí)串流或定時(shí)存儲的音/視頻,通過(guò)終端系統正常進(jìn)行VoD點(diǎn)播。系統管理員可以設置服務(wù)器IP地址、接收TV頻道的范圍、允許同時(shí)存在普通用戶(hù)的最大個(gè)數、用戶(hù)密碼、實(shí)時(shí)串流、定時(shí)存儲及上傳到服務(wù)器的音/視頻文件路徑等功能。
在播放的同時(shí),用戶(hù)可以通過(guò)遙控器程序設置播放色彩,畫(huà)質(zhì),音量,頻道及AV->TV->VoD->AV循環(huán)切換。
系統運行性能指標:
(1)丟包率
丟包率=(理論發(fā)包數-實(shí)際收包數)/理論發(fā)包數
本系統在運行時(shí)可以根據上述公式動(dòng)態(tài)計算傳輸丟包率,并在任何用戶(hù)丟包率大于10%時(shí)自動(dòng)斷開(kāi)用戶(hù)與服務(wù)器的連接。
(2)時(shí)延
系統運行時(shí),用戶(hù)可以在線(xiàn)流暢地觀(guān)看TV/AV/VoD視頻流。
如圖3所示,當用戶(hù)數量從1個(gè)增加到10個(gè)時(shí),時(shí)延將隨之從2ms增加到4.2ms。
圖3 用戶(hù)數量與時(shí)延關(guān)系圖
結語(yǔ)
隨著(zhù)網(wǎng)絡(luò )的迅速發(fā)展,將本終端系統應用于無(wú)線(xiàn)環(huán)境中,可提供支持廣域網(wǎng)訪(fǎng)問(wèn)的服務(wù),支持MPEG-4視頻編碼是下一步工作所要做的。
參考文獻:
1. UPnP Forum, http://www.UPnP.org
2.Walko, J. I Love My IPTV. IEE Communications Engineer, pp. 16-19, Dec. 2005
3. Jerry C., Whitaker. Interactive TV Demystified. Mc-Graw Hill,2001
評論