廣東工業(yè)大學(xué)信息工程學(xué)院 呂嘉卿 劉立程 何 云 劉秋韻
基于大學(xué)課堂的網(wǎng)絡(luò)流媒體系統(tǒng)的設(shè)計
廣東工業(yè)大學(xué)信息工程學(xué)院 呂嘉卿 劉立程 何 云 劉秋韻
隨著信息時代的普及,網(wǎng)絡(luò)流媒體在大學(xué)課堂教學(xué)中日益發(fā)揮著其重要性。為了整合教學(xué)資源,激勵學(xué)生主動學(xué)習(xí)的熱情,提出一種基于大學(xué)課堂的網(wǎng)絡(luò)流媒體系統(tǒng)的設(shè)計方案。該系統(tǒng)結(jié)合VPR錄播設(shè)備、SQL Server數(shù)據(jù)庫、Live555流媒體服務(wù)器、VC/MFC界面庫等技術(shù),基于C/S架構(gòu)設(shè)計并搭建簡單友好的系統(tǒng)客戶端和系統(tǒng)管理中心,同時將視頻采集門戶所采集的視頻資源安全完整地上傳在服務(wù)器軟件系統(tǒng),從而實(shí)現(xiàn)網(wǎng)絡(luò)流媒體直播和點(diǎn)播的大學(xué)課堂系統(tǒng)。由于所提出的整體解決方案采用較為先進(jìn)的技術(shù),并且進(jìn)行了前期的需求分析準(zhǔn)備,因此該設(shè)計系統(tǒng)具有良好的可擴(kuò)展性和可移植性,直播過程能滿足實(shí)時性要求。
大學(xué)課堂;網(wǎng)絡(luò)流媒體;軟件系統(tǒng);Client/Server;直播
現(xiàn)今,在網(wǎng)絡(luò)技術(shù)的推進(jìn)與流式傳輸技術(shù)增強(qiáng)的趨勢下,大學(xué)課堂逐漸由傳統(tǒng)的教育模式轉(zhuǎn)變?yōu)樵诰€網(wǎng)絡(luò)授課的新模式,使得多媒體網(wǎng)絡(luò)應(yīng)用得到各知名高校和公司廠商的關(guān)注。網(wǎng)絡(luò)流媒體系統(tǒng)一般分為瀏覽器和服務(wù)器(Browser/Server,B/S)架構(gòu)與客戶機(jī)和服務(wù)器(Client/ Server,C/S)架構(gòu)。例如,大型開放式網(wǎng)絡(luò)課程(Massive Open Online Courses,MOOC)里的Coursera、Udacity、edX學(xué)習(xí)平臺可提供多元化的課程資源,實(shí)現(xiàn)跨地區(qū)、跨學(xué)校、跨專業(yè)學(xué)習(xí),但是其B/S架構(gòu)[1]下的服務(wù)器響應(yīng)速度較慢,同時在線觀看課程視頻的效果也容易受網(wǎng)絡(luò)的傳輸速度而影響。因此,學(xué)者們也對基于C/S架構(gòu)[2]的大學(xué)課堂進(jìn)行研究,如邢帥教育開設(shè)影視媒體課程,其客戶機(jī)界面人性化,易操作,且安全性能也有一定的保證??紤]到網(wǎng)絡(luò)帶寬的大小、服務(wù)器響應(yīng)的速度,以及使用課程平臺的對象用戶等因素,大學(xué)課堂系統(tǒng)選用C/S架構(gòu)較為合適。
然而基于C/S架構(gòu)的大學(xué)課堂在實(shí)際應(yīng)用中仍然不夠成熟,亟需解決廣大師生的各種需求,具體有以下三個方面:(1)課程平臺的內(nèi)容單調(diào),視頻分類不清晰;(2)大部分課程平臺僅供視頻點(diǎn)播,缺乏課程直播的功能設(shè)計,可擴(kuò)展性差;(3)具體應(yīng)用于高校的網(wǎng)絡(luò)流媒體系統(tǒng)較少。
針對大學(xué)課堂客戶機(jī)存在的局限性,本文將使用VPR錄播設(shè)備錄制實(shí)時公開課,在SQL Server數(shù)據(jù)庫上存放系統(tǒng)所需的數(shù)據(jù),并通過Socket通信技術(shù)[3]實(shí)現(xiàn)Client端和Server端的交互,同時采用支持實(shí)時流傳輸協(xié)議[4](Real Time Stream Protocol,RTSP)的Live555流媒體服務(wù)器[5],從而在VS2010/MFC平臺上設(shè)計一種基于C/S架構(gòu)的網(wǎng)絡(luò)流媒體系統(tǒng)。本系統(tǒng)平臺利用互聯(lián)網(wǎng)開展在線授課及視頻交互等教學(xué)內(nèi)容,實(shí)現(xiàn)網(wǎng)絡(luò)與教育相結(jié)合,打破各種地域空間、時間和級別階層的限制,滿足教育資源的共享要求,且提升學(xué)習(xí)效率。
系統(tǒng)平臺能夠讓用戶實(shí)時收看在線公開課,并參與課堂互動,也能夠讓用戶點(diǎn)播觀看往期公開課及優(yōu)秀的非公開課視頻資源,實(shí)現(xiàn)交互式的遠(yuǎn)程教育,并促進(jìn)教學(xué)資源的共享。它主要由視頻采集門戶、系統(tǒng)客戶端、系統(tǒng)管理中心和服務(wù)器四部分組成,實(shí)現(xiàn)架構(gòu)如圖1所示。
針對網(wǎng)絡(luò)流媒體的平臺搭建,各功能模塊的設(shè)計描述如下:
(1)視頻采集門戶模塊
視頻采集門戶利用多臺VPR錄播設(shè)備,對教師的授課全過程進(jìn)行錄制,并通過網(wǎng)絡(luò)通信協(xié)議實(shí)時上傳至視頻服務(wù)器,在服務(wù)器端對錄制的多路視頻流進(jìn)行管理。
該模塊是服務(wù)器視頻資源的重要來源。一方面,視頻服務(wù)器與系統(tǒng)客戶端相連,使用戶能夠觀看公開課直播和視頻點(diǎn)播等網(wǎng)絡(luò)教學(xué)內(nèi)容。另一方面,數(shù)據(jù)服務(wù)器與系統(tǒng)管理中心相連,由管理員進(jìn)行VPR錄播設(shè)備以及視頻流媒體資源的管理,從而實(shí)現(xiàn)視頻的采集與傳輸。
圖1 網(wǎng)絡(luò)流媒體系統(tǒng)實(shí)現(xiàn)架構(gòu)
(2)系統(tǒng)客戶端模塊
系統(tǒng)客戶端主要完成與服務(wù)器數(shù)據(jù)交互的工作,并以簡潔友好的界面分別為教師和學(xué)生提供公開課直播/點(diǎn)播及在線課堂互動等網(wǎng)絡(luò)教學(xué)服務(wù)。
該模塊為用戶提供高質(zhì)量的網(wǎng)絡(luò)教學(xué)服務(wù),可進(jìn)行視頻點(diǎn)播、收藏、下載、評論等一系列操作。教師登錄系統(tǒng)客戶端后,在個人授課過程中能夠通過“錄播室”功能實(shí)時收看錄制的課堂直播畫面和聽課學(xué)生的視頻畫面,并可提問學(xué)生;后續(xù)更可對視頻資源進(jìn)行編輯管理。學(xué)生登錄系統(tǒng)客戶端后,可以收看公開課直播,以及實(shí)時請求發(fā)言;對于感興趣的公開課可向系統(tǒng)提交“聽課預(yù)約”申請,還可進(jìn)入教師個人空間的“留言板”給教師留言。教師與學(xué)生的具體功能設(shè)計如圖2所示。
圖2 客戶端模塊功能設(shè)計
(3)系統(tǒng)管理中心模塊
系統(tǒng)管理中心為管理員提供管理服務(wù)器數(shù)據(jù)/資源的訪問接口,進(jìn)而在交互式界面實(shí)現(xiàn)服務(wù)器后臺管理的各項功能,如用戶管理(添加前端用戶,即學(xué)生與教師)、課表管理、資源管理(審核教師發(fā)布的視頻,管理員可以從本地發(fā)布視頻)、評論管理、客戶端管理(包括前端相關(guān)的圖片、公開課信息)、系統(tǒng)維護(hù)的安全管理(用戶數(shù)據(jù)的備份)等。
(4)服務(wù)器模塊
服務(wù)器端作為前臺Client(客戶端)和后臺Client(管理中心)與數(shù)據(jù)庫服務(wù)器以及視頻服務(wù)器進(jìn)行數(shù)據(jù)交互的接口,是C/S架構(gòu)的重要組成部分。
服務(wù)器軟件系統(tǒng)包括四部分,分別為:服務(wù)器參數(shù)設(shè)置、服務(wù)管理、客戶端在線人數(shù)統(tǒng)計、其他信息統(tǒng)計。服務(wù)器參數(shù)設(shè)置包括四個子項:服務(wù)器名稱、服務(wù)器IP地址、服務(wù)器端口號、最大連接數(shù)量。服務(wù)管理包括三部分:視頻采集門戶-服務(wù)器、系統(tǒng)管理中心-服務(wù)器、系統(tǒng)客戶端-服務(wù)器,支持手動開啟或關(guān)閉其中的任意服務(wù)。前后端在線人數(shù)統(tǒng)計包括三類:在線學(xué)生、在線教師以及在線管理員。其他信息統(tǒng)計也包括三部分:服務(wù)器累計運(yùn)行時間、C/ S累計通信數(shù)據(jù)量、工作中的VPR設(shè)備數(shù)量。
在網(wǎng)絡(luò)通信與文件傳輸中,對于服務(wù)器端的網(wǎng)絡(luò)I/O[6],一般采用多線程與完成端口模型;而對于客戶端的網(wǎng)絡(luò)I/O,往往采用普通的異步I/O模型。
完成端口是Windows平臺上性能最好的異步I/O模型,它與線程池相配合,通過綁定網(wǎng)絡(luò)接口句柄或套接字進(jìn)行異步通信。
調(diào)用完成端口的函數(shù)接口是:
HANDLE CreateIoCompletionPort(
HANDLE hFile,
HANDLE hExistingCompletionPort,
ULONG_PTR CompletionKey,
DWORD dwNumberOfConcurrentThreads);
線程池中的所有線程執(zhí)行同一個函數(shù),這些線程函數(shù)首先進(jìn)行初始化工作,然后進(jìn)入一個循環(huán),在循環(huán)內(nèi)部,線程將自己切換到睡眠狀態(tài),來等待設(shè)備I/O請求完成并進(jìn)入完成端口。調(diào)用以下函數(shù)接口可以達(dá)到這一目的。
BOOL GetQueuedCompletionStatus(
HANDLE hCompletionPort,
PDWORD pdwNumberOfBytesTransferred,
PULONG_PTR pCompletionKey,
OVERLAPPED** ppOverlapped,
DWORD dwMilliseconds);
對于Socket消息,采用Socket拆分和分片重組技術(shù),并且定義了若干C++容器,如鏈表、隊列、映射,用于保存Socket消息分片、重組后的Socket消息以及待發(fā)送的Socket消息。
網(wǎng)絡(luò)I/O流程如圖3所示,從接收Socket消息到發(fā)送Socket消息的過程是:工作線程負(fù)責(zé)接收Socket消息分片,并將Socket分片加入Socket消息鏈表,數(shù)據(jù)處理線程從Socket消息鏈表中取出分片并重組,然后再執(zhí)行完整Socket消息對應(yīng)的操作,接著將執(zhí)行后得到的結(jié)果加入Socket發(fā)送隊列,另外的數(shù)據(jù)線程再從隊列中取出完整的Socket消息,進(jìn)行分片再發(fā)送。其中,對于鏈表及隊列等共享資源的訪問需要添加互斥訪問機(jī)制,防止線程間交叉運(yùn)行造成共享資源訪問的失敗或錯誤。
圖3 網(wǎng)絡(luò)I/O流程圖
在完成端口異步I/O部分,需要創(chuàng)建容器維護(hù)客戶端Socket列表,并與Socket消息相關(guān)聯(lián),通過采用查找時間復(fù)雜度更低的數(shù)據(jù)結(jié)構(gòu)來存儲各種Socket數(shù)據(jù)(包括Socket消息分片、完整的可以執(zhí)行的Socket數(shù)據(jù)等等),以此提高Socket數(shù)據(jù)查找訪問的效率。由此,可自定義本系統(tǒng)的Socket消息如表1所示。
表1 自定義Socket消息封
流媒體的典型特征是把連續(xù)的音頻和視頻信息壓縮后放到網(wǎng)絡(luò)服務(wù)器上,用戶邊下載邊觀看,其優(yōu)越性廣泛應(yīng)用于視頻直播點(diǎn)播、視頻會議、遠(yuǎn)程教育和遠(yuǎn)程醫(yī)療系統(tǒng)中,但也取決于視頻服務(wù)器的性能和服務(wù)質(zhì)量。
流媒體的視頻服務(wù)器主要功能是以流式協(xié)議將視頻文件傳輸?shù)娇蛻舳?,供用戶在線觀看;也可從視頻采集、壓縮軟件接收實(shí)時視頻流,再以流式協(xié)議直播給客戶端。常用的視頻服務(wù)器有Microsoft Windows Media Services(WMS)[7]、HTTP Live Streaming(HLS)[8]和Live555。其中WMS采用Microsoft Media Server protocol(MMS)協(xié)議接收和傳輸視頻,前端采用微軟媒體播放器,但能可供播放的視頻類型選擇較少;基于HLS的播放系統(tǒng)一般應(yīng)用于OS X系統(tǒng),使用第三方播放器方可在Windows平臺上實(shí)現(xiàn);Live555支持RTP/RTCP、RTSP、SIP等多種傳輸協(xié)議,并且可進(jìn)行簡單的擴(kuò)展以實(shí)現(xiàn)多種視頻格式的傳輸。綜合考慮,Live555較為適合本系統(tǒng)的視頻資源播放的服務(wù)器。
本系統(tǒng)開發(fā)基于Live555技術(shù)的流媒體播放設(shè)計步驟描述如下:
(1)系統(tǒng)初始化。初始化系統(tǒng)的各參數(shù),環(huán)境配置等
(2)視頻服務(wù)器與客戶端通信。根據(jù)客戶端的請求和視頻服務(wù)器的響應(yīng),采用RTSP傳輸協(xié)議來控制視頻流數(shù)據(jù)的傳送。同時申請一定大小的用作緩存數(shù)據(jù)的內(nèi)存空間,使得后續(xù)可實(shí)現(xiàn)無間斷地播放視頻。
(3)獲取流媒體視頻數(shù)據(jù)。由步驟(2)獲取的視頻流數(shù)據(jù)將分別對音頻數(shù)據(jù)和視頻數(shù)據(jù)進(jìn)行FFmpeg[9-11]解協(xié)議、解封裝、解碼[12]等一系列處理,并基于視頻和音頻的時序?qū)?yīng),實(shí)現(xiàn)媒體流同步播放[13]的操作。
(4)啟動播放線程。對處理后的流媒體數(shù)據(jù)通過SDL多媒體庫[14-15]來繪制視頻圖像畫面,而且使用多線程方法來實(shí)現(xiàn)播放、暫停、停止等功能。
圖4 流媒體播放器流程圖
本文分析研究了網(wǎng)絡(luò)流媒體系統(tǒng)的發(fā)展形勢,并針對其存在的局限性,提出了一個簡潔友好且內(nèi)容豐富的大學(xué)課堂系統(tǒng)的設(shè)計方案。通過探討大學(xué)課堂的功能需求,深入學(xué)習(xí)MFC界面庫、SQL SERVER數(shù)據(jù)庫技術(shù)、Socket網(wǎng)絡(luò)通信技術(shù)、RTSP通信協(xié)議、Live555流媒體服務(wù)器、以及研究播放視頻所需的FFmpeg和SDL開源庫等基礎(chǔ)知識,從而給出本系統(tǒng)的功能模塊設(shè)計、網(wǎng)絡(luò)通信與文件傳輸設(shè)計和流媒體播放設(shè)計。本系統(tǒng)采用當(dāng)前較為先進(jìn)及普遍的開發(fā)技術(shù),具有良好的可擴(kuò)展性和可移植性。相對于B/S架構(gòu),本系統(tǒng)在C/S架構(gòu)下由客戶端與服務(wù)器的交互將可快速加載功能控件,而且課程視頻直播的體驗性能更佳。
下一步工作將在此方案設(shè)計的基礎(chǔ)上,繼續(xù)給予概要設(shè)計,并在詳細(xì)設(shè)計下實(shí)現(xiàn)該系統(tǒng),并最終應(yīng)用于大學(xué)課堂領(lǐng)域中,發(fā)揮其價值,受惠于教師與學(xué)生。
[1]刁志堅,錢軍.計算機(jī)P2P網(wǎng)絡(luò)流媒體播放系統(tǒng)研究[J].信息與電腦:理論版,2014(8):785.
[2]蔡長安,王盈瑛.C/S和B/S的模式的比較和選擇[J].渭南師范學(xué)院學(xué)報,2006,21(2):47-50.
[3]歐軍,吳清秀,裴云,等.基于socket的網(wǎng)絡(luò)通信技術(shù)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2011(7):19-21.
[4]章民融,徐亞鋒.基于RTSP的流媒體視頻服務(wù)器的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2006,23(7):93-95.
[5]許華濱,謝維波,黃奕.基于Live555的流媒體服務(wù)器設(shè)計與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2014(18):48-50.
[6]王暹昊.用I/O完成端口設(shè)計多線程的服務(wù)應(yīng)用程序[J].計算機(jī)與現(xiàn)代化,2004(3):95-97.
[7]張?zhí)m華,吳耀華,張健.基于C/S結(jié)構(gòu)的WMS的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)工程與設(shè)計,2005,26(4):887-890.
[8]金達(dá),葉慶偉,狄紅衛(wèi).基于HLS的流媒體播放系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].信息技術(shù),2013(10):49-52.
[9]Cheng Y,Liu Q,Zhao C,et al.Design and Implementation of Mediaplayer Based on FFmpeg[M]// Software Engineering and Knowledge Engineering:Theory and Practice.2012:867-874.
[10]Zeng H,Fang Y.Implementation of Video Transcoding Client Based on FFMPEG[J].Advanced Materials Research,2013,756-759:1748-1752.
[11]苗健,許應(yīng)康.基于FFmpeg的視頻播放軟件設(shè)計[J].現(xiàn)代電子技術(shù),2015(12):83-84.
[12]畢厚杰.新一代視頻壓縮編碼標(biāo)準(zhǔn)[M].人民郵電出版社,2005.
[13]劉麗霞,邊金松,張琍,等.基于FFMPEG解碼的音視頻同步實(shí)現(xiàn)[J].計算機(jī)工程與設(shè)計,2013,34(6):2087-2092.
[14]Donlon M.SDL library decomentation[EB/OL].2001.http:// www.libsdl.org.
[15]江俊杰,王志明.基于SDL的H.264流媒體播放系統(tǒng)[J].計算機(jī)系統(tǒng)應(yīng)用,2013,22(12):51-54.
The design of network streaming media system based on college class-teaching
LV Jiaqing,LIU Licheng,HE Yun,LIU Qiuyun
(College of Information Engineering,Guangdong University of Technology,Guangdong Guangzhou 510006,China)
With the popularity of the Information era,the network streaming media plays an important role in college class-teaching.In order to integrate all kinds of teaching resources and motivate students’initiative enthusiasm of study,a design scheme of network streaming media system based on college class-teaching was proposed.Combined with VPR recorded equipment,SQL Server database,Live555 streaming media server and VC/MFC interface library,the system designed and built a simple friendly client system and management system on the basis of Client/Server architecture.Meanwhile,the video resources collected by the video-capture system were uploaded on the server system completely.So that the college class-teaching system could realize the live telecast and video on demand through network streaming media.With the advanced technology and fully preparation on demand analysis,thus the system has a better extensibility and portability,and meet the real-time requirement during the live process.
college class-teaching;network streaming media;software system;Client/Server;live telecast
呂嘉卿(1991—),女,廣東順德人,碩士研究生,主要研究方向:視頻圖像處理。
劉立程(1972—),男,福建上杭人,博士,副教授,主要研究方向:無線通信、數(shù)字信號處理。
何云(1993—),女,大學(xué)本科,主要研究方向:通信系統(tǒng)關(guān)鍵技術(shù)。
劉秋韻(1991—),女,大學(xué)本科,主要研究方向:通信系統(tǒng)關(guān)鍵技術(shù)。