廣東工業大學信息工程學院 呂嘉卿 劉立程 何 云 劉秋韻
基于大學課堂的網絡流媒體系統的設計
廣東工業大學信息工程學院 呂嘉卿 劉立程 何 云 劉秋韻
隨著信息時代的普及,網絡流媒體在大學課堂教學中日益發揮著其重要性。為了整合教學資源,激勵學生主動學習的熱情,提出一種基于大學課堂的網絡流媒體系統的設計方案。該系統結合VPR錄播設備、SQL Server數據庫、Live555流媒體服務器、VC/MFC界面庫等技術,基于C/S架構設計并搭建簡單友好的系統客戶端和系統管理中心,同時將視頻采集門戶所采集的視頻資源安全完整地上傳在服務器軟件系統,從而實現網絡流媒體直播和點播的大學課堂系統。由于所提出的整體解決方案采用較為先進的技術,并且進行了前期的需求分析準備,因此該設計系統具有良好的可擴展性和可移植性,直播過程能滿足實時性要求。
大學課堂;網絡流媒體;軟件系統;Client/Server;直播
現今,在網絡技術的推進與流式傳輸技術增強的趨勢下,大學課堂逐漸由傳統的教育模式轉變為在線網絡授課的新模式,使得多媒體網絡應用得到各知名高校和公司廠商的關注。網絡流媒體系統一般分為瀏覽器和服務器(Browser/Server,B/S)架構與客戶機和服務器(Client/ Server,C/S)架構。例如,大型開放式網絡課程(Massive Open Online Courses,MOOC)里的Coursera、Udacity、edX學習平臺可提供多元化的課程資源,實現跨地區、跨學校、跨專業學習,但是其B/S架構[1]下的服務器響應速度較慢,同時在線觀看課程視頻的效果也容易受網絡的傳輸速度而影響。因此,學者們也對基于C/S架構[2]的大學課堂進行研究,如邢帥教育開設影視媒體課程,其客戶機界面人性化,易操作,且安全性能也有一定的保證。考慮到網絡帶寬的大小、服務器響應的速度,以及使用課程平臺的對象用戶等因素,大學課堂系統選用C/S架構較為合適。
然而基于C/S架構的大學課堂在實際應用中仍然不夠成熟,亟需解決廣大師生的各種需求,具體有以下三個方面:(1)課程平臺的內容單調,視頻分類不清晰;(2)大部分課程平臺僅供視頻點播,缺乏課程直播的功能設計,可擴展性差;(3)具體應用于高校的網絡流媒體系統較少。
針對大學課堂客戶機存在的局限性,本文將使用VPR錄播設備錄制實時公開課,在SQL Server數據庫上存放系統所需的數據,并通過Socket通信技術[3]實現Client端和Server端的交互,同時采用支持實時流傳輸協議[4](Real Time Stream Protocol,RTSP)的Live555流媒體服務器[5],從而在VS2010/MFC平臺上設計一種基于C/S架構的網絡流媒體系統。本系統平臺利用互聯網開展在線授課及視頻交互等教學內容,實現網絡與教育相結合,打破各種地域空間、時間和級別階層的限制,滿足教育資源的共享要求,且提升學習效率。
系統平臺能夠讓用戶實時收看在線公開課,并參與課堂互動,也能夠讓用戶點播觀看往期公開課及優秀的非公開課視頻資源,實現交互式的遠程教育,并促進教學資源的共享。它主要由視頻采集門戶、系統客戶端、系統管理中心和服務器四部分組成,實現架構如圖1所示。
針對網絡流媒體的平臺搭建,各功能模塊的設計描述如下:
(1)視頻采集門戶模塊
視頻采集門戶利用多臺VPR錄播設備,對教師的授課全過程進行錄制,并通過網絡通信協議實時上傳至視頻服務器,在服務器端對錄制的多路視頻流進行管理。
該模塊是服務器視頻資源的重要來源。一方面,視頻服務器與系統客戶端相連,使用戶能夠觀看公開課直播和視頻點播等網絡教學內容。另一方面,數據服務器與系統管理中心相連,由管理員進行VPR錄播設備以及視頻流媒體資源的管理,從而實現視頻的采集與傳輸。

