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

圖1 物理拓撲結(jié)構(gòu)圖
本系統(tǒng)分別從移動客戶端和車載服務器兩方面進行設計,如圖2所示為系統(tǒng)設計框圖。客戶端程序是基于瀏覽器而設計,由于用戶終端安裝的瀏覽器不同,故需要對瀏覽器的類型進行自適應識別。利用HTML5/Flash自適應播放應用[5],播放器可以自動偵測到瀏覽器類型。

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

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

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

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

表1 影片信息表
系統(tǒng)中的每個頁面都動態(tài)生成,頁面顯示的內(nèi)容從數(shù)據(jù)庫實時提取會導致操作量激增,為了減少連接服務器、選擇數(shù)據(jù)庫等重復性操作,本文定義了一個數(shù)據(jù)庫訪問類DB_Mysql,將重復執(zhí)行的程序隱藏在類的內(nèi)部。該類的定義如下:
class DB_Mysql
{
var $Host = "localhost";//服務器地址
var $Database = "media";//數(shù)據(jù)庫名稱
var $User = "root"; //用戶名
var $Password = ""; //用戶密碼
var $Link_ID = 0; //數(shù)據(jù)庫連接
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é)果集中字段個數(shù)
var $Row_Position = 0; //記錄指針位置索引
function_construct();//建立服務器連接
function_destruct();//取消服務器連接
Function connect($Database= "",$Host= "",$User = "",$Password = "") ;//數(shù)據(jù)庫連接
function query($Query_String);//字符串查詢
function seek($pos);//數(shù)據(jù)存儲位置搜索
function get_rows_array() ;//行數(shù)結(jié)果的集中記錄
function get_fields_array() ;//字段個數(shù)結(jié)果的集中記錄
function get_affected_rows() ;//函數(shù)返回前一次Mysql操作所影響的記錄行數(shù)。
function get_rows(); //行數(shù)獲取
function get_fields(); //字段個數(shù)獲取
function fetch_one_array($sql);//數(shù)據(jù)以數(shù)字索引方式存儲在數(shù)組中
}
DB_Mysql類是基于Mysql擴展函數(shù)庫封裝得到的[17],該類中,屬性$Host、$Database、$User、$Password定義了連接 Mysql使用的默認參數(shù);$Row_Result為查詢返回的結(jié)果集組成的數(shù)組;$Field_Result為查詢結(jié)果集中字段名稱組成的數(shù)組;Rows為查詢結(jié)果集的記錄行數(shù)。DB_Mysql類的使用,有利于數(shù)據(jù)庫與頁面交互程序的快速執(zhí)行。
2.5 LAMP軟件的移植
嵌入式軟件開發(fā)采用交叉編譯,源文件在宿主機上編譯,運行在目標機上。LAMP軟件的移植,是指在嵌入式平臺上運行交叉編譯后的二進制文件的過程[18]。這里重點說明Apache和Php的移植過程。
1)Apache的移植。
Apache的交叉編譯,需要Apache庫文件的支持,通過gcc編譯器生成pc端的Apache可執(zhí)行文件,使用arm-linux-gcc交叉工具鏈對Apache源文件進行編譯。移植流程是在官網(wǎng)上下載Apache源碼,進入解壓縮的Apache源文件根目錄進行配置:
[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
配置選項中,指明了交叉編譯工具鏈arm-linux-gcc ,生成二進制可執(zhí)行代碼的安裝目錄/usr/local/Apache-arm,編譯成動態(tài)模塊。配置完成后,會自動將當前目錄下configure文件中的CC、LD、AR、NM、RANLIB以及STRIP選項修改為:
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進行編譯。
2)Php的移植。
Php的移植需要Php、libconv、libxml2、zlib等庫文件的支持[19]。對于Php編譯,在官網(wǎng)上下載Php-5.2.0源碼后,進入解壓縮的Php源文件根目錄進行配置:
[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
配置選項與Apache類似,不同之處在于Php的編譯指明了依賴庫文件zlib,libconv。配置完成后,執(zhí)行make進行編譯即可。
3)配置Apache支持Php。
由于Apache默認支持靜態(tài)網(wǎng)頁,不支持Php頁面,所以Apache與Php各自獨立編譯完成后,需配置二者的協(xié)同工作[20]。進入編譯好的Apache文件中,找到configure文件,主要對該文件的下述選項進行配置:
#登陸服務器的端口號與用戶名的設置
Port 8080
User nobody
Group nobody
#網(wǎng)站根目錄的設置
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的移植和配置工作全部完成后,啟動Apache服務器,自動加載Php解析器,可實現(xiàn)客戶端與服務器端頁面的動態(tài)交互。
3 系統(tǒng)測試
3.1 系統(tǒng)測試平臺
系統(tǒng)的嵌入式平臺搭建了s3c6410為處理器的ARM最小系統(tǒng),USR-WiFi232-D2模組,固態(tài)硬盤,RS232串口模塊,電源模塊。嵌入式系統(tǒng)采用linux內(nèi)核,使用yaffs文件管理系統(tǒng)[21],服務器的運行環(huán)境選用LAMP架構(gòu),客戶端應用程序基于移動終端而開發(fā)。
程序開發(fā)階段,在pc端使用SecureCRT軟件對系統(tǒng)進行調(diào)試,通過串口控制嵌入式平臺,將之前交叉編譯好的LAMP二進制文件拷貝到板載固態(tài)硬盤中,在SecureCRT軟件下通過命令,將二進制文件拷貝到linux系統(tǒng)對應的文件目錄下。USR-WiFi232-D2模組需配置為AP模式,設置IP地址為:10.100.100.100。最后配置嵌入式系統(tǒng)初始化文件,設置上電自動開啟Apache服務器程序。
3.2 測試結(jié)果與分析
嵌入式平臺與pc連接上后,使用ifconfig命令查看服務端的IP地址,使用ps命令查看Apache是否正常運行,測試結(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é)果測試結(jié)果可以看出,配置Apache服務器時,將IP地址默認設置為10.100.100.100。使用Apachectl命令啟動Apache服務器,從上面打印的信息可以看出,服務器正常啟動。如圖6所示,Apache啟動后默認同時開啟多個進程,多個用戶同時訪問Apache服務器,可縮短服務器的響應時間,給用戶提供穩(wěn)定可靠的數(shù)據(jù)。

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

圖7 手機訪問服務器主界面

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

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

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