倪朔東,施 佺
(南通大學現代教育技術中心,江蘇南通226019)
作為信息時代的產物,網絡教學在高校教育中取得突飛猛進的發展。為了能夠充分發揮傳統教學中教學情境豐滿、師生交互頻繁、學習氛圍濃厚的優勢,全面展示實踐性教學內容的操作過程,將這些最優質的教學實景資源突破時間和空間的約束,真實高效地在網絡上還原,必須依靠視頻手段來呈現給更多的學習者。所以,作為網絡教學中的一項主要功能,視頻教學已越來越得到教學管理工作者的重視。
高校網絡建設經歷了漫長的階段,從傳輸介質到中繼設備出現了性能參差不齊的現象,而視頻傳輸對于網絡帶寬的要求極高,采用單一的單播或組播等網絡傳輸模式已經不能很好地滿足視頻傳輸,構建智能數據流傳輸的網絡視頻教學系統可以有效地利用網絡帶寬,充分發揮視頻教學在網絡教學中的作用。
目前,國內外都是采用流化本地視頻文件,通過合適的傳輸協議在網絡上進行視頻傳送,大多數高校的網絡教學視頻采用以下幾種數據流傳輸模式:單播、組播、P2P[1]。
由于校園網是用于教學、科研、學校管理、信息資源共享和遠程教學等方面工作的計算機局域網系統[2],所以在教學視頻傳輸的同時,必須兼顧到整個網絡的運行,滿足學校其他工作的需求。結合校園網本身的特點,對以上3種傳輸模式進行比較分析:
1)單播是最簡單原始的客戶端/服務器(Client/Server,C/S)模式,采用單點對單點的數據傳輸模式,即一臺服務器發出N個數據包給N個客戶端使用。現在高校的師生基本都有自己的計算機,而且終端接入的帶寬也比較高(一般是10M/100M),所以當巨額數量的用戶發出請求時,勢必對服務器的負載造成很大的壓力,甚至出現癱瘓的現象。為此,學校只能通過不斷增加服務器的數量,采用負載均衡來支撐整個需求,極大地增加了硬件成本。
2)組播也是一種客戶端/服務器(Client/Server,C/S)模式,采用單點對多點的數據傳輸模式,即一臺服務器發出1個數據包同時復制給N個客戶端使用,這種模式極大地提高了數據傳輸的效率,同時也減輕了服務器的負載和骨干網絡的擁塞。但是,組播要求從核心層到用戶接入層的每個路由器交換機必須支持組播功能,且不同廠商的設備之間達到組播聯調也同樣存在困難[3],而在校園網長期的建設過程中必然會購入不同廠商的設備,每個應用系統對組播設計的算法要求差別也很大,這對于非盈利性的校園網來說,在組播設計管理上的開銷將遠大于組播在帶寬上帶來的優勢。
3)P2P是一種新型的客戶端/客戶端(Peer to Peer)模式,采用單點對單點的數據傳輸模式,即每臺機器既充當服務器也充當客戶端的角色。P2P的原理是在用戶獲取數據的同時也作為服務器向其他用戶提供數據,這些眾多的提供者取代中心服務器提供穩定的數據服務,從而節省中心服務器帶寬。P2P技術如果要有比較穩定的應用,那么大量的數據提供者就成為了關鍵,也就是說在同一時間內大量的數據提供者成了P2P傳輸數據的質量保證[4]。由于校園網是提供教學、科研、學校管理等多項工作的一個網絡,不是單純地服務一個應用,大量的用戶在校園網中同時接收和分發數據,勢必會對局域網中的其他應用造成擁堵,成為網絡擁塞的罪魁禍首,所以目前很多高校對基于P2P的應用都做了限制。
不難看出,在校園網中僅靠單純的改善網絡傳輸模式來提高網絡視頻的傳輸質量會帶來諸多的問題。構建一個智能數據流(即源文件)來適應復雜的網絡環境,滿足不同的網絡傳輸是本課題研究的重點。
在網絡視頻教學服務中,學員的學習質量在很大程度上取決于視頻的觀看質量,而在網絡環境中決定視頻質量的一個重要指標是網絡的傳輸性能[5],網絡視頻的傳輸性能指標主要表現在接收延時、音畫同步和網絡環境自適應性等方面,智能流傳輸技術是一個新提出的高性能傳輸技術,可以很好地提高網絡視頻的傳輸性能。
要實現高性能視頻傳輸的關鍵技術在于設計一個性能優越的服務程序,服務軟件設計時就要考慮服務器對本身資源的調度算法。資源分配池技術的思路即在服務器為客戶機提供服務之前預先分配相關的資源,在服務器接收到客戶請求以后從池中調度資源,而不是在服務器接收客戶機請求以后再分配資源。資源分配池技術包括線程池與內存池技術。
1)線程池技術
在視頻服務器初始化時,預先創建足夠的服務線程,當用戶發出數據請求時能最快時間地響應并提供使用,使得服務器能滿足大量用戶并發請求,提高整體的服務性能[6-7]。如圖1所示,服務器在啟動時預先創建N個服務線程,也就是線程池,N個服務線程處于休眠狀態,然后服務器等待客戶機的服務請求,一旦服務器接收到客戶機請求,服務器將首先檢查服務線程池中的線程是否有空閑者,如果有,則調度該空閑線程執行服務;否則在池中再創建N個線程,然后選取一個線程執行服務,線程執行完服務后不會被銷毀,而是重新回收到池中以備下次再用。線程池中的線程在運行過程中不會被銷毀,而是在服務進程終止時一次性被銷毀。因此,線程池技術是網絡視頻快速響應服務請求的關鍵實現技術。

