鄧博軒,李學(xué)豐,閆尉深
(1.長(zhǎng)安大學(xué) 信息工程學(xué)院,西安 710000; 2.華錄易云科技有限公司,南京 211800;3.河北省高速公路延崇管理中心,河北 張家口 075000)
0 引言
在高速移動(dòng)的列車車廂內(nèi),用戶終端能穩(wěn)定地獲取視頻資源是重點(diǎn)研究?jī)?nèi)容。目前主流的接入網(wǎng)絡(luò)方式包括4G/5G蜂窩移動(dòng)通信網(wǎng)絡(luò)和WiFi無(wú)線接入。5G源于移動(dòng)通信領(lǐng)域,運(yùn)用超密集組網(wǎng)和大規(guī)模天線陣列等關(guān)鍵技術(shù)[1],可大幅提高數(shù)據(jù)傳輸速率,但是由于載波頻率過(guò)高,毫米波波段的繞射能力下降,只有密集部署基站才能在室內(nèi)等障礙物多的場(chǎng)合取得良好覆蓋效果,但這在用戶較少的地方難以取得良好的經(jīng)濟(jì)效益。另外,在高速移動(dòng)的火車上,由于5G的波長(zhǎng)較短,高速移動(dòng)列車和基站之間的相對(duì)運(yùn)動(dòng)產(chǎn)生的多普勒頻移也要大于4G;而且,沿途變化的地形地貌也會(huì)加劇傳輸信道的時(shí)變性,為信道估計(jì)提出了更大的挑戰(zhàn)。因此,目前將5G應(yīng)用于列車上還存在一些困難,尚沒(méi)有較好的解決方案。
WiFi源于計(jì)算機(jī)網(wǎng)絡(luò),屬于成熟的移動(dòng)端無(wú)線接入技術(shù),由于覆蓋范圍和工作載頻的限制,基本屬于靜態(tài)的非移動(dòng)場(chǎng)景下的通信模式。WiFi通常由連接有線光纖網(wǎng)絡(luò)的路由器提供,不支持終端的快速移動(dòng)。此外,當(dāng)前熱門的無(wú)線CPE,采用大規(guī)模天線陣列、正交頻分復(fù)用等關(guān)鍵技術(shù),在較好的高速條件下,具有允許接入移動(dòng)網(wǎng)絡(luò)的能力,但獲取的網(wǎng)絡(luò)帶寬不太穩(wěn)定。
無(wú)線局域網(wǎng)下的嵌入式視頻點(diǎn)播系統(tǒng)旨在解決網(wǎng)絡(luò)帶寬不穩(wěn)定所導(dǎo)致的視頻播放卡頓的問(wèn)題,文獻(xiàn)[2]提出的網(wǎng)絡(luò)視頻點(diǎn)播系統(tǒng)支持視頻媒體編解碼,客戶端通過(guò)以太網(wǎng)接口與視頻服務(wù)器建立網(wǎng)絡(luò)連接從而進(jìn)行數(shù)字媒體傳輸,但該設(shè)計(jì)采用的通信方式不支持高速移動(dòng)的車載設(shè)備終端且文獻(xiàn)中沒(méi)有對(duì)視頻傳輸過(guò)程中的網(wǎng)絡(luò)帶寬穩(wěn)定性進(jìn)行測(cè)試。文獻(xiàn)[3]提出的流媒體視頻點(diǎn)播系統(tǒng),重點(diǎn)對(duì)原始視頻的預(yù)處理進(jìn)行了改進(jìn)。采用多編碼技術(shù)協(xié)作的無(wú)損壓縮方案,使得視頻數(shù)據(jù)傳輸延遲減小從而保證視頻播放的流暢性。但文中僅限于對(duì)視頻點(diǎn)播器的功能效果進(jìn)行測(cè)試,并未對(duì)視頻傳輸速率、網(wǎng)絡(luò)的穩(wěn)定性等系統(tǒng)性能進(jìn)行有效分析。文獻(xiàn)[4]提出的視頻點(diǎn)播技術(shù)采用HTTP流媒體傳輸協(xié)議與FFmpeg開源庫(kù)相結(jié)合的方式實(shí)現(xiàn)視頻信息在終端平臺(tái)的展示,但對(duì)于文中提出的通過(guò)減小播放切片個(gè)數(shù)和切片時(shí)長(zhǎng)來(lái)降低視頻播放延遲的理論方案還缺乏系統(tǒng)性的驗(yàn)證與分析。
針對(duì)列車旅客在4/5G網(wǎng)絡(luò)下使用手機(jī)瀏覽視頻時(shí)網(wǎng)絡(luò)穩(wěn)定性差的問(wèn)題,本文采用一種次優(yōu)的解決思路,即在通信網(wǎng)絡(luò)良好的時(shí)候,盡可能緩存一些流媒體數(shù)據(jù)到本地存儲(chǔ)器中,以便在網(wǎng)絡(luò)不穩(wěn)定時(shí)通過(guò)釋放緩存來(lái)延緩卡頓現(xiàn)象,同時(shí)可根據(jù)用戶選擇的熱度,確定視頻資料的保存時(shí)效。
本文提出了一種高速移動(dòng)場(chǎng)景下的平穩(wěn)寬帶車載視頻點(diǎn)播系統(tǒng),用戶無(wú)須下載客戶端,采用通用的HTTP協(xié)議,增加了移動(dòng)終端與服務(wù)器設(shè)備連接的靈活性,縮短了臨時(shí)旅客的接入時(shí)間。在技術(shù)開發(fā)方面,使用開源的Linux+Apache+Mysql+Php (LAMP)架構(gòu)進(jìn)行軟件開發(fā),在高速移動(dòng)和多用戶的環(huán)境下充分利用LAMP具有的Web資源豐富、高性能、高并發(fā)等優(yōu)勢(shì),支持多個(gè)用戶同時(shí)點(diǎn)播視頻。系統(tǒng)提供穩(wěn)定的網(wǎng)絡(luò)環(huán)境,可實(shí)現(xiàn)高清視頻的流暢播放,使乘客擁有良好的觀影體驗(yàn)。
1 系統(tǒng)設(shè)計(jì)與硬件平臺(tái)
視頻點(diǎn)播系統(tǒng)由客戶端和服務(wù)器端組成,客戶端為手機(jī)或筆記本電腦等移動(dòng)終端;車載服務(wù)器安裝在列車車廂內(nèi),其搭載無(wú)線WiFi模塊和以太網(wǎng)MAC控制器,用于構(gòu)建車載無(wú)線通信網(wǎng)絡(luò),外接存儲(chǔ)單元存儲(chǔ)視頻資源,本設(shè)計(jì)的物理拓?fù)浣Y(jié)構(gòu)如圖1所示。

