李 娟,王冬星,張 華,孫 濤,許有軍
(大慶師范學(xué)院 計(jì)算機(jī)科學(xué)與信息技術(shù)學(xué)院,黑龍江 大慶163712)
基于嵌入式技術(shù),綜合計(jì)算機(jī)網(wǎng)絡(luò)通信技術(shù)和QT 編程開發(fā)技術(shù),開發(fā)了基于嵌入式Linux 的交互式視頻點(diǎn)播(Video on Demand,即VOD)系統(tǒng),該系統(tǒng)作為便攜式、可移動(dòng)終端設(shè)備,控制各種音視頻媒體的傳輸、緩存、存儲(chǔ)、播放、自動(dòng)搜索與切換等功能,為用戶提供實(shí)時(shí)、交互、按需點(diǎn)播服務(wù)。隨著嵌入式軟件、微處理器和無(wú)線網(wǎng)絡(luò)的發(fā)展,嵌入式VOD 系統(tǒng)在遠(yuǎn)程教育等領(lǐng)域?qū)⒌玫礁訌V泛的應(yīng)用。
點(diǎn)對(duì)點(diǎn)(Peer-to-Peer,P2P)結(jié)構(gòu)是流媒體系統(tǒng)目前所采用的主流設(shè)計(jì)結(jié)構(gòu)[1],考慮無(wú)線網(wǎng)絡(luò)帶寬的局限性和存儲(chǔ)空間小、客戶端資源有限等因素,本文設(shè)計(jì)的VOD 系統(tǒng)采取經(jīng)典C/S 模式架構(gòu)。對(duì)S3C2410 ARM 硬件平臺(tái)和嵌入式ARM-Linux2.4 系統(tǒng)進(jìn)行了研究、裁剪及優(yōu)化整合,以滿足嵌入式環(huán)境對(duì)交互性、易用性、穩(wěn)定性等要求。
本文搭建的嵌入式Linux 視頻點(diǎn)播系統(tǒng)總體架構(gòu)如圖1所示。
圖1 總體架構(gòu)
本系統(tǒng)由FTP 服務(wù)器、目錄服務(wù)器、VOD 客戶端和Mplayer 四部分構(gòu)成,其組成分別介紹如下:
(1)FTP 服務(wù)器:主要提供接受與處理客戶端請(qǐng)求、視頻文件的加載等片源服務(wù),同時(shí)進(jìn)行系統(tǒng)資源管理和用戶管理等。本文選擇SERVERU 服務(wù)器軟件,它不僅提供文件下載,還為用戶的系統(tǒng)安全提供全面保護(hù),如為FTP 設(shè)置密碼、設(shè)置各種用戶級(jí)的訪問(wèn)許可等等。
(2)目錄服務(wù)器:與FTP 服務(wù)器同在一臺(tái)機(jī)器上,由本服務(wù)器提供影片的主要信息,包括影片名稱,演員列表,影片內(nèi)容介紹,片長(zhǎng)大小等,并實(shí)現(xiàn)片名和影片實(shí)際地址的映射。
(3)VOD 客戶端:選擇嵌入式設(shè)備作為客戶端,實(shí)現(xiàn)人機(jī)交互功能。用戶運(yùn)行客戶端程序時(shí),向服務(wù)器提交請(qǐng)求并處理從服務(wù)器返回的響應(yīng)信息。采用QTE 圖形界面設(shè)計(jì),以列表方式顯示影片全部信息,并取得各影片的實(shí)際存儲(chǔ)地址,最后調(diào)用Mplayer 播放器播放影片。
(4)播放器(Mplayer):被VOD 客戶端調(diào)用,以便播放影片。
目前對(duì)流媒體服務(wù)器的研究已經(jīng)很多,因此本文主要工作在于客戶端軟件設(shè)計(jì)及存儲(chǔ)管理功能實(shí)現(xiàn)。
嵌入式VOD 客戶端是整個(gè)系統(tǒng)的核心部分。每個(gè)客戶端都承擔(dān)著獲取資源、下載資源和視頻播放的任務(wù)。系統(tǒng)由ARM-Linux2.4 內(nèi)核構(gòu)成,主要負(fù)責(zé)進(jìn)程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)接口、進(jìn)程間通信、各種中斷響應(yīng)、事件響應(yīng)、系統(tǒng)資源分配等。
為了實(shí)現(xiàn)高效的點(diǎn)播資源交換,嵌入式VOD 客戶端軟件需要四大功能的支持,一是設(shè)計(jì)客戶端用戶界面;二是完成網(wǎng)絡(luò)的訪問(wèn)功能,完成與FTP 視頻服務(wù)器的連接;三是與視頻服務(wù)器連接完成后,實(shí)現(xiàn)視頻播放功能;四是數(shù)據(jù)存儲(chǔ),不同于直播系統(tǒng)[2]的是,如果沒有存儲(chǔ)功能,點(diǎn)播系統(tǒng)的共享性和整體性在很大程度上會(huì)降低,因?yàn)橘Y源交互是在觀看同一個(gè)資源的同一播放點(diǎn)的節(jié)點(diǎn)時(shí)進(jìn)行的。因此采用模塊化設(shè)計(jì)將系統(tǒng)劃分為客戶端用戶界面模塊、視頻資源訪問(wèn)模塊、視頻播放模塊與數(shù)據(jù)存儲(chǔ)模塊四個(gè)大模塊。VOD 客戶端模塊劃分如圖2所示。下文將對(duì)各個(gè)模塊的設(shè)計(jì)進(jìn)行具體描述。
圖2 VOD 客戶端模塊
本模塊的程序主要負(fù)責(zé)實(shí)現(xiàn)與用戶的交互,由用戶登錄,影片列表和影片播放三個(gè)界面組成。本文是在Linux 平臺(tái)上開發(fā),使用QT 制作一個(gè)視頻點(diǎn)播界面,Qt/Embedded(簡(jiǎn)稱QTE)是一個(gè)專門為嵌入式系統(tǒng)設(shè)計(jì)的圖形用戶界面工具包,它支持Linux 平臺(tái)。此界面包含四部分:按鈕、文本框、標(biāo)題欄、列表框。按鈕分為兩個(gè),一個(gè)用來(lái)網(wǎng)絡(luò)IP 的連接,當(dāng)點(diǎn)擊此按鈕就會(huì)與FTP 服務(wù)器連接上獲得FTP 目錄服務(wù)列表;另一個(gè)按鈕用于退出視頻點(diǎn)播界面。Text Label 用于接收用戶所輸入的FTP 服務(wù)器的IP;標(biāo)題欄說(shuō)明此界面為視頻點(diǎn)播界面;而List Box 用于顯示連接FTP 服務(wù)器后,目錄服務(wù)器內(nèi)容和點(diǎn)擊的影片也將在此用Mplayer 播放視頻。
網(wǎng)絡(luò)視頻資源訪問(wèn)模塊首先需要在嵌入式設(shè)備中進(jìn)行開發(fā)模式的選擇,F(xiàn)TP 是C/S 模式,HTTP 可以是B/S 模式。在實(shí)際應(yīng)用中,F(xiàn)TP 服務(wù)器,一般需要客戶端用QTE 編輯瀏覽器,這樣可以將其延伸為B/S架構(gòu),易形成友好的點(diǎn)播界面,同時(shí)提供更豐富的網(wǎng)絡(luò)功能,如資源搜索等。本文采用的是FTP 服務(wù)器。
在S3C2410 硬件平臺(tái)上對(duì)網(wǎng)卡支持的前提下,有多種開源的媒體播放軟件可以選擇?;诩夹g(shù)上的成熟度,Mplayer 播放器具有便于嵌入式平臺(tái)移植以及支持多種流行的音視頻編解碼方式等優(yōu)勢(shì),經(jīng)過(guò)多次試驗(yàn),筆者在嵌入式平臺(tái)上用Mplayer 實(shí)現(xiàn)了視頻的點(diǎn)播,同時(shí)采用QT 來(lái)編寫播放的點(diǎn)播界面。
本模塊功能是管理一段內(nèi)存緩沖區(qū),提供與基本文件操作類似的讀取、寫入和刪除操作的接口。設(shè)計(jì)此模塊目的是在媒體播放過(guò)程中,需要一個(gè)被全局共享的內(nèi)存緩沖區(qū),由視頻資源訪問(wèn)模塊實(shí)時(shí)接收數(shù)據(jù),并將其臨時(shí)的存儲(chǔ)在這段內(nèi)存緩沖區(qū),同時(shí)讀取視頻數(shù)據(jù)塊并實(shí)時(shí)播放,為此設(shè)計(jì)了讀取和寫入接口。提供刪除操作接口是為了節(jié)省有限內(nèi)存存儲(chǔ)資源,以便將播放過(guò)的視頻數(shù)據(jù)實(shí)時(shí)的刪除。
進(jìn)行異步讀寫是數(shù)據(jù)存儲(chǔ)模塊在讀寫磁盤過(guò)程中的具體實(shí)現(xiàn)途徑。一般視頻資源的磁盤文件較大,讀寫過(guò)程耗費(fèi)系統(tǒng)時(shí)間,執(zhí)行同步讀寫操作會(huì)阻塞讀寫文件的函數(shù)進(jìn)程,而且讀寫函數(shù)直到文件讀寫結(jié)束后才返回到調(diào)用處,嚴(yán)重影響了程序執(zhí)行效率。而進(jìn)行異步讀寫操作時(shí),即使磁盤讀寫操作沒有結(jié)束,讀寫操作轉(zhuǎn)入后臺(tái)進(jìn)行。在后臺(tái)執(zhí)行結(jié)束后,回調(diào)函數(shù)通知應(yīng)用程序讀寫結(jié)束,異步讀寫以應(yīng)答方式與系統(tǒng)通信,可以顯著地提高整個(gè)系統(tǒng)的效率。
VOD 在視頻數(shù)據(jù)傳輸過(guò)程中存在大碼率、傳輸時(shí)間長(zhǎng)等特點(diǎn),使得VOD 對(duì)服務(wù)器的帶寬以及響應(yīng)延遲的要求都很高。應(yīng)用數(shù)據(jù)緩存技術(shù),可以減少磁盤讀寫次數(shù),降低數(shù)據(jù)請(qǐng)求響應(yīng)延遲,提高服務(wù)器并發(fā)處理能力。本文通過(guò)對(duì)數(shù)據(jù)分塊、順序預(yù)取、緩存替換等策略來(lái)提高緩存數(shù)據(jù)塊的命中率[3]。
視頻緩存以傳統(tǒng)網(wǎng)絡(luò)緩存為基礎(chǔ),傳統(tǒng)網(wǎng)絡(luò)緩存算法[4]有基于最近最少使用的緩存算法、基于訪問(wèn)頻率的緩存算法、訪問(wèn)頻率與最近最少使用的緩存算法等,在PC 機(jī)的VOD 系統(tǒng)上得到廣泛應(yīng)用。目前,切分算法是一種較為新穎的處理視頻文件過(guò)大的方式?;谇衅囊曨l點(diǎn)播算法主要思想是針對(duì)視頻數(shù)據(jù)傳輸量大的特性,選擇不同的切分規(guī)則,將視頻數(shù)據(jù)切分成不同片段,應(yīng)用不同機(jī)制來(lái)對(duì)文件進(jìn)行緩存的方法,使緩存空間有效利用。
本文對(duì)有嵌入式設(shè)備需求的用戶點(diǎn)播特點(diǎn)和點(diǎn)播的流程進(jìn)行分析,改進(jìn)了基于切片的視頻點(diǎn)播算法,提出了一種基于數(shù)據(jù)塊讀寫隊(duì)列的數(shù)據(jù)緩存算法,這種緩存機(jī)制的主要思想類似于CPU 指令隊(duì)列的緩存策略[5]。該算法將服務(wù)器傳輸?shù)牧髅襟w影片文件信息流均勻固定切塊(Fixed segment ),將視頻數(shù)據(jù)流均勻分成n 個(gè)數(shù)據(jù)塊,當(dāng)有用戶t 時(shí)間段訪問(wèn)視頻時(shí),將首個(gè)數(shù)據(jù)塊先傳遞給用戶,若用戶選擇播放,則從服務(wù)器將視頻流分塊傳遞給客戶端,采用隊(duì)列機(jī)制,在此排隊(duì)等候,當(dāng)用戶客戶端沒有足夠的緩存空間緩存當(dāng)前視頻流數(shù)據(jù)塊時(shí),采用內(nèi)存-緩存和磁盤-緩存相結(jié)合,借助SDRAM、LCD 緩存和輔存SD 卡等存儲(chǔ)介質(zhì),在客戶端預(yù)留至少1G 的空閑存儲(chǔ)區(qū),對(duì)資源信息進(jìn)行二級(jí)緩存,以降低服務(wù)器負(fù)載,減少傳輸延遲。并且采用異步讀寫方式,以提高系統(tǒng)的效率。這種方式適用于嵌入式設(shè)備,其移動(dòng)便攜、操作簡(jiǎn)便,但其硬件資源有限,難以獲得更為精確的用戶點(diǎn)播規(guī)律,該算法只有通過(guò)降低算法復(fù)雜度實(shí)現(xiàn)。
3.1.1 數(shù)據(jù)塊寫入隊(duì)列算法流程
對(duì)數(shù)據(jù)塊的寫入操作包括兩部分,一是將請(qǐng)求到達(dá)的點(diǎn)播資源分塊寫入緩沖區(qū)或者存儲(chǔ)到本地磁盤,二是對(duì)相鄰數(shù)據(jù)塊的請(qǐng)求進(jìn)行回應(yīng),視頻數(shù)據(jù)分?jǐn)?shù)據(jù)塊寫入隊(duì)列的操作流圖如圖3所示。
圖3 數(shù)據(jù)塊寫入隊(duì)列操作流圖
3.1.2 數(shù)據(jù)塊讀出隊(duì)列算法流程
數(shù)據(jù)存儲(chǔ)模塊中,當(dāng)有本地資源被提出請(qǐng)求的時(shí)候,數(shù)據(jù)塊的讀出隊(duì)列操作流圖如圖4所示。
通過(guò)集成的LCD 控制器,ARM 處理器可以利用SDRAM 控制器,使顯示緩沖和系統(tǒng)共享RAM,從而能夠直接讀/寫顯示緩沖。這樣做能有效地節(jié)省顯示緩存并且不用添加額外的顯示緩存控制器,節(jié)約成本,但是會(huì)占用一部分系統(tǒng)總線帶寬。每當(dāng)開啟LCD 控制器的掃描,系統(tǒng)總線就要分出一部分帶寬來(lái)滿足對(duì)LCD 的不間斷掃描。這種方法對(duì)系統(tǒng)總線的占用情況與LCD 的大小和類型有關(guān)。
實(shí)際操作中,用戶只需要將要顯示的數(shù)據(jù)塊,按特定的格式寫入顯示緩存,屏幕就會(huì)顯示相應(yīng)圖像。在軟件設(shè)計(jì)中,只要準(zhǔn)確得到這個(gè)顯示緩存的地址,對(duì)它進(jìn)行相應(yīng)的操作即可。Linux 的幀緩沖(Framebuffer)設(shè)備驅(qū)動(dòng)程序是專為顯示設(shè)備提供的。筆者在本系統(tǒng)中,通過(guò)修改調(diào)試這個(gè)程序驗(yàn)證數(shù)據(jù)塊讀寫隊(duì)列的緩存算法的有效性,經(jīng)過(guò)反復(fù)多次測(cè)試,達(dá)到了理論的預(yù)期效果。
圖4 數(shù)據(jù)塊讀出操作流圖
系統(tǒng)啟動(dòng)后,在開發(fā)板上的LCD 顯示屏上可見VOD 客戶端界面,如圖5所示。輸入FTP 地址后,點(diǎn)擊鏈接按鈕,可鏈接到FTP 服務(wù)器上;當(dāng)屏幕上出現(xiàn)視頻資源,選擇觀看的視頻,點(diǎn)擊播放按鈕,在LCD 屏上即可播放視頻,如圖6所示。
圖5 VOD 客戶端視頻播放前
圖6 VOD 客戶端視頻播放后
實(shí)驗(yàn)結(jié)果表明,以數(shù)據(jù)塊為粒度研究的數(shù)據(jù)緩存機(jī)制,有效地避免了點(diǎn)播過(guò)程中造成的點(diǎn)播延遲。依據(jù)用戶的點(diǎn)播行為進(jìn)行分塊緩存,對(duì)提高點(diǎn)播系統(tǒng)的交互性能是十分必要的,對(duì)VOD 系統(tǒng)技術(shù)具有很重要的實(shí)際意義。在今后的工作中,為提高VOD 系統(tǒng)的整體性能,還需要對(duì)影片在磁盤上的分布策略和優(yōu)化調(diào)度算法做進(jìn)一步的研究。
[1]李裕.基于手持設(shè)備移動(dòng)流媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京郵電大學(xué)碩士學(xué)位論文,2011:28-33.
[2]聞婷婷.P2P 點(diǎn)播系統(tǒng)存儲(chǔ)管理研究與實(shí)現(xiàn)[D].武漢:華中科技大學(xué)碩士學(xué)位論文,2011:13-23.
[3]蘇杭,王勁林.VoD 系統(tǒng)的數(shù)據(jù)緩存策略研究[J].微計(jì)算機(jī)應(yīng)用,2009;30(11):34-37.
[4]周程.視頻點(diǎn)播系統(tǒng)緩存算法研究[D].杭州:浙江大學(xué)碩士學(xué)位論文,2011:7-13.
[5]胡玉琦.視頻點(diǎn)播系統(tǒng)中代理緩存及流調(diào)度技術(shù)研究[D].沈陽(yáng):東北大學(xué)博士學(xué)位論文,2005:24-30.
大慶師范學(xué)院學(xué)報(bào)2015年3期