1 引 言 IPTV即網(wǎng)絡(luò )電視,是目前一種新興的網(wǎng)絡(luò )應用,它利用寬帶互聯(lián)網(wǎng)的基礎設施,以家用電視機作為主要終端,通過(guò)互聯(lián)網(wǎng)協(xié)議(IP)來(lái)提供包括電視節目在內的多種數字媒體服務(wù)及其增值業(yè)務(wù)的技術(shù)。IPTV最大的優(yōu)勢在于“互動(dòng)性”和“按需觀(guān)看”,徹底改變了傳統電視單向廣播的特點(diǎn)。它的出現極大的滿(mǎn)足了用戶(hù)(文中的用戶(hù)是指安裝了IPTV客戶(hù)端的消費者,客戶(hù)是指IPTV服務(wù)提供商和運營(yíng)商)對在線(xiàn)影視欣賞的需求。IPTV的發(fā)展十分迅速,國際上,UT斯達康、微軟、西門(mén)子、阿爾卡特、惠普等,國內的華為、中興和盛大等廠(chǎng)家都投入了IPTV的開(kāi)發(fā)和研究。 國外早已有IPTV的商業(yè)運營(yíng)系統,英國Video Networks公司早在1999年就推出了IPTV業(yè)務(wù)。國內截至目前,首個(gè)IPTV已在上海投入商業(yè)應用,并且中國電信已在五省市進(jìn)行IPTV試點(diǎn), IPTV在國內和國際都有廣闊的發(fā)展前景。 為了提供“互動(dòng)性”和“按需觀(guān)看”,系統需要提供和用戶(hù)交互的界面,供用戶(hù)瀏覽系統提供的節目信息并選擇要欣賞的節目。在IPTV系統中由 EPG(Electronic Program Guide電子程序向導)服務(wù)器提供這套界面。EPG是一個(gè)當前和將來(lái)節目信息的交互式節目安排表,用戶(hù)通過(guò)操作遙控器進(jìn)行瀏覽。EPG 模塊在整個(gè)IPTV系統中是至關(guān)重要的,它是整個(gè)IPTV系統的門(mén)戶(hù)。EPG給用戶(hù)提供一個(gè)容易使用的、界面友好的、可以快速訪(fǎng)問(wèn)節目的一種方式。因此,用戶(hù)對IPTV整個(gè)系統的評價(jià)在很大程度上取決于EPG。提供簡(jiǎn)單易用、快速、穩定、美觀(guān)的交互界面是EPG的首要目標。 2 IPTV的系統結構模型 圖1是一個(gè)IPTV系統結構模型,此模型已在國內一些城市得到實(shí)際應用。在此模型結構圖中,整個(gè)IPTV系統分為兩大部分:后臺部分和用戶(hù)接入部分。后臺部分主要提供媒體內容的管理、用戶(hù)管理、整個(gè)系統的服務(wù)器管理、用戶(hù)認證和計費管理等等。用戶(hù)接入部分為用戶(hù)提供視頻服務(wù)和其他服務(wù),根據城市規模大小可分為多個(gè)區域,每一區域主要有區域媒體基站和EPG服務(wù)器。用戶(hù)使用機頂盒 加電視或者PC作為終端,通過(guò) ADSL或小區寬帶收看系統存儲的節目或者直播電視節目。機頂盒是一臺功能簡(jiǎn)單的計算機,有CPU、內存、網(wǎng)絡(luò )連接設備、解碼器等硬件及操作系統和應用程序等軟件,接收通過(guò)寬帶IP網(wǎng)絡(luò )傳輸過(guò)來(lái)的視頻信號,信號經(jīng)過(guò)處理后在電視機上顯示出來(lái)。用戶(hù)通過(guò)操縱遙控器使用機頂盒提供的功能。 用戶(hù)被劃分為多個(gè)區域,每個(gè)區域分別部署多個(gè)區域媒體服務(wù)器和EPG服務(wù)器,用戶(hù)的視頻服務(wù)和交互界面由用戶(hù)所在區域的媒體服務(wù)器和EPG服務(wù)器提供。這種部署方式具有容易擴充的特點(diǎn),適合大規模部署。增加一個(gè)區域只須增加區域媒體基站和EPG服務(wù)器,對后臺部分和其它區域不會(huì )造成影響。同時(shí),用戶(hù)的大部分數據流量都集中在自己所在區域,減輕了主干網(wǎng)的負擔,而且單個(gè)區域系統的崩潰不會(huì )影響其它區域。 系統工作過(guò)程大致如下: ①媒體源經(jīng)過(guò)媒體處理模塊處理成系統所定義的格式,存儲在主媒體基站上,并由后臺的媒體分發(fā)管理模塊負責如何將這些節目分發(fā)到下面的每一個(gè)區域中的媒體基站中。 ②同時(shí)有關(guān)節目的信息也被下發(fā)到EPG服務(wù)器中,供EPG顯示給用戶(hù)。 ③用戶(hù)開(kāi)機經(jīng)過(guò)后臺認證后登錄到EPG服務(wù)器上,開(kāi)始瀏覽系統的節目信息。 ④當用戶(hù)選擇一個(gè)節目觀(guān)看后,EPG將有關(guān)節目信息和用戶(hù)的信息發(fā)送到后臺部分,由后臺的用戶(hù)管理部分判斷用戶(hù)是否能夠欣賞節目,如果可以,用戶(hù)的機頂盒則向本區域的媒體基站發(fā)送播放節目的請求。 ⑤播放完畢,機頂盒向后臺發(fā)送扣除相應收費的請求,同時(shí)重新定向到EPG服務(wù)器,用戶(hù)可以繼續瀏覽節目和欣賞節目。 考慮到目前IPTV在國內還處于發(fā)展階段,一個(gè)區域的用戶(hù)不是很多。目前系統設計為一個(gè)區域支持最多3000用戶(hù),在同一時(shí)刻訪(fǎng)問(wèn)EPG服務(wù)器的用戶(hù)數不超過(guò)500。當用戶(hù)數量增多時(shí),可以使用EPG服務(wù)器集群。在圖1中,每個(gè)區域都部署了一個(gè)主EPG服務(wù)器,為了系統的穩定性,同時(shí)也部署了一個(gè)備用的EPG服務(wù)器。 3 EPG模塊的設計 從IPTV系統在中國的部署應用看,EPG模塊是整個(gè)系統中需求變化最大、最快的模塊,而且是直接展示給客戶(hù)的模塊,很大程度上決定客戶(hù)是否采用我們的系統。模塊在整體框架設計時(shí),主要考慮以下原則: (1) 結構清晰,開(kāi)發(fā)快速?蛻(hù)的需求變化是很快的,在設計時(shí),首先要考慮能夠在最短的時(shí)間內按照客戶(hù)的要求開(kāi)發(fā)出新界面,結構清晰的設計有利于快速開(kāi)發(fā)。 (2) 維護方便。能夠讓客戶(hù)在對EPG代碼和實(shí)現不是很了解的情況下改動(dòng)EPG的某些代碼或修改一些配置,而不會(huì )影響EPG的運行。 (3) 方便客戶(hù)定制?蛻(hù)可能要求自己制作EPG。因此,設計時(shí)要考慮到能夠快速、簡(jiǎn)單地使客戶(hù)明白EPG的制作過(guò)程,在較短時(shí)間內掌握制作EPG。 (4) 性能滿(mǎn)足設計要求。要滿(mǎn)足設計時(shí)的性能要求,主要考慮服務(wù)器優(yōu)化,數據庫的優(yōu)化。 (5) 界面簡(jiǎn)單美觀(guān),有良好的可擴展性和開(kāi)放性。容易支持新的業(yè)務(wù),能夠兼容不同廠(chǎng)家的機頂盒。 EPG實(shí)現主要有兩種方案選擇,本地應用方案和交互式實(shí)現方案 。目前國內和國外的EPG設計基本上是針對數字電視的,其EPG實(shí)現一般采用本地應用方案。本地方案對機頂盒的硬件要求較高,而且在和用戶(hù)的交互性方面做的不是很好。IPTV是一種和用戶(hù)有高度交互性的系統,設計和實(shí)現適合采用第二種方案。 此模型中EPG實(shí)現選擇交互式方案,采用由EPG服務(wù)器給機頂盒提供HTML頁(yè)面的實(shí)現方式。將系統的節目信息存儲在數據庫中,服務(wù)器從數據庫中檢索節目信息,以HTML頁(yè)面的形式提供給機頂盒,機頂盒解析頁(yè)面后呈現給用戶(hù)。這樣,對PC用戶(hù)來(lái)說(shuō),用戶(hù)端自帶的瀏覽器即可瀏覽。對使用機頂盒的用戶(hù)來(lái)說(shuō),需要機頂盒實(shí)現能夠解析HTML頁(yè)面的功能。 在本文中,著(zhù)重針對機頂盒的EPG設計 ,具體實(shí)現采用Linux+Apache+MySQL+PHP,程序的整個(gè)框架設計基于MVC模式的思想。 3.1 MVC的設計模式 模型-視圖-控制(Model-View-Controller)是一種經(jīng)典的軟件設計模式,它采用分治的思想將系統分成三大模塊,每個(gè)模塊各負其責,其關(guān)系如圖2所示。 (1) 模型。負責維護數據并提供數據訪(fǎng)問(wèn)方法。模型只有純粹的功能性接口, 也就是一系列的公開(kāi)方法。通過(guò)這些公開(kāi)方法, 可以取得模型的所有功能。 (2) 視圖。用來(lái)顯示模型的數據。在一個(gè)MVC 模型中可以有多個(gè)視圖。 (3) 控制器。用戶(hù)可以通過(guò)視圖來(lái)改變模型的狀態(tài), 這種更新是通過(guò)控制器來(lái)完成的?刂破髫撠熣{用模型的改值方法以改變模型的狀態(tài), 同時(shí), 控制器會(huì )通知所有的已登記視圖刷新數據顯示。 MVC 體系有效地實(shí)現了表示與數據的分離,能很方便地用多個(gè)視圖來(lái)顯示多套數據,使系統很方便地支持其它新的客戶(hù)端類(lèi)型,可以很好地表達用戶(hù)的交互。從國內的應用情況看,大部分客戶(hù)都是對顯示界面要求不一樣,對程序處理邏輯有少量不同。采用MVC模式,可以很方便的響應客戶(hù)的需求變化,而且可以很容易提供不同的顯示界面讓客戶(hù)自己選擇。 3. 2 具體實(shí)現 根據設計目的和MVC模式,考慮到用戶(hù)使用的終端設備為機頂盒,在客戶(hù)端需要一些與機頂盒有關(guān)的特殊處理,服務(wù)器處理請求的實(shí)現過(guò)程分為五個(gè)層次,如圖3所示。 (2) 用戶(hù)端處理層。負責請求發(fā)出前和請求處理結果返回后的一些特殊處理。此處加入用戶(hù)端處理層主要是因為目前用戶(hù)的終端為機頂盒,機頂盒瀏覽器的功能不是很強。在用戶(hù)轉向另外一個(gè)頁(yè)面或者返回到原來(lái)的頁(yè)面都需要EPG做一些處理,比如記錄光標的位置、初始化光標位置。 (3)請求和響應層。負責請求到達服務(wù)器后和處理結果返回給用戶(hù)端前的一些處理。 (4) 邏輯處理層。負責對客戶(hù)的請求進(jìn)行處理。 (5) 數據訪(fǎng)問(wèn)層。負責提供獲取數據庫中數據的接口。 我們以顯示熱門(mén)影片的實(shí)例說(shuō)明使用MVC模式的思想處理請求的過(guò)程。處理顯示熱門(mén)影片請求的過(guò)程如圖4所示。 過(guò)程如下: (1)用戶(hù)在首頁(yè)單擊“最新影片”,經(jīng)過(guò)用戶(hù)端控制層處理(關(guān)閉在首頁(yè)播放的廣告視頻)后,請求被提交到服務(wù)器進(jìn)行處理。 (2)請求和響應層開(kāi)始處理請求,保存上一頁(yè)有關(guān)的狀態(tài),并且初始化一些變量(如取數據的類(lèi)、保存頁(yè)面所有信息的變量)。 (3)邏輯處理層計算數據庫中要取的熱門(mén)影片的起始位置和數量。 (4)調用數據訪(fǎng)問(wèn)層的接口開(kāi)始從數據庫里面取出熱門(mén)影片的信息(節目名稱(chēng)、價(jià)格、簡(jiǎn)介、海報圖片名稱(chēng)等)。 (5)邏輯處理層對取到的數據進(jìn)行轉換,轉換后的所有數據保存在一個(gè)變量中,這個(gè)變量要傳遞給顯示結果的頁(yè)面。 (6)請求和響應層調用顯示結果的頁(yè)面和用戶(hù)端的控制代碼,生成HTML代碼。 (7)機頂盒解析傳遞過(guò)來(lái)的HTML頁(yè)面,初始化光標位置,將熱門(mén)影片信息顯示給用戶(hù)。 開(kāi)發(fā)之前,在設計文檔中定義預先定義頁(yè)面展示層和邏輯處理層、邏輯處理層和數據訪(fǎng)問(wèn)層的接口。每一部分的開(kāi)發(fā)人員只須關(guān)心自己所做的部分,使用其它層提供的接口調用其它層的功能。這樣各個(gè)部分的開(kāi)發(fā)可以并行工作,大大提高了開(kāi)發(fā)速度。 數據訪(fǎng)問(wèn)層和邏輯處理層可以很容易編寫(xiě)單元測試來(lái)測試自己的代碼,不受其它層的代碼的影響,很大程度上提高了軟件的質(zhì)量。同時(shí)后期的維護也是很方便的,如果需求有變,只須改動(dòng)需求變化所在層次的代碼,不用關(guān)心其它層代碼是否要改動(dòng)。 整個(gè)EPG模塊每個(gè)頁(yè)面的編碼都遵循這種規則。同時(shí)我們提供給客戶(hù)一個(gè)EPG參考手冊,主要是取數據的接口函數和用戶(hù)端處理層 JavaScript函數的使用說(shuō)明?蛻(hù)只需要掌握一個(gè)頁(yè)面的制作過(guò)程和所提供的使用手冊中的函數調用方法,并具有一定的編程水平,就可在很短的時(shí)間內獨立編寫(xiě)自己的EPG。 3.3 EPG性能測試 為了測試EPG性能是否達到了當初的設計要求,使用LoadRunner測試工具對EPG服務(wù)器進(jìn)行了性能測試,測試最主要的指標是不同并發(fā)用戶(hù)數時(shí)的事務(wù)響應時(shí)間,它是服務(wù)器性能最重要的指標。 測試的硬件環(huán)境為:CPU Intel(R) Pentium(R)4 2.40GHz,內存 1GB,網(wǎng)卡 1GB/s。軟件環(huán)境為:操作系統 RedHat 9.0, Apache 2.0.50,MySQL 4.0.21,PHP 4.3.9RC3-dev,Squid 2.5 STABLE1。 LoadRunner模擬測試并發(fā)用戶(hù)數為220、500,測試EPG服務(wù)器的事務(wù)響應時(shí)間和事務(wù)完成情況。服務(wù)器響應時(shí)間和事務(wù)完成情況測試數據如表1和表2所示。從測試數據看,當并發(fā)用戶(hù)數為500時(shí),沒(méi)有出現事務(wù)失敗的情況,平均響應時(shí)間不超過(guò)3秒。對用戶(hù)來(lái)說(shuō),這個(gè)時(shí)間是可以接受的。說(shuō)明采用這種設計方法開(kāi)發(fā)EPG,服務(wù)器的性能也達到了預先的要求。 從以上的測試和分析可以看出,使用上文所說(shuō)的設計方法開(kāi)發(fā)EPG總體上達到了預先的設計原則。 4 結束語(yǔ) 本文闡述了一個(gè)IPTV系統模型及其EPG模塊的設計和實(shí)現,在實(shí)際應用中也證明了我們的設計方法對快速開(kāi)發(fā)易維護、方便擴展的EPG是正確和可行的。隨著(zhù)IPTV的發(fā)展和用戶(hù)數的增多,今后需要在服務(wù)器的性能方面和EPG的個(gè)性化方面進(jìn)行更深入的研究。 |