圖1 線程池技術
2)內存池技術
視頻服務器在處理客戶請求時要分配許多小塊內存用于中間操作,如果每次由操作系統來處理內存分配,一方面操作系統執行分配內存算法需要消耗時間,另一方面,操作系統是按頁來分配內存的,即使分配一個字節的內存,也會導致操作系統從內存空間提交一個頁面的內存,這就會導致內存的浪費[8]。在分配次數無限增多的情況下,就會導致進程內存碎塊過多,進一步降低系統在分配內存時的搜索速度。系統采用內存池技術,預先分配一定的內存塊在池中,當用戶發出數據請求時先使用內存池中的內存塊,在池中內存夠用的情況下就不會調用系統內存,減輕了服務器的負載。
如圖2所示,在接收到客戶的請求后,服務線程預先分配一個粒度(例如4 096)的內存于池中,然后每次有新的內存分配要求,則首先從池中切割一塊內存,如果池中的內存不夠分配,再請求系統分配一個粒度的內存塊,直到池中的空閑內存空間滿足分配請求為止,內存使用完畢,只須將內存塊回收到池中為后續重復利用即可,而不是釋放并返回操作系統,在整個服務過程結束后,一次釋放池,則所有分配的內存也被一次釋放,這樣減輕了操作系統管理內存的負擔。
視頻屬于多媒體文件,而多媒體文件都是一些比較復雜的結構化文件,通常包括文件頭、媒體數據與媒體索引數據[9]。視頻流文件還有一個重要的屬性,就是文件的碼率,即文件正常播放時單位時間里解碼器需要讀入的數據量。目前,大多數流媒體系統都是在實際播放多媒體文件時分析每個媒體文件的結構,再調用相應的解碼模塊去解碼,在網絡狀況不好或者用戶重新定位媒體播放進度時,由于響應不及時,影響觀看效果。

圖2 內存池技術
文件的結構預解析技術的原理是在添加視頻教學內容時預先獲取媒體文件的結構信息,通過獲取文件的碼率,就可以自動計算文件在點播時要緩沖的數據量。通過預先分析提取文件的索引信息塊就可以避免在后續拖動進度時重新解析文件索引信息,大大減少重新定位文件播放進度的時間;通過結構預解析技術也可以減少播放端的差錯率,迅速確定用正確的解碼器解碼媒體。
數據流半緩存技術依賴于結構預解析技術獲得的信息,在用戶點播視頻教學內容時根據視頻的本身屬性計算出需要緩存的數據量,在視頻播放過程中建立一個視頻流的滑動緩存窗口,滑動緩存窗口是建立在物理內存中,隨著播放的進度總是預先緩存部分準備要解碼的數據,通常為兩秒到幾十秒的數據量;如果用戶在播放過程中改變了播放進度,通過計算,如果改變播放進度后的流指針恰好在緩存的滑動緩存窗口范圍內,則可以不必向服務器發送SEEK請求,僅僅簡單地移動讀取指針即可;如果數據流指針超出播放滑動窗口的范圍,則廢棄現有的緩存數據,向服務器發送SEEK請求后創建新的滑動窗口,雖然有部分數據被廢棄,但它們浪費的網絡資源幾乎可以忽略。
如圖3所示,數據流半緩存技術的核心實現是一個滑動窗口,滑動窗口實際是一個環形緩存,維持一個寫入指針與一個讀取指針,讀取線程從網絡讀取數據寫入環形緩存區,并向右移動寫入指針,當寫入指針被溢出環形緩存區的范圍時,寫入指針將重新環繞到環形緩存的起點位置;解碼線程從環形緩存中讀取數據,并向右移動讀取指針,當讀取指針移到環形緩存終點時,重新環繞讀取指針到環形緩存的起點。