圖1 物理拓?fù)浣Y(jié)構(gòu)圖
本系統(tǒng)分別從移動(dòng)客戶端和車載服務(wù)器兩方面進(jìn)行設(shè)計(jì),如圖2所示為系統(tǒng)設(shè)計(jì)框圖??蛻舳顺绦蚴腔跒g覽器而設(shè)計(jì),由于用戶終端安裝的瀏覽器不同,故需要對(duì)瀏覽器的類型進(jìn)行自適應(yīng)識(shí)別。利用HTML5/Flash自適應(yīng)播放應(yīng)用[5],播放器可以自動(dòng)偵測(cè)到瀏覽器類型。

圖2 系統(tǒng)設(shè)計(jì)框圖
車載服務(wù)器的硬件平臺(tái)采用模塊化的設(shè)計(jì)方法,由核心板和外圍模塊接口構(gòu)成,核心板選用基于s3c6410處理器的ARM最小系統(tǒng),外圍模塊接口主要包括RS232接口,固態(tài)硬盤接口,JTAG接口和無(wú)線路由模塊接口[6]。s3c6410是一款高性能的32位處理器,工作主頻高達(dá)667 MHz,內(nèi)部集成USB、UART、SDRAM和FLASH控制器,支持豐富的外部設(shè)備[7],且在交互式操作較為頻繁的狀態(tài)下具有較快的響應(yīng)速度。無(wú)線路由模塊使客服端和服務(wù)器處于同一個(gè)無(wú)線局域網(wǎng)下,在服務(wù)器程序啟動(dòng)之后,由無(wú)線路由模塊提供WiFi信號(hào),客戶端連接WiFi并通過(guò)瀏覽器向服務(wù)器發(fā)出點(diǎn)播請(qǐng)求。無(wú)線路由模塊選用USR-WiFi232-D2模組,其發(fā)射的WiFi信號(hào)傳輸速率高達(dá)150 Mbps,為近距離傳輸提供了較高的數(shù)據(jù)吞吐量,減少了信道的占用時(shí)間,同時(shí)可容納32個(gè)WiFi客戶端接入,空曠無(wú)遮擋物的環(huán)境下,WiFi信號(hào)可覆蓋100 m直徑的圓形區(qū)域[8],符合本系統(tǒng)的要求。
本設(shè)計(jì)運(yùn)行在嵌入式硬件平臺(tái)上的Linux+Apache+Mysql+Php(LAMP)環(huán)境中,客戶端與服務(wù)器之間采用B/S模式[9]。系統(tǒng)的工作原理如下:移動(dòng)客戶端在良好的無(wú)線網(wǎng)絡(luò)環(huán)境下與車載服務(wù)器端建立連接,采用HTTP協(xié)議通過(guò)無(wú)線WiFi進(jìn)行數(shù)據(jù)交互,移動(dòng)終端向服務(wù)器發(fā)送視頻點(diǎn)播請(qǐng)求,Apache服務(wù)器響應(yīng)后,交給Php引擎解析文件,處理請(qǐng)求,并將視頻點(diǎn)播結(jié)果返回給客戶端??紤]到服務(wù)器端視頻資源的實(shí)時(shí)更新性,將視頻資源存放在固態(tài)硬盤中的特定文件下,方便用戶更新資源。
2 軟件系統(tǒng)設(shè)計(jì)
2.1 操作系統(tǒng)軟件的制作
Linux系統(tǒng)除了有開源、穩(wěn)定和良好的移植性等優(yōu)點(diǎn),還支持所有的TCP/IP協(xié)議,具備穩(wěn)定可靠的網(wǎng)絡(luò)功能。因此車載服務(wù)器的操作系統(tǒng)采用Linux作為軟件的開發(fā)和調(diào)試平臺(tái)。從軟件的角度分析,嵌入式Linux系統(tǒng)通常包括引導(dǎo)加載程序、Linux內(nèi)核、文件系統(tǒng)和用戶應(yīng)用程序這4個(gè)層次[10]。
Bootloader是指系統(tǒng)的引導(dǎo)加載程序,可以完成硬件設(shè)備的初始化并建立內(nèi)存空間的映射圖,本系統(tǒng)Bootloader采用的是支持ARM體系結(jié)構(gòu)的u-boot。移植過(guò)程的關(guān)鍵點(diǎn)是在下載并解壓u-boot源碼后,需要將解壓后的文件導(dǎo)入到本地目錄下,并重新配置目錄中的Makefile文件,使用配置好的交叉編譯工具對(duì)系統(tǒng)源碼進(jìn)行編譯,生成u-boot.bin文件說(shuō)明編譯成功。
Linux內(nèi)核位于操作系統(tǒng)的最底層,負(fù)責(zé)管理外圍硬件設(shè)備的驅(qū)動(dòng),而且為系統(tǒng)的應(yīng)用程序提供合適的運(yùn)行環(huán)境。內(nèi)核移植需要注意的地方是在配置內(nèi)核選項(xiàng)時(shí),要根據(jù)硬件資源添加所需的驅(qū)動(dòng)程序,主要包括網(wǎng)卡、USB、大容量存儲(chǔ)設(shè)備等,使最后編譯的內(nèi)核能夠支持s3c6410硬件平臺(tái)[11]。
雖然內(nèi)核是Linux系統(tǒng)的核心但用戶與操作系統(tǒng)交互的主要方式是系統(tǒng)文件。Linux系統(tǒng)開啟后,首先加載根文件系統(tǒng),根文件系統(tǒng)包含系統(tǒng)啟動(dòng)時(shí)所必須的目錄和關(guān)鍵性的文件,以及掛載其他文件系統(tǒng)所必備的文件。根文件系統(tǒng)的制作,需要利用編譯安裝好的Busybox工具包,在Busybox生成的install文件下添加bin目錄、root目錄、etc目錄、home目錄等,并為每個(gè)目錄導(dǎo)入對(duì)應(yīng)的設(shè)備文件,最后使用mkcramfs工具完成對(duì)根文件系統(tǒng)的打包。
2.2 基于Linux+Apache+Mysql+Php的設(shè)計(jì)方案
面對(duì)列車旅客人數(shù)較多,常出現(xiàn)同一時(shí)刻服務(wù)器用戶訪問(wèn)量激增導(dǎo)致的視頻流傳輸不穩(wěn)定的情況。需設(shè)計(jì)大流量、高并發(fā)車載服務(wù)器系統(tǒng)架構(gòu),在軟件架構(gòu)上選用Linux+Apache+Mysql+Php為組合的LAMP架構(gòu),其具備高性能的操作系統(tǒng)、高穩(wěn)定的Web服務(wù)器、高存儲(chǔ)量的數(shù)據(jù)庫(kù)、高效率的編程語(yǔ)言。
Apache服務(wù)器通過(guò)HTTP協(xié)議響應(yīng)客戶端請(qǐng)求并提供Web服務(wù),擁有快速處理Php程序的能力,不容易出現(xiàn)連接超時(shí)的情況,適合應(yīng)用于訪問(wèn)量較高的站點(diǎn)。Php服務(wù)程序以Apache服務(wù)器為依托,側(cè)重于對(duì)客戶端請(qǐng)求的處理并高效率的執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。Mysql數(shù)據(jù)庫(kù)對(duì)視頻資源進(jìn)行動(dòng)態(tài)管理,數(shù)據(jù)存儲(chǔ)量大,支持視頻流的存儲(chǔ),可與Apache服務(wù)器建立穩(wěn)定連接,同時(shí)Mysql數(shù)據(jù)庫(kù)沒(méi)有用戶數(shù)量限制,多個(gè)客戶端可同時(shí)使用一個(gè)數(shù)據(jù)庫(kù),適用于響應(yīng)多用戶請(qǐng)求的系統(tǒng)設(shè)計(jì)?;贚AMP框架的模塊交互流程如圖3所示。