圖1 網絡流媒體系統實現架構
(2)系統客戶端模塊
系統客戶端主要完成與服務器數據交互的工作,并以簡潔友好的界面分別為教師和學生提供公開課直播/點播及在線課堂互動等網絡教學服務。
該模塊為用戶提供高質量的網絡教學服務,可進行視頻點播、收藏、下載、評論等一系列操作。教師登錄系統客戶端后,在個人授課過程中能夠通過“錄播室”功能實時收看錄制的課堂直播畫面和聽課學生的視頻畫面,并可提問學生;后續更可對視頻資源進行編輯管理。學生登錄系統客戶端后,可以收看公開課直播,以及實時請求發言;對于感興趣的公開課可向系統提交“聽課預約”申請,還可進入教師個人空間的“留言板”給教師留言。教師與學生的具體功能設計如圖2所示。

圖2 客戶端模塊功能設計
(3)系統管理中心模塊
系統管理中心為管理員提供管理服務器數據/資源的訪問接口,進而在交互式界面實現服務器后臺管理的各項功能,如用戶管理(添加前端用戶,即學生與教師)、課表管理、資源管理(審核教師發布的視頻,管理員可以從本地發布視頻)、評論管理、客戶端管理(包括前端相關的圖片、公開課信息)、系統維護的安全管理(用戶數據的備份)等。
(4)服務器模塊
服務器端作為前臺Client(客戶端)和后臺Client(管理中心)與數據庫服務器以及視頻服務器進行數據交互的接口,是C/S架構的重要組成部分。
服務器軟件系統包括四部分,分別為:服務器參數設置、服務管理、客戶端在線人數統計、其他信息統計。服務器參數設置包括四個子項:服務器名稱、服務器IP地址、服務器端口號、最大連接數量。服務管理包括三部分:視頻采集門戶-服務器、系統管理中心-服務器、系統客戶端-服務器,支持手動開啟或關閉其中的任意服務。前后端在線人數統計包括三類:在線學生、在線教師以及在線管理員。其他信息統計也包括三部分:服務器累計運行時間、C/ S累計通信數據量、工作中的VPR設備數量。
在網絡通信與文件傳輸中,對于服務器端的網絡I/O[6],一般采用多線程與完成端口模型;而對于客戶端的網絡I/O,往往采用普通的異步I/O模型。
完成端口是Windows平臺上性能最好的異步I/O模型,它與線程池相配合,通過綁定網絡接口句柄或套接字進行異步通信。
調用完成端口的函數接口是:
HANDLE CreateIoCompletionPort(
HANDLE hFile,
HANDLE hExistingCompletionPort,
ULONG_PTR CompletionKey,
DWORD dwNumberOfConcurrentThreads);
線程池中的所有線程執行同一個函數,這些線程函數首先進行初始化工作,然后進入一個循環,在循環內部,線程將自己切換到睡眠狀態,來等待設備I/O請求完成并進入完成端口。調用以下函數接口可以達到這一目的。
BOOL GetQueuedCompletionStatus(
HANDLE hCompletionPort,
PDWORD pdwNumberOfBytesTransferred,
PULONG_PTR pCompletionKey,
OVERLAPPED** ppOverlapped,
DWORD dwMilliseconds);
對于Socket消息,采用Socket拆分和分片重組技術,并且定義了若干C++容器,如鏈表、隊列、映射,用于保存Socket消息分片、重組后的Socket消息以及待發送的Socket消息。
網絡I/O流程如圖3所示,從接收Socket消息到發送Socket消息的過程是:工作線程負責接收Socket消息分片,并將Socket分片加入Socket消息鏈表,數據處理線程從Socket消息鏈表中取出分片并重組,然后再執行完整Socket消息對應的操作,接著將執行后得到的結果加入Socket發送隊列,另外的數據線程再從隊列中取出完整的Socket消息,進行分片再發送。其中,對于鏈表及隊列等共享資源的訪問需要添加互斥訪問機制,防止線程間交叉運行造成共享資源訪問的失敗或錯誤。

圖3 網絡I/O流程圖
在完成端口異步I/O部分,需要創建容器維護客戶端Socket列表,并與Socket消息相關聯,通過采用查找時間復雜度更低的數據結構來存儲各種Socket數據(包括Socket消息分片、完整的可以執行的Socket數據等等),以此提高Socket數據查找訪問的效率。由此,可自定義本系統的Socket消息如表1所示。

