翟關(guān)貿(mào) 榮偉 董志豪 楊三青
摘要:本文基于Roku流媒體播放器,設(shè)計開發(fā)了IPTV接入應(yīng)用。分析了IPTV的體系架構(gòu),和業(yè)務(wù)流程;詳細(xì)介紹了基于Roku的IPTV應(yīng)用系統(tǒng)的接入應(yīng)用開發(fā):包括Roku與web服務(wù)器的數(shù)據(jù)通信,數(shù)據(jù)解析,Roku開發(fā)平臺及編程語言BrightScript的介紹,Roku程序界面的設(shè)計,測試了Roku程序的可操作性,業(yè)務(wù)能力的可操作性,基本直播點播功能的可操作性,給出了該系統(tǒng)的運行結(jié)果,結(jié)果顯示:Roku能夠?qū)崿F(xiàn)IPTV系統(tǒng)在客戶端設(shè)計應(yīng)滿足的功能,Roku程序界面友好,滿足系統(tǒng)所需功能,符合預(yù)期。
關(guān)鍵詞:通信與信息工程;Roku;IPTV;BrightScript;XML數(shù)據(jù)解析
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A DOI:10.3969/j.issn.1003-6970.2016.04.023
0 引言
近年來,隨著網(wǎng)絡(luò)通信、普適計算和多媒體技術(shù)的不斷發(fā)展,視頻交互式多媒體業(yè)務(wù)進(jìn)入到人們生活的諸多方面,帶來巨大的市場商機(jī)和產(chǎn)業(yè)價值,并將成為未來通信業(yè)務(wù)新的增長點。IPTV作為典型的交互式多媒體業(yè)務(wù),將廣電業(yè)、電信業(yè)和計算機(jī)業(yè)3個領(lǐng)域技術(shù)結(jié)合在一起,以配置機(jī)頂盒的家用電視機(jī)或一體機(jī)或計算機(jī)為收視終端,向家庭用戶提供包括電視節(jié)目在內(nèi)的多種交互式數(shù)字媒體服務(wù)。
IPTV是一種包含運營支撐層、業(yè)務(wù)應(yīng)用層、承載層和用戶終端在內(nèi)的集多個層面為一體的綜合系統(tǒng),提供包括視頻點播、個人視頻錄制、電子節(jié)目指南,電子郵件及Internet訪問、電視商務(wù)、即時信息等服務(wù)內(nèi)容,是對傳統(tǒng)電視內(nèi)容服務(wù)的重大突破。這些內(nèi)容服務(wù)的實現(xiàn)又與視音頻編解碼技術(shù)、內(nèi)容分發(fā)網(wǎng)絡(luò)技術(shù)、內(nèi)容分發(fā)技網(wǎng)絡(luò)技術(shù)、服務(wù)質(zhì)量技術(shù)、流媒體技術(shù)、數(shù)字版權(quán)保護(hù)技術(shù)等幾項技術(shù)密不可分。
我們選定國外廣泛使用的Roku流媒體播放器開發(fā)用戶終端程序,使用Linux操作系統(tǒng)提供流媒體服務(wù),本論文的目的就是設(shè)計出基于Roku的IPTV實驗平臺,著重陳述IPTV系統(tǒng)用戶終端Roku和流媒體服務(wù)的開發(fā)工作。
1 IPTV系統(tǒng)分析
1.1 系統(tǒng)架構(gòu)
該IPTV系統(tǒng)包括視頻源系統(tǒng)、視頻服務(wù)器、寬帶接入網(wǎng)、用戶端設(shè)備和業(yè)務(wù)管理系統(tǒng)等,主要功能包括視頻采集、流媒體服務(wù)、寬帶傳輸、客戶端應(yīng)用呈現(xiàn)以及用戶管理與鑒權(quán)、繳費、內(nèi)容管理等,其系統(tǒng)框圖如圖1所示。
首先,視頻源系統(tǒng)通過電視卡、錄像機(jī)等源采集視頻內(nèi)容,經(jīng)過視頻服務(wù)器分發(fā)到各用戶,各注冊且生效的用戶從WEB服務(wù)器獲取電子節(jié)目單,從而獲取該用戶所有的內(nèi)容。而用戶信息通過業(yè)務(wù)管理系統(tǒng)進(jìn)行管理,為用戶調(diào)配不同的權(quán)限。
1.2 直播以及點播業(yè)務(wù)流程的實現(xiàn)
直播業(yè)務(wù)的流程為:首先,用戶通過Roku機(jī)頂盒請求直播,點播頻道服務(wù),EPG向業(yè)務(wù)管理系統(tǒng)發(fā)出請求信息(用戶SN,頻道ID等);業(yè)務(wù)管理系統(tǒng)收到請求后,判斷該用戶是否訂購了該頻道,并且判斷此頻道是否受限,并且將相關(guān)信息反回給Roku機(jī)頂盒,機(jī)頂盒通過XML技術(shù)解析之后看是否已經(jīng)訂購該頻道;如果用戶可以收看該頻道,EPG向CDN發(fā)出頻道URL重定向請求,CDN根據(jù)全局負(fù)載均衡情況重定向頻道的URL,并且根據(jù)事先約定的加密算法生成授權(quán)碼,并向機(jī)頂盒返回可以定向的URL,如果用戶沒有訂購該頻道,則提醒用戶轉(zhuǎn)入訂購流程;EPG接收到頻道的URL后,然后返回給Roku機(jī)頂盒,Roku機(jī)頂盒根據(jù)URL請求之后,加入組播頻道;組播控制點收到直播請求后,檢驗URL的授權(quán)碼,如果為非法請求,則拒絕服務(wù),如果請求合法,則組播控制點向EPG發(fā)出相應(yīng)的狀態(tài)信息,EPG系統(tǒng)向業(yè)務(wù)管理系統(tǒng)發(fā)出啟動使用信息;業(yè)務(wù)管理系統(tǒng)開始記錄用戶的信息,并且將結(jié)果返回給EPG;EPG向組播控制點發(fā)出使用通知信息,組播控制點向Roku機(jī)頂盒提供直播流,Roku機(jī)頂隔接收直播流并解碼,播放;當(dāng)用戶提出主動退出時,Roku機(jī)頂盒向組播控制點發(fā)出退出請求,組播控制點接收請求后,返回結(jié)束通知,EPG收到此通知后,將此請求轉(zhuǎn)發(fā)給業(yè)務(wù)管理系統(tǒng),業(yè)務(wù)管理系統(tǒng)根據(jù)請求中的相關(guān)信息寫入日志,并將結(jié)果返回給EPG;EPG將結(jié)果發(fā)給組播控制點,直播,點播業(yè)務(wù)結(jié)束。直播及點播的流程圖如圖2所示。
2 Roku接入應(yīng)用設(shè)計及分析
2.1 開發(fā)環(huán)境及編程語言
2.1.1 Roku機(jī)頂盒系統(tǒng)架構(gòu)
本IPTV系統(tǒng)所選用的機(jī)頂盒設(shè)備為Roku 2 XS,該播放器采用ARM處理器,256Mb的RAM和Flash,提供豐富的接口。基于Linux2.6內(nèi)核,Roku使用自己的平臺RokuDVP softwarePlatform和自己的開發(fā)語言。圖3所示為Roku機(jī)頂盒系統(tǒng)架構(gòu)。
2.1.2 編程語言語言
在Roku平臺上進(jìn)行開發(fā)的語言為BrightScript,Roku BrightScipt是一種功能強(qiáng)大的腳本語言,因此在嵌入式設(shè)備上能夠很快和很便捷的進(jìn)行媒體和網(wǎng)絡(luò)應(yīng)用開發(fā),BrightScipt語言集成支持BrightScipt組件和這些組件的輕量級的庫。這種平臺的API開發(fā)都是通過調(diào)用BrightScipt的組件來運行的。
BrightScipt腳本語言有以下特點:
1.BrightScipt通過一個編譯器將代碼編譯為字節(jié)碼,每次當(dāng)腳本加載和運行的時候就會進(jìn)行編譯,它不需要事先進(jìn)行單獨的編譯,而且編譯結(jié)果會保存在一個二進(jìn)制文件中,這種方式類似于JavaScript。
2.BrightScipt語句語法不像C結(jié)構(gòu)形式的,而是類似于Basic,Python或者像Ruby和Lua。BrightScipt對象和賦值的數(shù)據(jù)結(jié)構(gòu)體是通過關(guān)聯(lián)數(shù)組(AssociativeArrays)實現(xiàn)的,這種方式類似于JavaScfipt或者是Luau,BrightScipt支持動態(tài)類型(類似于JavaScfipt),或聲明類型(類似于c或者Java),JavaScfipt使用“interfaces”和“Components'作為它的API,這又類似于“.Net”或“Java”。
3.BrightScript對于嵌入式設(shè)備來說是一個功能強(qiáng)大的優(yōu)化字節(jié)碼解釋腳本語言,在這種意義上,它是獨一無二的。例如BrightScript和BrightScriptComponent體系結(jié)構(gòu)100%都是通過C完成的,具有快速、高效和可移植性的特點。BrightScript廣泛使用“整數(shù)”類型的(因為很多嵌入式處理器沒有浮點單位)。這是不同于JavaScript語言的因為其數(shù)字總是—個浮點數(shù)。BrightScript數(shù)字只有在必要的時候才是浮點型的。
BrightScript作為“glue”連接底層組件為網(wǎng)絡(luò)連接,多媒體播放,UI Screen設(shè)計進(jìn)行的優(yōu)化,實現(xiàn)了以最小的程序員工作量達(dá)到用戶友好體驗的應(yīng)用程序設(shè)計效果。
2.1.3 開發(fā)環(huán)境
Roku應(yīng)用程序的開發(fā)環(huán)境可集成在eelipse上,用戶只需下載并安裝DTLK(dynamic language toolkit)插件和brightscript插件,即可開始創(chuàng)建工程了。
2.2 客戶端架構(gòu)設(shè)計
對于Roku應(yīng)用,在功能上主要需要實現(xiàn):(1)用戶驗證與列表獲??;(2)列表呈現(xiàn);(3)視頻播放。Roku程序的信息流程如圖4。
由于每個Roku設(shè)備都有對應(yīng)的唯一SN,因此,對于用戶驗證只需要向web服務(wù)器通過Get請求提交自己的身份信息,web服務(wù)器在接收到Roku的請求和身份信息后將從數(shù)據(jù)庫中查找驗證其身份是否合法,對于合法的用戶,web服務(wù)器將返回節(jié)目單。Roku接收到節(jié)目單后呈現(xiàn)節(jié)目列表,如果用戶選擇了某一個節(jié)目,Roku將通過這個節(jié)目的流媒體鏈接向流媒體服務(wù)器獲取并播放視頻。
2.3 Roku客戶端與Web服務(wù)器通信實現(xiàn)
2.3.1 基于XML-RPC的web通信
為了解決異構(gòu)系統(tǒng)之間的通信難題,在不同的系統(tǒng)中采用XML格式文本來交換數(shù)據(jù),文本基于HTTP協(xié)議傳輸,這樣不同的操作系統(tǒng),不同的平臺自己解析文本文件。文獻(xiàn)分析XML/Web Services技術(shù)在電子商務(wù)應(yīng)用中的優(yōu)勢,這里同樣適用于IPTV系統(tǒng)的數(shù)據(jù)傳輸。
XML被設(shè)計用來進(jìn)行結(jié)構(gòu)化數(shù)據(jù)、存儲以及傳輸數(shù)據(jù)信息,Web service可以被當(dāng)作是一個應(yīng)用程序,該程序向外界暴露出一個能夠通過Web方式進(jìn)行調(diào)用的API接口。Web Service通信有兩種常見的協(xié)議標(biāo)準(zhǔn)XML-RPC和SOAP,其中XML-RPC相對而言比較簡單,而SOAP比前者復(fù)雜很多,一般在要求系統(tǒng)穩(wěn)定、健壯、安全,并且交互過程復(fù)雜時才使用。XML-RPC是XMLRemote Procedure Calling的縮寫,它是Web Service的一種實現(xiàn)并且比WebServices簡單,是面向Internet環(huán)境的分布式處理標(biāo)準(zhǔn)。它通過利用HTTP協(xié)議傳輸XML數(shù)據(jù)來實現(xiàn)通信。它是一種遠(yuǎn)程調(diào)用機(jī)制,用于調(diào)用可能駐留在其他機(jī)器之上以及可能用其他語言編寫的過程。
RPC通信的流程是首先需要構(gòu)造一個RPC服務(wù)器端,用它來接收從RPC客戶端傳遞過來的使用XML封裝的請求,服務(wù)端接收請求并把處理結(jié)果通過XML的形式返回給RPC客戶端,客戶端分析XML,獲取客戶端需要的數(shù)據(jù)。
遠(yuǎn)程過程調(diào)用的流程:在客戶端請求方法,該方法和方法攜帶的參數(shù)以XML格式描述,包裝請求methodCall,其中有方法名(medthodName)、方法的參數(shù)(Params)該請求通過XML包裝以HTTP請求發(fā)送到WEB服務(wù)端,WEB服務(wù)執(zhí)行對應(yīng)的方法,以XML返回方法執(zhí)行的結(jié)果,通過HTTP傳回客戶端。方法響應(yīng)(methodResponse)、返回參數(shù)Params,返回值在String中。此處請求為rpc_server,參數(shù)為get;方法執(zhí)行返回結(jié)果為response data。
在客戶端解析出返回的xml格式的響應(yīng),然后,可以根據(jù)服務(wù)端與客戶端事先定義好的協(xié)議通信標(biāo)準(zhǔn),對返回的數(shù)據(jù)做相應(yīng)的處理與解析,這個解析過程通常為客戶端完成,解析完數(shù)據(jù),客戶端便獲得了對應(yīng)請求的數(shù)據(jù)信息。
2.3.2 Roku平臺的XML解析
BrightScript中的roXMLElement支持解析、生成,包含XML。并且將解析出來的元素放在roxmllist對象中。Roku的XML文件解析過程類似于DOM解析,解析過程如圖5所示:
2.4 程序流程圖與界面實現(xiàn)
2.4.1 流程圖
Roku客戶端軟程序的核心功能之一是聯(lián)網(wǎng)??蛻舳伺cWEB服務(wù)器交互數(shù)據(jù)的基本流程是:檢測網(wǎng)絡(luò)是否可用,進(jìn)入用戶驗證、獲取應(yīng)用電視節(jié)目分類列表、獲取具體分類下的應(yīng)用節(jié)目列表、應(yīng)用節(jié)目詳細(xì)介紹等功能。Roku應(yīng)用程序的播放程序流程圖見圖6。
2.4.2 Roku界面的實現(xiàn)
Roku程序?qū)嶋H實現(xiàn)是運用BrightScript語言調(diào)用Roku的接口(即為對應(yīng)的component)產(chǎn)生屏幕界面和實現(xiàn)各種功能,具體怎么實現(xiàn)可以參考附錄,這里不再詳述。編程中需要的component有:
roPosterScreen:呈現(xiàn)功能列表;
roGridScreen:呈現(xiàn)視頻列表;
roDevicelnfo:獲取設(shè)備信息;
roUrlTransfer:在web server間傳輸節(jié)目單;
roXMLElement:解析節(jié)目單;
roVideoPlayer:播放視頻;
roTimeSpan:記錄時間。
實現(xiàn)的界面如圖7,8,9所示
3 結(jié)束語
本文首先對IPTV系統(tǒng)的架構(gòu)和業(yè)務(wù)流程做了分析,然后詳細(xì)介紹了基于Roku機(jī)頂盒的IPTV系統(tǒng)客戶端播放器的程序的開發(fā)。通過實驗,我們看到Roku應(yīng)用程序界面簡潔友好,操作直觀,視頻播放流暢,開發(fā)工具齊全,開發(fā)過程簡單,非常適合作為IPTV系統(tǒng)的接入應(yīng)用。
但由于Roku的主要市場在海外,國內(nèi)并沒有很多中文資料,這給國內(nèi)開發(fā)者提出了一些難度。并且,如果該系統(tǒng)要投入運營,作為客戶端,還需要進(jìn)一步考慮界面的美觀性和用戶體驗。
此項目涉及知識廣泛,包括BrightScript腳本語言的學(xué)習(xí),xml數(shù)據(jù)解析,IPTV體系架構(gòu)等知識,通過對該項目的實踐,學(xué)習(xí)者可以學(xué)到許多知識。