圖3 LAMP框架模塊交互流程圖
視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)基于HTTP協(xié)議,HTTP協(xié)議屬于一種請(qǐng)求/響應(yīng)模式的協(xié)議,是實(shí)現(xiàn)客戶端與服務(wù)端通信的常用協(xié)議[12]。此外,在多用戶訪問(wèn)服務(wù)器的情況下,使用HTTP協(xié)議有利于減輕服務(wù)器的負(fù)擔(dān),能夠?qū)⒏嗟腃PU資源提供對(duì)外服務(wù)。在視頻點(diǎn)播系統(tǒng)具備良好通信協(xié)議的基礎(chǔ)上,用戶可在瀏覽器中輸入服務(wù)器IP地址,回車觸發(fā)頁(yè)面文件名請(qǐng)求,Apache服務(wù)器接收到響應(yīng)后,調(diào)用Php服務(wù)程序并啟動(dòng)Php引擎對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)[13]。Php引擎將會(huì)對(duì)Apache傳送過(guò)來(lái)的文件從頭到尾進(jìn)行掃描,根據(jù)命令從后臺(tái)讀取,處理數(shù)據(jù),并動(dòng)態(tài)地生成相應(yīng)的HTML頁(yè)面,最終服務(wù)器通過(guò)HTTP協(xié)議將頁(yè)面返回給瀏覽器。視頻點(diǎn)播流程如圖4所示。