表1 自定義Socket消息封
流媒體的典型特征是把連續的音頻和視頻信息壓縮后放到網絡服務器上,用戶邊下載邊觀看,其優越性廣泛應用于視頻直播點播、視頻會議、遠程教育和遠程醫療系統中,但也取決于視頻服務器的性能和服務質量。
流媒體的視頻服務器主要功能是以流式協議將視頻文件傳輸到客戶端,供用戶在線觀看;也可從視頻采集、壓縮軟件接收實時視頻流,再以流式協議直播給客戶端。常用的視頻服務器有Microsoft Windows Media Services(WMS)[7]、HTTP Live Streaming(HLS)[8]和Live555。其中WMS采用Microsoft Media Server protocol(MMS)協議接收和傳輸視頻,前端采用微軟媒體播放器,但能可供播放的視頻類型選擇較少;基于HLS的播放系統一般應用于OS X系統,使用第三方播放器方可在Windows平臺上實現;Live555支持RTP/RTCP、RTSP、SIP等多種傳輸協議,并且可進行簡單的擴展以實現多種視頻格式的傳輸。綜合考慮,Live555較為適合本系統的視頻資源播放的服務器。
本系統開發基于Live555技術的流媒體播放設計步驟描述如下:
(1)系統初始化。初始化系統的各參數,環境配置等
(2)視頻服務器與客戶端通信。根據客戶端的請求和視頻服務器的響應,采用RTSP傳輸協議來控制視頻流數據的傳送。同時申請一定大小的用作緩存數據的內存空間,使得后續可實現無間斷地播放視頻。
(3)獲取流媒體視頻數據。由步驟(2)獲取的視頻流數據將分別對音頻數據和視頻數據進行FFmpeg[9-11]解協議、解封裝、解碼[12]等一系列處理,并基于視頻和音頻的時序對應,實現媒體流同步播放[13]的操作。
(4)啟動播放線程。對處理后的流媒體數據通過SDL多媒體庫[14-15]來繪制視頻圖像畫面,而且使用多線程方法來實現播放、暫停、停止等功能。

圖4 流媒體播放器流程圖
本文分析研究了網絡流媒體系統的發展形勢,并針對其存在的局限性,提出了一個簡潔友好且內容豐富的大學課堂系統的設計方案。通過探討大學課堂的功能需求,深入學習MFC界面庫、SQL SERVER數據庫技術、Socket網絡通信技術、RTSP通信協議、Live555流媒體服務器、以及研究播放視頻所需的FFmpeg和SDL開源庫等基礎知識,從而給出本系統的功能模塊設計、網絡通信與文件傳輸設計和流媒體播放設計。本系統采用當前較為先進及普遍的開發技術,具有良好的可擴展性和可移植性。相對于B/S架構,本系統在C/S架構下由客戶端與服務器的交互將可快速加載功能控件,而且課程視頻直播的體驗性能更佳。
下一步工作將在此方案設計的基礎上,繼續給予概要設計,并在詳細設計下實現該系統,并最終應用于大學課堂領域中,發揮其價值,受惠于教師與學生。
[1]刁志堅,錢軍.計算機P2P網絡流媒體播放系統研究[J].信息與電腦:理論版,2014(8):785.
[2]蔡長安,王盈瑛.C/S和B/S的模式的比較和選擇[J].渭南師范學院學報,2006,21(2):47-50.
[3]歐軍,吳清秀,裴云,等.基于socket的網絡通信技術研究[J].網絡安全技術與應用,2011(7):19-21.
[4]章民融,徐亞鋒.基于RTSP的流媒體視頻服務器的設計與實現[J].計算機應用與軟件,2006,23(7):93-95.
[5]許華濱,謝維波,黃奕.基于Live555的流媒體服務器設計與實現[J].微型機與應用,2014(18):48-50.
[6]王暹昊.用I/O完成端口設計多線程的服務應用程序[J].計算機與現代化,2004(3):95-97.
[7]張蘭華,吳耀華,張健.基于C/S結構的WMS的設計與實現[J].計算機工程與設計,2005,26(4):887-890.
[8]金達,葉慶偉,狄紅衛.基于HLS的流媒體播放系統的設計與實現[J].信息技術,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]苗健,許應康.基于FFmpeg的視頻播放軟件設計[J].現代電子技術,2015(12):83-84.
[12]畢厚杰.新一代視頻壓縮編碼標準[M].人民郵電出版社,2005.
[13]劉麗霞,邊金松,張琍,等.基于FFMPEG解碼的音視頻同步實現[J].計算機工程與設計,2013,34(6):2087-2092.
[14]Donlon M.SDL library decomentation[EB/OL].2001.http:// www.libsdl.org.
[15]江俊杰,王志明.基于SDL的H.264流媒體播放系統[J].計算機系統應用,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—),男,福建上杭人,博士,副教授,主要研究方向:無線通信、數字信號處理。
何云(1993—),女,大學本科,主要研究方向:通信系統關鍵技術。
劉秋韻(1991—),女,大學本科,主要研究方向:通信系統關鍵技術。