孫 恒(山東大學(xué) 外國語學(xué)院 現(xiàn)代教育技術(shù)實驗室, 山東 濟南 250100)
?
智能移動終端的視頻點播系統(tǒng)設(shè)計與實現(xiàn)
孫 恒
(山東大學(xué) 外國語學(xué)院 現(xiàn)代教育技術(shù)實驗室, 山東 濟南 250100)
越來越多的師生使用智能移動終端進行學(xué)習(xí),為適應(yīng)這種新型的學(xué)習(xí)方式,充分發(fā)揮已有教學(xué)視頻資源的價值,避免大量視頻資源無法支持移動終端播放從而導(dǎo)致的資源浪費,讓傳統(tǒng)的教學(xué)視頻點播系統(tǒng)更有效地支持移動學(xué)習(xí),設(shè)計開發(fā)了基于智能移動終端的視頻點播平臺。平臺前臺支持多種移動設(shè)備訪問并且根據(jù)不同設(shè)備實現(xiàn)界面分辨率自動調(diào)整,后臺使用主流的J2EE架構(gòu)和SQL Server 2008數(shù)據(jù)庫進行系統(tǒng)開發(fā)。系統(tǒng)設(shè)計實現(xiàn)完成后可以同時支持PC端和主流移動終端(Android、IOS)通過無線局域網(wǎng)和移動3G、4G網(wǎng)絡(luò)訪問,實現(xiàn)真正的跨平臺移動視頻點播應(yīng)用。
智能移動終端; 視頻點播; 移動學(xué)習(xí); 跨平臺
近年來,隨著學(xué)校網(wǎng)絡(luò)建設(shè)的日益完善和移動通訊技術(shù)的飛速發(fā)展,以及智能手機、PDA等智能移動終端的普及,廣大師生對基于移動端的資源與應(yīng)用服務(wù)的需求越來越迫切。移動學(xué)習(xí)開始從過去的理論研究向?qū)嶋H應(yīng)用深入推進,應(yīng)用前景也越來越廣闊。高校精品資源共享課、視頻公開課等課程的建設(shè)熱潮,進一步提升了教學(xué)視頻資源的地位,支持移動終端點播教學(xué)視頻也成為傳統(tǒng)視頻點播系統(tǒng)的發(fā)展機遇[1]。
多媒體中心建設(shè)是高校資源與應(yīng)用服務(wù)建設(shè)的核心,同時也是高校信息化建設(shè)的重要組成部分。如何向校內(nèi)廣大用戶靈活地提供以基于多媒體流服務(wù)為主的VOD視頻點播、網(wǎng)絡(luò)電視、網(wǎng)絡(luò)教育、視頻會議、教學(xué)資料及視頻交流空間等眾多的應(yīng)用服務(wù),來豐富用戶網(wǎng)絡(luò)交流、科研、學(xué)習(xí)、生活、休閑娛樂,促進校園網(wǎng)絡(luò)與資源服務(wù)的進一步發(fā)展,同時輻射地方區(qū)域社會,是當(dāng)前學(xué)校信息化建設(shè)的重點[2]。
針對移動學(xué)習(xí)的特點以及對移動資源的需求,給出了基于智能移動終端的視頻點播系統(tǒng)平臺總體架構(gòu)。由于面向全校師生提供不間斷的7×24小時在線視頻點播服務(wù),所以系統(tǒng)的穩(wěn)定和安全性能處于首要位置。采用J2EE架構(gòu),后臺數(shù)據(jù)庫采用SQL Server 2008進行系統(tǒng)開發(fā)。
1.1 技術(shù)架構(gòu)設(shè)計
J2EE是一種基于Java技術(shù)的、適合于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)的Java 2平臺企業(yè)版。它提供了多層分布式的應(yīng)用模型、組件復(fù)用、一致化的安全模型以及靈活的事務(wù)控制,是—種利用Java2平臺來簡化解決方案的開發(fā)、部署和管理相關(guān)復(fù)雜問題的體系結(jié)構(gòu)。在此基礎(chǔ)上開發(fā)的系統(tǒng)具有穩(wěn)定的可用性、可伸縮性、靈活性、易維護性和可移植性等優(yōu)點。
J2EE平臺使用了一個多層的分布式的應(yīng)用程序模型。應(yīng)用程序的邏輯根據(jù)其實現(xiàn)的不同功能被封裝到組件中,組成J2EE應(yīng)用程序的大量應(yīng)用程序組件根據(jù)在其所屬的多層的J2EE環(huán)境中所處的層被安裝到不同的機器中[3-4]。
1.2 系統(tǒng)功能架構(gòu)設(shè)計
基于智能移動終端的視頻點播系統(tǒng),采用基于J2EE和Ajax框架設(shè)計,采用三層體系結(jié)構(gòu),實現(xiàn)跨平臺服務(wù)。系統(tǒng)包括4個功能層次:用戶接入層,應(yīng)用服務(wù)層、業(yè)務(wù)管理層及系統(tǒng)支撐環(huán)境。系統(tǒng)包括站群管理,模板管理,內(nèi)容的編輯、采集、檢索、發(fā)布,及多媒體內(nèi)容管理為一體的管理平臺。類Word的編輯方式,可以使用非專業(yè)人員方便的進行內(nèi)容維護、審核和發(fā)布。對站群內(nèi)的其他站點內(nèi)容進行引用復(fù)制,獲取共享內(nèi)容,提高內(nèi)容的管理和發(fā)布效率。通過定制多種模板,兼容不同廠家版本的瀏覽器,并支持包括手機、PC在內(nèi)的多種智能移動終端。系統(tǒng)功能架構(gòu)見圖1。
基于智能移動終端的視頻點播系統(tǒng)充分利用現(xiàn)有服務(wù)器集群進行負載平衡和分布式數(shù)據(jù)處理。其技術(shù)性能穩(wěn)定可靠,費用低,是視頻點播系統(tǒng)常用的解決方案。系統(tǒng)服務(wù)器物理架構(gòu)見圖2。根據(jù)現(xiàn)有服務(wù)器的配置不同,進行相應(yīng)功能分配。性能較高的服務(wù)器用于提供業(yè)務(wù)服務(wù)。主要用于調(diào)度和播出節(jié)目,響應(yīng)用戶點播請求,是系統(tǒng)的核心。根據(jù)訪問用戶量的多少,支持多個視頻服務(wù)器來平衡各服務(wù)器的負載,以實現(xiàn)對大量并發(fā)用戶訪問的支持。
數(shù)據(jù)庫服務(wù)器包括用戶管理、節(jié)目管理、系統(tǒng)資源及服務(wù)信息管理等功能模塊。用戶管理模塊提供對注冊用戶的管理,包括入網(wǎng)信息、交費信息及消費信息等;節(jié)目管理模塊提供對視頻節(jié)目的管理,包括節(jié)目的信息查詢、被訪問的次數(shù)統(tǒng)計等。資源服務(wù)器包括系統(tǒng)資源管理等其他應(yīng)用管理模塊實現(xiàn)對系統(tǒng)資源等信息內(nèi)容的監(jiān)控。媒體服務(wù)器作為向用戶提供視頻服務(wù)的關(guān)鍵平臺。其主要功能是對媒體內(nèi)容進行采集、緩存、調(diào)度和傳輸播放,流媒體應(yīng)用系統(tǒng)的主要性能體現(xiàn)都取決于媒體服務(wù)器的性能和服務(wù)質(zhì)量[5-6]。
圖1 系統(tǒng)功能架構(gòu)
圖2 系統(tǒng)服務(wù)器物理架構(gòu)
1.3 系統(tǒng)媒體轉(zhuǎn)碼設(shè)計
由于點播系統(tǒng)同時支持PC端訪問和移動終端訪問,因此,視頻資源必須能同時兼容這兩種點播模式。采用現(xiàn)在主流的網(wǎng)絡(luò)視頻播放FLV格式。FLV流媒體格式是隨著Flash MX的推出而發(fā)展而來的一種新興的視頻格式。FLV文件體積小巧,清晰的FLV視頻1 min在1 MB左右,一部電影在100 MB左右,是普通視頻文件體積的1/3。再加上CPU占有率低、視頻質(zhì)量良好等特點使其在網(wǎng)絡(luò)上盛行,網(wǎng)上的著名視頻共享網(wǎng)站均采用FLV格式文件提供視頻,就充分證明了這一點。
視頻在各種模式下都能夠流暢的播放,因此轉(zhuǎn)碼流程是本系統(tǒng)設(shè)計開發(fā)中的重點。視頻轉(zhuǎn)碼流程圖見圖3。管理員通過后臺管理端添加視頻節(jié)目源,系統(tǒng)對入庫視頻的大小及名稱進行數(shù)據(jù)庫比對,防止數(shù)據(jù)重復(fù)錄入,避免造成服務(wù)空間浪費。如果通過對比發(fā)現(xiàn)相同資源,則提示資源重復(fù),停止添加操作;如果沒有相同資源,則自動錄入數(shù)據(jù)庫,進行資源分類。資源分類結(jié)束后,通過Java代碼程序調(diào)用核心視頻轉(zhuǎn)碼程序進行轉(zhuǎn)碼,轉(zhuǎn)碼時間長短由視頻資源大小、碼率大小以及服務(wù)器CPU負載決定。轉(zhuǎn)碼成功后,即可自動生成發(fā)布內(nèi)容頁面,將視頻資源內(nèi)容發(fā)布到網(wǎng)站上,可以供點播;轉(zhuǎn)碼失敗時,顯示信息,提示出錯原因[7-8]。
圖3 視頻轉(zhuǎn)碼流程圖
1.4 系統(tǒng)數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫采用SQL Server 2008作為數(shù)據(jù)平臺,將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲到數(shù)據(jù)庫中。SQL Server 2008有一系列的集成服務(wù),可以對數(shù)據(jù)進行查詢、搜索、同步、報告和分析之類的操作。整個數(shù)據(jù)庫中最主要的表為用戶表User,數(shù)據(jù)表Film。用戶表User中,UserID作為主鍵來對用戶進行唯一性確定。其余字段作為補充條件對用戶其他信息進行登記。數(shù)據(jù)表Film中,VedioID作為主鍵,視頻相關(guān)信息作為補充內(nèi)容標示信息的唯一性[9]。具體見表1、2。
表1 用戶表
2.1 視頻點播自適應(yīng)系統(tǒng)實現(xiàn)
系統(tǒng)由于支持PC端訪問和移動終端訪問,所以采用了自動屏幕調(diào)整模式,根據(jù)訪問端的狀況自動調(diào)整視頻點播系統(tǒng)在不同終端平臺上的顯示內(nèi)容。從PC端訪問視頻點播系統(tǒng)的界面見圖4。從移動終端訪問視頻點播系統(tǒng)的界面見圖5。
表2 數(shù)據(jù)表
系統(tǒng)首頁代碼中使用Javascript代碼來進行訪問終端類型判斷,根據(jù)判斷類型進行PC端或者移動終端的相應(yīng)網(wǎng)頁訪問模型[10]。具體代碼如下:
〈SCRIPT LANGUAGE="JavaScript"〉
functionmobile_device_detect(url)
{
varthisOS=navigator.platform;
varos=newArray("iPhone","iPod","iPad","android","Nokia","SymbianOS","Symbian","WindowsPhone","Phone","Linuxarmv71","MAUI","UNTRUSTED/1.0","Windows CE","BlackBerry","IEMobile");
for(var i=0;i〈os.length;i++)
{
if(thisOS.match(os[i]))
{
window.location=url;
}
}//因為相當(dāng)部分的手機系統(tǒng)不知道信息,這里是做臨時性特殊辨認
if(navigator.platform.indexOf('iPad') != -1)
{
window.location=url;
}//做這一部分是因為Android手機的內(nèi)核也是Linux
//但是navigator.platform顯示信息不盡相同情況繁多,因此從瀏覽器下手,即用navigator.appVersion信息做判斷
var check = navigator.appVersion;
if(check.match(/linux/i) )
{//X11是UC瀏覽器的平臺,如果有其他特殊瀏覽器也可以附加上條件
if(check.match(/mobile/i) || check.match(/X11/i))
{
window.location=url;
}
}//類in_array函數(shù)
Array.prototype.in_array = function(e)
{
for(i=0;i〈this.length;i++)
{
if(this[i] == e)
return true;
}
return false;
}
}
mobile_device_detect("http://***.***.com");
〈/SCRIPT〉
圖4 PC端訪問視頻點播系統(tǒng)效果截圖
圖5 移動終端訪問視頻點播系統(tǒng)效果截圖
2.2 視頻點播系統(tǒng)各功能實現(xiàn)
平臺系統(tǒng)功能主要由以下幾個模塊組成。
(1) 常規(guī)管理。管理員可以進行系統(tǒng)基本參數(shù)設(shè)置、用戶點播設(shè)置、內(nèi)容管理上傳存放設(shè)置、用戶上傳配置、服務(wù)器負載集群設(shè)置、多模播放設(shè)置。
(2) 內(nèi)容管理。節(jié)目分類功能是對上傳的節(jié)目分類管理,存放路徑管理。可以增加欄目包括欄目名稱,存放路徑,父欄目,訪問級別,描述。節(jié)目信息包括:輸入節(jié)目名稱,選擇節(jié)目所屬的欄目、是否推薦及是否允許客戶端下載,選擇所屬地區(qū)及節(jié)目語言,計費設(shè)置、計費額數(shù)、節(jié)目地址、節(jié)目時間長度、節(jié)目碼率、主要演員,導(dǎo)演,語言,所屬地區(qū),版權(quán)信息,出品年代,內(nèi)容簡介、預(yù)覽圖片等。節(jié)目級別是為被添加的節(jié)目設(shè)置一個級別,設(shè)置好后,該節(jié)目只能被高級別的用戶點播。
(3) 用戶管理??梢詫τ脩暨M行分組管理、用戶管理。可以設(shè)置該用戶組的成員。用戶和節(jié)目均設(shè)有訪問級別屬性,用戶只能訪問比其訪問級別低的節(jié)目。用戶計費策略分為三類。開放該權(quán)限的用戶可在客戶端頁面上傳節(jié)目。
(4) 直播管理。管理直播服務(wù)器的直播頻道。
(5) 服務(wù)器管理。用來添加,修改,刪除流媒體服務(wù)器。
(6) 計費管理。計費管理包括系統(tǒng)計費策略,用戶充值兩項。
(7) 視頻轉(zhuǎn)碼控制??梢赃M行轉(zhuǎn)碼任務(wù)清單管理,進行轉(zhuǎn)碼任務(wù)的添加、刪除等功能。并且可以查看正在進行的視頻轉(zhuǎn)碼任務(wù)進度。
(8) 統(tǒng)計分析。該功能可以記錄所有用戶的點播記錄,可以按單一節(jié)目、單一用戶以及所有記錄;統(tǒng)計時間段可以是一周、一月以及一年;統(tǒng)計結(jié)果可以以柱狀圖、折線圖、餅狀圖以及三維圖輸出。
2.3 視頻點播系統(tǒng)轉(zhuǎn)碼功能實現(xiàn)
視頻轉(zhuǎn)碼是一個高運算負荷的過程,需要對輸入的視頻流進行全解碼、視頻過濾、圖像處理、并且對輸出格式進行全編碼。最簡單的轉(zhuǎn)碼過程僅僅涉及到解碼一個比特流和用不同的編解碼器重新編碼兩個步驟。這種硬轉(zhuǎn)碼看似很簡單,只需要一個解碼器和一個編碼器,但是最終顯示結(jié)果并不理想,因為視頻數(shù)據(jù)解碼后重新編碼會降低畫質(zhì)[11-12]。本視頻點播系統(tǒng)對視頻轉(zhuǎn)碼過程進行了優(yōu)化整合,通過運行Java代碼,調(diào)用底層工具,使用ffmpeg和mencoder這兩個工具實現(xiàn)視頻格式轉(zhuǎn)換。ffmpeg可以轉(zhuǎn)換大多數(shù)視頻文件,如avi、wmv、mkv、asx、swf、asf等。遇到ffmpeg不能轉(zhuǎn)的視頻格式時,需要調(diào)用mencoder,利用該工具將那些文件轉(zhuǎn)成ffmpeg能夠轉(zhuǎn)換的格式?;就ㄟ^這2個工具可以轉(zhuǎn)換大多數(shù)視頻文件[13-14]。關(guān)鍵處理代碼如下:
Importjava.io.File;
import java.io.IOException;
import java.io.InputStream;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.List;
classConvertVideo {
private List〈String〉pathRight = new ArrayList〈String〉();// 經(jīng)處理后,得到的有效地址
private List〈String〉 path1 = new ArrayList〈String〉();// ffmpeg能處理的文件的地址集
private List〈String〉 path2 = new ArrayList〈String〉();// ffmpeg不能處理的文件的地址集
public static intfileNum = 0;// 所有經(jīng)過驗證合法,并需要轉(zhuǎn)換的視頻數(shù)量
public static void main(String[] args) {
Date start = new Date();
ConvertVideoconver = new ConvertVideo();
String fileFolder = "e:input";
List〈String〉listFile = conver.getFilesInPath(fileFolder);
List〈String〉listVideo = conver.filter(listFile);
intfileNumMax = listVideo.size(); // 所有視頻數(shù)量
conver.checkfile(listVideo);
conver.process();
if (fileNum == fileNumMax) {
Date end = new Date();
System.out.println("耗時:" + (end.getTime() - start.getTime()) / 1000
+ "秒");
}
}
}
使用該算法可以快捷高效的將視頻轉(zhuǎn)換成為適合網(wǎng)絡(luò)播放的FLV格式文件,在同等時間內(nèi)可以完成更多的視頻轉(zhuǎn)換任務(wù)。
2.4 視頻點播系統(tǒng)壓力測試實現(xiàn)
系統(tǒng)采用了服務(wù)器集群負載均衡模式,可以同時支持1000個視頻點播請求。我們使用微軟的Web Application Stress Tool工具對視頻點播系統(tǒng)進行網(wǎng)絡(luò)壓力測試。用少量的客戶端計算機仿真模擬出大量用戶同時訪問,以獲得服務(wù)器的承受能力。在最終的軟件壓力測試報告中最重要的部分就是Socket Errors。Socket Errors共分為Connect、Send、Recv和Timeouts。其中Connect表示客戶端不能與服務(wù)器取得連接的次數(shù);Send表示客戶端不能正確發(fā)送數(shù)據(jù)到服務(wù)器的次數(shù);Recv表示客戶端不能正確從服務(wù)器接次的次數(shù);Timeouts表示超時的線程數(shù)目[15-16]。由測試報告看出這四個數(shù)值都比較小,甚至為0,就說明基于移動終端的視頻點播平臺服務(wù)器是經(jīng)得起多線程大并發(fā)量的考驗的。壓力測試報告見圖6。
圖6 視頻點播網(wǎng)站壓力測試報告
本文在現(xiàn)有視頻資源的基礎(chǔ)上,結(jié)合目前學(xué)校教學(xué)中實際需求,提出并構(gòu)建了基于移動終端的視頻點播系統(tǒng),實現(xiàn)了教學(xué)視頻資源的分類發(fā)布及多種網(wǎng)絡(luò)環(huán)境應(yīng)用。基于智能移動終端的視頻點播系統(tǒng)中的媒體引擎同時支持手機平臺和PC平臺的流傳輸服務(wù),采用多平臺節(jié)目內(nèi)容的統(tǒng)一管理,提供流媒體文件的自動轉(zhuǎn)碼功能。統(tǒng)一流服務(wù)技術(shù)可以最大限度地保護用戶的原有投資,支持平臺的平滑升級,可以為PC平臺用戶與手機平臺用戶同時服務(wù)。通過測試使用,系統(tǒng)實現(xiàn)了視頻資源在移動終端環(huán)境下的播放,具有良好的用戶體驗,并且能夠滿足師生的需求。
為了實現(xiàn)大范圍的推廣,下一步將開發(fā)基于Android和IOS等系統(tǒng)的客戶端,拓寬平臺支持的范圍。隨著移動終端設(shè)備和無線互聯(lián)技術(shù)的發(fā)展,今后的努力研究方向是使基于移動終端的視頻點播系統(tǒng)更加人性化、更符合實際學(xué)習(xí)需求。
[1] 鮑松彬. 融合移動學(xué)習(xí)的大學(xué)英語教學(xué)新模式[J]. 實驗室研究與探索,2013,32(4):144-147.
[2] 李瑋瑩.云計算架構(gòu)下的移動學(xué)習(xí)[J]. 實驗室研究與探索,2013,32(2):236-238.
[3] 閆俊伢,安俊秀.J2EE技術(shù)體系的探討與研究[J]. 實驗室研究與探索,2010,29(7):83-85.
[4] Deepak Alur. Core J2EE patterns : best practices and design strategies J2EE核心模式[M]. 北京:科學(xué)出版社,2004.
[5] 李哲夫,張煥明. 基于Android的校園流媒體播放系統(tǒng)設(shè)計與實現(xiàn)[J].現(xiàn)代計算機,2013(10):67-69.
[6] 沈超莉,何明昌,郭雅雯. 基于文件系統(tǒng)的流媒體教學(xué)視頻播放平臺設(shè)計[J]. 實驗室研究與探索,2012,32(2):138-140.
[7] 賈振華. Java語言程序設(shè)計[M]. 北京:中國水利水電出版社,2010.
[8] Joyce Farrell. Fundamentals of Java programming[M].北京:科學(xué)出版社,2012.
[9] 王雨竹, 張玉花, 張 星. SQL Server 2008數(shù)據(jù)庫管理與開發(fā)教程[M]. 北京:人民郵電出版社,2012.
[10] Sajal Kumar Das. 移動終端系統(tǒng)設(shè)計[M]. 王立寧譯.北京:人民郵電出版社,2012.
[11] Ken Bluttman,Lee Cottrell. HTML5多媒體開發(fā)指南[M]. 施宏斌譯. 北京:清華大學(xué)出版社,2013.
[12] 盧官明.移動流媒體技術(shù)[M]. 北京:電子工業(yè)出版社,2010.
[13] 張 宇,劉 新,葉德建. 基于分布式流媒體計算框架的轉(zhuǎn)碼系統(tǒng)的設(shè)計與實現(xiàn)[J].實驗室研究與探索,2013,30(9):92-95.
[14] 劉 易,李太君. 3G移動終端流媒體播放技術(shù)的研究[J]. 通信技術(shù),2011,44(3):123-124.
[15] 周 偉,陳 柳. WAS在軟件測試教學(xué)中的應(yīng)用[J]. 軟件導(dǎo)刊, 2013(8):92-93.
[16] 韓 莉,秦麗華.測試技術(shù)對網(wǎng)站中服務(wù)器端質(zhì)量保證研究[J].煤炭技術(shù),2013,32(10):203-204.
Design and Implementation of VOD System Based on Intelligent Mobile Terminals
SUNHeng
(Modern Educational Technology Lab, School of Foreign Languages, Shandong University, Jinan 250100, China)
Continuous improvement and the rapid adoption of smart mobile terminals have happened in campus, in order to promote the development of mobile learning, related research and practical application of mobile learning have also developed into a profound change. More and more teachers and students use smart mobile devices to adapt to this new way to learn. It is necessary to maximize the value of existing instructional video resources which can’t support mobile terminals. In order to make the traditional instructional video effectively support mobile learning, we designed and developed a video-on-demand platform to meet intelligent mobile terminals' requirement. The platform supports a variety of mobile devices to access the front desk, and the resolution is automatically adjusted to achieve the interface depending on the device. The background was used the mainstream J2EE architecture and SQL Server 2008 database system. The system can support PC ends and mainstream mobile terminals (Android, IOS) via a wireless LAN and mobile 3G, 4G networks, and achieves true cross-platform mobile video-on-demand applications.
intelligent mobile terminal; VOD; mobile learning; cross platform
2014-06-23
山東大學(xué)2013年實驗室軟件建設(shè)項目(sy2013106)
孫 恒(1981-),男,山東棗莊人,碩士,實驗師,主要研究方向為計算機技術(shù)應(yīng)用與網(wǎng)絡(luò)信息技術(shù)。
Tel.:15588823755; E-mail:sunheng@sdu.edu.cn
TP 311.1
A
1006-7167(2015)02-0132-05