圖4 視頻點(diǎn)播流程圖
2.3 服務(wù)端播放器程序的設(shè)計(jì)
Apache服務(wù)器采用php程序調(diào)用的方式實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的動(dòng)態(tài)交互。php的程序結(jié)構(gòu)主要主要有四部分組成,分別為服務(wù)端應(yīng)用編程接口、主程序、Php引擎和代碼擴(kuò)展層。服務(wù)端應(yīng)用編程接口位于php框架的最外層,負(fù)責(zé)與外圍模塊進(jìn)行數(shù)據(jù)交互;主程序主要完成協(xié)議的解析、Web服務(wù)器的通信、文件流的處理等工作;Php引擎不能單獨(dú)存在,需要依托Apache服務(wù)器,它是Apache功能模塊的一種擴(kuò)展,主要用于解析php程序[14]。代碼擴(kuò)展層主要由類庫(kù)和函數(shù)組成,是擴(kuò)充php功能的一種方式。采用Php語(yǔ)言編寫的服務(wù)器端網(wǎng)站主頁(yè)主要包括視頻,圖片,書籍,上傳幾個(gè)選項(xiàng)。部分代碼如下:
視頻點(diǎn)播系統(tǒng)采用Video標(biāo)簽在頁(yè)面中嵌入視頻播放器,通過(guò)Video.js播放器庫(kù)所提供的HTML/Flash自適應(yīng)播放應(yīng)用[15],客戶端可以自動(dòng)偵測(cè)當(dāng)前瀏覽器類型。根據(jù)是否支持HTML5標(biāo)簽和Mp4/H.264編碼格式,決定使用Video標(biāo)簽嵌入視頻播放器還是調(diào)用flash程序來(lái)實(shí)現(xiàn)視頻播放??蛻舳瞬シ拍J皆O(shè)計(jì)如圖5所示。