圖3 數據流半緩沖實現原理圖
眾所周知,接收延時在網絡視頻直播中是最重要的一項網絡傳輸性能指標,為此實驗主要從這項指標來進行直播性能的比較。服務器上裝有兩個實驗直播軟件,Windows Media Encode(WME)和采用智能數據流傳輸的網絡視頻教學系統(以下簡稱智能流系統),在相同實驗環境和信號源的前提下,分別用這兩個軟件進行直播,采集實驗數據。
在一臺客戶端PC上安裝一個秒表軟件和一個屏幕錄像軟件,用一臺攝像機對著秒表,攝像機通過采集卡(本次實驗采用osprey 450卡)作為信號源連接到直播服務器上。這時候在客戶端打開直播播放器,播放器窗口中顯示的視頻就是本機的秒表,用屏幕錄像軟件錄下視頻后,在某一時間點截下畫面,“客戶端計算機秒表顯示時間”與“客戶端直播窗口秒表顯示時間”的差值即為接收延時,如圖4、圖5所示,直播實驗時間為60 min。

圖4 Windows Media Encode直播時的接收延時

圖5 本系統直播時的接收延時
分別截取了 1 s,1 min,5 min,10 min,30 min,60 min的實時畫面。從圖4可看出,采用WME進行直播的接收延時最多的是1 s畫面時的281 ms,最少的是1 min畫面時的0 ms。為了得到更客觀的平均接收延時,筆者隨機采集了60個時間點的數據,經計算平均接收延時約為248 ms。從圖5可看出,采用智能流系統進行直播的接收延時最多的是30min畫面時的205ms,最少的是1 s畫面時的136 ms,筆者同樣隨機采集了60個時間點的數據,經計算平均接收延時約為163 ms。
經比較,采用本系統直播的平均接收延時比Windows Media Encode少85 ms,這是因為智能數據流傳輸技術在視頻直播時采用的預判斷,主要是資源分配池技術在信號源傳輸前進行了資源的合理分配,結構預解析技術在播放器接收視頻流時進行了快速正確的解碼,使得傳輸延遲盡可能地降到最小。
本文提出了一種新的智能數據流傳輸模式,詳細闡述了資源分配池技術、結構預解析技術和數據流半緩存技術這3種關鍵技術。最后通過實驗和WME系統比較接收延時這項重要網絡直播指標,發現平均接收延時顯著減少,有效地提升了網絡視頻的性能。
[1]凌燕,藍善禎,徐品,等.P2P流媒體系統關鍵技術概述[J].電視技術,2012,36(3):58-61.
[2]王竹林.校園網組建與管理[M].北京:清華大學出版社,2002.
[3]成吉思.組播技術在網絡教育上的應用[J].電腦知識與技術,2012(19):4731-4732.
[4] JONATHAN S,OMER L,RAPHAEL G.An optimal topology for a static P2P live streaming network with limited resources[C]//Proc.IEEE 17th International Conference on Parallel and Distributed Systems.Tainan:IEEE Press,2011:729-734.
[5]王明偉,王奇,楊潔,等.視頻流傳輸性能的研究與分析[J].電視技術,2010,34(12):30-33.
[6]賀杰.線程池技術應用研究[J].網絡安全技術與應用,2011,10(5):58-60.
[7]張垠波.線程池技術在并發服務器中的應用[J].計算機與數字工程,2012,40(7):153-156.
[8]甘彪,凌小峰,宮新保.基于動態內存池和WinpCap的高速數據捕獲技術[J].信息技術,2012,35(1):70-74.
[9] 柳薇,馬爭鳴.網絡視頻編碼技術[J].通信學報,2005,26(9):85-92.