圖5 客戶端播放模式設(shè)計(jì)圖
下面是引入Video播放的部分核心代碼:
1)在頁(yè)面中head區(qū)域引用必要的js文件
2)設(shè)置flash路徑,Video.js會(huì)在不支持HTML5的瀏覽器中使用Flash播放視頻文件:
Videojs.option.flash.swf="Video-js.swf"
3)設(shè)置視頻內(nèi)容文件信息,包括路徑信息,播放器支持的視頻格式,以及播放器的窗口大小。其中WebM文件格式主要支持Vorbis音頻編碼和VP8視頻編碼; Ogg文件格式支持Vorbis音頻編碼和Theora視頻編碼。
2.4 數(shù)據(jù)庫(kù)程序的設(shè)計(jì)
為了更好的對(duì)數(shù)據(jù)進(jìn)行處理操作,使用了Mysql數(shù)據(jù)管理系統(tǒng),在數(shù)據(jù)庫(kù)中專門為系統(tǒng)中的幾類對(duì)象建立了數(shù)據(jù)表,包括影片信息表、用戶信息表、資源分類表、點(diǎn)播統(tǒng)計(jì)表等。影片信息表主要包括如下屬性:存儲(chǔ)影片ID、影片文件名、影片所屬分類、影片描述、上傳時(shí)間、上傳影片名稱、上傳影片大小、文件存儲(chǔ)地址等[16],其中影片ID是影片在數(shù)據(jù)庫(kù)中的唯一標(biāo)記,通過(guò)該屬性可以檢索到對(duì)應(yīng)的視頻。影片信息表中的關(guān)鍵字段如表1所示。

表1 影片信息表
系統(tǒng)中的每個(gè)頁(yè)面都動(dòng)態(tài)生成,頁(yè)面顯示的內(nèi)容從數(shù)據(jù)庫(kù)實(shí)時(shí)提取會(huì)導(dǎo)致操作量激增,為了減少連接服務(wù)器、選擇數(shù)據(jù)庫(kù)等重復(fù)性操作,本文定義了一個(gè)數(shù)據(jù)庫(kù)訪問(wèn)類DB_Mysql,將重復(fù)執(zhí)行的程序隱藏在類的內(nèi)部。該類的定義如下:
class DB_Mysql
{
var $Host = "localhost";//服務(wù)器地址
var $Database = "media";//數(shù)據(jù)庫(kù)名稱
var $User = "root"; //用戶名
var $Password = ""; //用戶密碼
var $Link_ID = 0; //數(shù)據(jù)庫(kù)連接
var $Query_ID = 0; //查詢結(jié)果
var $Row_Result = array();//結(jié)果組成的數(shù)組
var $Field_Result = array();//結(jié)果集字段名組成的數(shù)組
var $Affected_Rows; //影響的行數(shù)
var $Rows; //結(jié)果集中記錄行數(shù)
var $Fields; //結(jié)果集中字段個(gè)數(shù)
var $Row_Position = 0; //記錄指針位置索引
function_construct();//建立服務(wù)器連接
function_destruct();//取消服務(wù)器連接
Function connect($Database= "",$Host= "",$User = "",$Password = "") ;//數(shù)據(jù)庫(kù)連接
function query($Query_String);//字符串查詢
function seek($pos);//數(shù)據(jù)存儲(chǔ)位置搜索
function get_rows_array() ;//行數(shù)結(jié)果的集中記錄
function get_fields_array() ;//字段個(gè)數(shù)結(jié)果的集中記錄
function get_affected_rows() ;//函數(shù)返回前一次Mysql操作所影響的記錄行數(shù)。
function get_rows(); //行數(shù)獲取
function get_fields(); //字段個(gè)數(shù)獲取
function fetch_one_array($sql);//數(shù)據(jù)以數(shù)字索引方式存儲(chǔ)在數(shù)組中
}
DB_Mysql類是基于Mysql擴(kuò)展函數(shù)庫(kù)封裝得到的[17],該類中,屬性$Host、$Database、$User、$Password定義了連接 Mysql使用的默認(rèn)參數(shù);$Row_Result為查詢返回的結(jié)果集組成的數(shù)組;$Field_Result為查詢結(jié)果集中字段名稱組成的數(shù)組;Rows為查詢結(jié)果集的記錄行數(shù)。DB_Mysql類的使用,有利于數(shù)據(jù)庫(kù)與頁(yè)面交互程序的快速執(zhí)行。
2.5 LAMP軟件的移植
嵌入式軟件開發(fā)采用交叉編譯,源文件在宿主機(jī)上編譯,運(yùn)行在目標(biāo)機(jī)上。LAMP軟件的移植,是指在嵌入式平臺(tái)上運(yùn)行交叉編譯后的二進(jìn)制文件的過(guò)程[18]。這里重點(diǎn)說(shuō)明Apache和Php的移植過(guò)程。
1)Apache的移植。
Apache的交叉編譯,需要Apache庫(kù)文件的支持,通過(guò)gcc編譯器生成pc端的Apache可執(zhí)行文件,使用arm-linux-gcc交叉工具鏈對(duì)Apache源文件進(jìn)行編譯。移植流程是在官網(wǎng)上下載Apache源碼,進(jìn)入解壓縮的Apache源文件根目錄進(jìn)行配置:
[heyun@heyun Apache-arm11]./configure CC=arm-linux-gcc--host=arm-linux--prefix=/usr/local/Apache-arm--enable-so--enable-modules=so--with-mpm=prefork ac_cv_file__dev_zero=yes
ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes
apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes ap_void_ptr_lt_long=no
配置選項(xiàng)中,指明了交叉編譯工具鏈arm-linux-gcc ,生成二進(jìn)制可執(zhí)行代碼的安裝目錄/usr/local/Apache-arm,編譯成動(dòng)態(tài)模塊。配置完成后,會(huì)自動(dòng)將當(dāng)前目錄下configure文件中的CC、LD、AR、NM、RANLIB以及STRIP選項(xiàng)修改為:
CC=arm-linux-gcc
AR=arm-linux-ar
LD=arm-linux-ld
NM=arm-linux-nm
STRIP=arm-linux-strip
RANLIB=arm-linux-ranlib。
配置完成后,執(zhí)行make進(jìn)行編譯。
2)Php的移植。
Php的移植需要Php、libconv、libxml2、zlib等庫(kù)文件的支持[19]。對(duì)于Php編譯,在官網(wǎng)上下載Php-5.2.0源碼后,進(jìn)入解壓縮的Php源文件根目錄進(jìn)行配置:
[heyun@heyun Php-5.2.0]:./configureCC=arm-linux-gcc--host=arm-linux--prefix=/usr/local/Apache-arm11/Php-5.2.0/sapi/Apache/--with-apxs=/usr/local/Apache-arm11/Apache/bin/apxs--enable-pdo=shared--with-zlib --with-iconv
配置選項(xiàng)與Apache類似,不同之處在于Php的編譯指明了依賴庫(kù)文件zlib,libconv。配置完成后,執(zhí)行make進(jìn)行編譯即可。
3)配置Apache支持Php。
由于Apache默認(rèn)支持靜態(tài)網(wǎng)頁(yè),不支持Php頁(yè)面,所以Apache與Php各自獨(dú)立編譯完成后,需配置二者的協(xié)同工作[20]。進(jìn)入編譯好的Apache文件中,找到configure文件,主要對(duì)該文件的下述選項(xiàng)進(jìn)行配置:
#登陸服務(wù)器的端口號(hào)與用戶名的設(shè)置
Port 8080
User nobody
Group nobody
#網(wǎng)站根目錄的設(shè)置
DocumentRoot "/sdcard/ShipinDianBo/"
#配置Apache支持Php解析
DirectoryIndex index.html
DirectoryIndex index.Php
DirectoryIndex index.Php3
DirectoryIndex index.phtml
#指定Php解析器的路徑及類型
LoadModule.Php5_module libexec/libPhp5.so
ScriptAlias/cgi-bin/"/usr/local/Apache-arm11/cgi-bin/"
ScriptAlias/Php5/"/usr/local/Apache-arm11/Php/bin/"
AddType application/x-tar.tgz
AddType application/x-httpd-Php.Php3
AddType application/x-httpd-Php.Php
AddType application/x-httpd-Php.phtml
Apache與Php的移植和配置工作全部完成后,啟動(dòng)Apache服務(wù)器,自動(dòng)加載Php解析器,可實(shí)現(xiàn)客戶端與服務(wù)器端頁(yè)面的動(dòng)態(tài)交互。
3 系統(tǒng)測(cè)試
3.1 系統(tǒng)測(cè)試平臺(tái)
系統(tǒng)的嵌入式平臺(tái)搭建了s3c6410為處理器的ARM最小系統(tǒng),USR-WiFi232-D2模組,固態(tài)硬盤,RS232串口模塊,電源模塊。嵌入式系統(tǒng)采用linux內(nèi)核,使用yaffs文件管理系統(tǒng)[21],服務(wù)器的運(yùn)行環(huán)境選用LAMP架構(gòu),客戶端應(yīng)用程序基于移動(dòng)終端而開發(fā)。
程序開發(fā)階段,在pc端使用SecureCRT軟件對(duì)系統(tǒng)進(jìn)行調(diào)試,通過(guò)串口控制嵌入式平臺(tái),將之前交叉編譯好的LAMP二進(jìn)制文件拷貝到板載固態(tài)硬盤中,在SecureCRT軟件下通過(guò)命令,將二進(jìn)制文件拷貝到linux系統(tǒng)對(duì)應(yīng)的文件目錄下。USR-WiFi232-D2模組需配置為AP模式,設(shè)置IP地址為:10.100.100.100。最后配置嵌入式系統(tǒng)初始化文件,設(shè)置上電自動(dòng)開啟Apache服務(wù)器程序。
3.2 測(cè)試結(jié)果與分析
嵌入式平臺(tái)與pc連接上后,使用ifconfig命令查看服務(wù)端的IP地址,使用ps命令查看Apache是否正常運(yùn)行,測(cè)試結(jié)果如下:
[root@CHD /]# ifconfig
[root@CHD /]# eth0 Link encap:Ethernet HWaddr 08:90:00:A0:90:90inetaddr:10.100.100.100Bcast:10.255.255.255Mask:255.0.0.0UPBROADCAST RUNNING MULTICAST MTU:1500 Metric:1
[root@CHD /]#./Apachectl start
[Fri Sep 29 05:14:37 2000] [alert] httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
從上面結(jié)果測(cè)試結(jié)果可以看出,配置Apache服務(wù)器時(shí),將IP地址默認(rèn)設(shè)置為10.100.100.100。使用Apachectl命令啟動(dòng)Apache服務(wù)器,從上面打印的信息可以看出,服務(wù)器正常啟動(dòng)。如圖6所示,Apache啟動(dòng)后默認(rèn)同時(shí)開啟多個(gè)進(jìn)程,多個(gè)用戶同時(shí)訪問(wèn)Apache服務(wù)器,可縮短服務(wù)器的響應(yīng)時(shí)間,給用戶提供穩(wěn)定可靠的數(shù)據(jù)。

圖6 Apache開啟多進(jìn)程
調(diào)試完成后,重新啟動(dòng)嵌入式平臺(tái),移動(dòng)終端確認(rèn)連接上WiFi信號(hào)后打開瀏覽器,輸入IP地址10.10.100.100,回車即可訪問(wèn)服務(wù)器中的視頻資源。手機(jī)訪問(wèn)服務(wù)器主界面如圖7所示,視頻播放如圖8所示。

圖7 手機(jī)訪問(wèn)服務(wù)器主界面

圖8 視頻播放功能
為了測(cè)試視頻傳輸過(guò)程中的帶寬穩(wěn)定性和用戶觀看視頻的流暢度,將視頻的傳輸速率作為系統(tǒng)性能的核心指標(biāo)[22]。測(cè)試方法是在車載服務(wù)器和手機(jī)終端上分別安裝網(wǎng)絡(luò)性能測(cè)試工具iperf來(lái)對(duì)客戶端和服務(wù)端之間的網(wǎng)絡(luò)傳輸速率進(jìn)行檢測(cè),服務(wù)器系統(tǒng)安裝iperf后在終端輸入命令iperf -s開啟服務(wù)端,手機(jī)終端則需要打開iperf輸入命令iperf -c 10.10.100.100-t 60,測(cè)試60 s內(nèi)的網(wǎng)絡(luò)傳輸速率。如圖9所示為60 s內(nèi)網(wǎng)絡(luò)傳輸速率與時(shí)間的關(guān)系圖,圖中的虛線為網(wǎng)絡(luò)傳輸速率平均水平線。對(duì)圖中數(shù)據(jù)結(jié)果的分析可知,車載服務(wù)系統(tǒng)所在網(wǎng)絡(luò)的碼流傳輸速率基本穩(wěn)定在35 Mbps到56 Mbps區(qū)間內(nèi),均值為48.41 Mbps,方差為17.61,離散程度較小,傳輸速率在一段時(shí)間內(nèi)保持相對(duì)穩(wěn)定的狀態(tài)。由于流暢播放高清視頻所需要的帶寬至少為4 Mbps,系統(tǒng)的實(shí)時(shí)帶寬遠(yuǎn)高于播放高清視頻所需的帶寬且系統(tǒng)網(wǎng)絡(luò)較穩(wěn)定,故網(wǎng)絡(luò)性能測(cè)試結(jié)果滿足系統(tǒng)設(shè)計(jì)的要求。

圖9 傳輸速率與時(shí)間的關(guān)系圖
根據(jù)列車車廂所限制的空間范圍,測(cè)試其范圍內(nèi)不同位置的網(wǎng)絡(luò)傳輸速率及其帶寬穩(wěn)定性,將移動(dòng)設(shè)備在距離服務(wù)器的不同位置作為網(wǎng)絡(luò)信號(hào)測(cè)試點(diǎn),統(tǒng)計(jì)測(cè)試點(diǎn)距離車載服務(wù)器1 m至15 m之間網(wǎng)絡(luò)傳輸速率隨距離的變化情況,統(tǒng)計(jì)結(jié)果如圖10所示。實(shí)驗(yàn)結(jié)果表明,隨著客戶端與服務(wù)器之間傳輸距離的增大,碼流傳輸速率逐漸減小,變化范圍在18 Mbps到50 Mbps之間??梢钥吹剑诹熊囓噹试S的最遠(yuǎn)距離下,傳輸速率最小為18.2 Mbps,滿足系統(tǒng)對(duì)于傳輸高清視頻碼流速率的要求,能夠讓用戶在有限空間內(nèi)獲得良好的觀影體驗(yàn)。

圖10 距離與視頻傳輸速率的關(guān)系圖
4 結(jié)束語(yǔ)
本文利用嵌入式硬件的特點(diǎn),結(jié)合LAMP架構(gòu)的優(yōu)點(diǎn),提出了一種高速移動(dòng)場(chǎng)景下的平穩(wěn)寬帶車載視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)方案,設(shè)計(jì)出了硬件開發(fā)平臺(tái)和應(yīng)用軟件,客戶端與服務(wù)器之間是基于HTTP協(xié)議的B/S模式,服務(wù)器端采用LAMP框架部署網(wǎng)站。最后分別完成了服務(wù)器端和客戶端的工作,實(shí)現(xiàn)了視頻點(diǎn)播功能,經(jīng)測(cè)試硬件平臺(tái)穩(wěn)定可靠且網(wǎng)絡(luò)性能良好,服務(wù)器穩(wěn)定流暢地給用戶提供視頻點(diǎn)播服務(wù),滿足設(shè)計(jì)需求。在高速移動(dòng)場(chǎng)景下,面對(duì)大量的用戶群如何均衡帶寬負(fù)載,從而提升車載服務(wù)器的服務(wù)能力和網(wǎng)絡(luò)性能,是后期研究的一個(gè)主要方向。