尹亞光,楊峰,戴瓊海
摘 要:本文著重對影響流媒體服務器性能的關(guān)鍵因素進行了分析,并在此基礎(chǔ)上提出了一些對流媒體服務器進行配置的建議。
關(guān)鍵詞:流媒體 性能 內(nèi)存 處理速度 磁盤讀寫 網(wǎng)絡吞吐率
流媒體(Streaming Media)是一種以音視頻數(shù)據(jù)流的方式在網(wǎng)絡上傳遞多媒體信息的技術(shù)。與傳統(tǒng)的多媒體下載不同,流媒體傳輸具有實時性和連續(xù)性的特點。邊播放邊下載的流式傳輸方式可以使用戶不必等待所有的數(shù)據(jù)下載到本地。采用不同的碼率傳輸,可以使用戶在幾十kbit/s低帶寬到幾十Mbit/s高帶寬的不同網(wǎng)絡環(huán)境中都能在線欣賞到連續(xù)不斷的較高品質(zhì)的音視頻節(jié)目。流媒體技術(shù)具有十分廣泛的應用領(lǐng)域,如在線直播、網(wǎng)絡廣告、視頻點播、視訊會議、遠程教育等。多媒體文件與一般的數(shù)據(jù)不同,較大的傳輸負荷將使得網(wǎng)絡丟失和擁塞的概率大大增加,因此如何提高音視頻傳輸?shù)姆⻊召|(zhì)量是流媒體技術(shù)所面臨的最大挑戰(zhàn)。
一、技術(shù)概述
1. 協(xié)議支持
一般的數(shù)據(jù)傳輸采用的協(xié)議有HTTP或FTP,這兩種基于TCP可靠傳輸機制的協(xié)議可以完成普通數(shù)據(jù)在網(wǎng)絡上的傳輸。對于實時音視頻數(shù)據(jù)的傳輸業(yè)務,HTTP或FTP雖然也能支持,但是卻具有較大的局限性。首先,數(shù)據(jù)的實時性需求無法在傳輸中得到保證,更不能提供像現(xiàn)場直播這樣的高實時性的業(yè)務。其次,無法支持如快進快退這樣的VCR功能。最后,無法實現(xiàn)實時加密,對數(shù)據(jù)版權(quán)的保護有限。
針對流媒體數(shù)據(jù)獨有的特點,一系列與此相關(guān)的傳輸協(xié)議以及一個完善的流媒體傳輸結(jié)構(gòu)框架被提出,并用以解決上述音視頻數(shù)據(jù)傳輸中遇到的問題。在新的框架體系中,服務器端建立專門用于傳輸音視頻實時數(shù)據(jù)流的流服務器,所有在網(wǎng)上傳輸?shù)臄?shù)據(jù)都需要經(jīng)過一系列的壓縮編碼,減小其中的數(shù)據(jù)冗余,然后再被服務器封裝成數(shù)據(jù)包傳輸給客戶端。由于音視頻數(shù)據(jù)少量的差錯和丟失對最終播放質(zhì)量的影響較小,為了避免采用可靠傳輸帶來的時延,提高數(shù)據(jù)的實時性,因此實時傳輸協(xié)議RTP是建立在面向無連接的UDP之上的。原有的服務器端和客戶端的可靠連接通信則由另一個實時流協(xié)議RTSP來完成。
實時傳輸協(xié)議RTP是專門用于因特網(wǎng)上實時多媒體數(shù)據(jù)傳輸?shù)囊环N協(xié)議,一般是在UDP數(shù)據(jù)包之前建立一個RTP包頭,其中包含了一些保證數(shù)據(jù)實時連續(xù)性的信息(如序列號、時間戳等),但RTP也可以在TCP或ATM等其他協(xié)議上工作。RTP被定義為在一對一或一對多的傳輸模式下工作,提供時間信息和流同步。
RTP傳輸協(xié)議有如下一些特點:
(1)協(xié)議的靈活性。RTP不具備傳輸層協(xié)議的完整功能,其本身也不提供任何機制來保證實時地數(shù)據(jù)傳輸,不支持資源預留,也不保證服務質(zhì)量。另外,RTP將部分運輸層協(xié)議功能(比如流量控制)上移到應用層完成,簡化了運輸層處理,提高了該層效率。
(2)數(shù)據(jù)流和控制流分離。RTP的數(shù)據(jù)報文和控制報文使用相鄰的不同端口,這樣大大提高了協(xié)議的靈活性和處理的簡單性。
(3)協(xié)議的可擴展性和適用性。RTP通常為一個具體的應用來提供服務,通過一個具體的應用進程實現(xiàn),而不作為OSI體系結(jié)構(gòu)中單獨的一層來實現(xiàn),RTP只提供協(xié)議框架,開發(fā)者可以根據(jù)應用的具體要求進行充分的擴展。
RTP協(xié)議本身不提供流量控制和擁塞控制功能,它靠一個專門的實時傳輸控制協(xié)議(RTCP)來實現(xiàn)。RTCP周期性地統(tǒng)計數(shù)據(jù)包傳輸時的丟失情況等信息,服務器根據(jù)這些反饋信息來制定流量控制的策略,改變傳輸碼率甚至負載類型,大大提高了實時數(shù)據(jù)的傳輸性能。
RTSP是基于應用層的一個重要的流會話控制協(xié)議,建立在TCP協(xié)議上,在整個流媒體應用過程中提供整套會話服務,控制著整個媒體流的播放過程。它提供用于音頻和視頻流的“VCR模式”遠程控制功能,用于控制流媒體的播放、暫停、記錄等操作。同時,服務器和客戶端之間會話的建立與銷毀等信息的交互也來自RTSP的支持。
2. 相關(guān)技術(shù)
為了提供更高質(zhì)量的服務,在流媒體業(yè)務中涉及了相當多的技術(shù)。首先,視頻在傳輸之前需要壓縮成適合于網(wǎng)絡傳輸?shù)拇a流。在編碼中,一種方法是精細可擴展行編碼(FGS),這種壓縮機制把視頻壓縮成基本層和增強層位流,通過位平面編碼實現(xiàn)連續(xù)的增強層速率控制。
傳輸信道中的差錯控制也可以提高視頻傳輸?shù)馁|(zhì)量。前向糾錯FEC是其中的一種差錯控制方法,可以通過在各個數(shù)據(jù)包中附加一定的冗余信息來恢復丟失的數(shù)據(jù)包;也可以通過在編碼時在碼流中采用一些特殊的編碼方式,比如逆向編碼、多描述編碼、分層編碼等來減少數(shù)據(jù)丟失對質(zhì)量的影響;還可以在客戶端對丟失的信息進行插值預測,盡量削弱差錯所帶來的影響。
除了采用差錯控制來保證傳輸數(shù)據(jù)的質(zhì)量,還可以采用擁塞控制的方法來減輕網(wǎng)絡擁塞程度。一種方法是在服務器端根據(jù)反饋信息調(diào)節(jié)數(shù)據(jù)的發(fā)送速率,另一種方法是由客戶端增加和減少信道數(shù)量來進行速率的調(diào)整。兩種方法也可以結(jié)合起來使用。
媒體流之間的同步通過媒體同步機制來實現(xiàn)。不同的媒體之間的傳輸和播放是獨立的,而最終播放的所有媒體又需要集成在一起,例如音頻、視頻和其他文本信息的同步播放。流內(nèi)同步、流間同步和對象間同步是三種類型的同步機制,其本質(zhì)是在媒體內(nèi)或媒體間說明時間關(guān)系。同步多媒體集成語言SMIL是一種實現(xiàn)媒體同步控制的標準。
數(shù)據(jù)的安全性由數(shù)字版權(quán)管理DRM來保證。這是保護多媒體內(nèi)容免受未經(jīng)授權(quán)的播放和復制的一種方法。如果數(shù)字版權(quán)無法得到保證,流媒體業(yè)務將失去商業(yè)運營的可能。DRM通過對內(nèi)容加密來保護數(shù)據(jù)和通過附加使用規(guī)則來判斷用戶的使用權(quán)限。
二、系統(tǒng)組成
1. 基本組件
流媒體是由各種不同的互相通信交互的軟件系統(tǒng)構(gòu)成的,一個最基本的流媒體系統(tǒng)必須包括編碼器(Encoder),服務器(Server)和播放器(Player)三個模塊,如圖1所示。模塊之間通過特定的協(xié)議互相通信,并按照特定格式互相交換文件數(shù)據(jù)。其中編碼器用來將原始的音視頻轉(zhuǎn)換成合適的流格式文件,服務器向客戶端發(fā)送編碼后的媒體流,客戶端播放器則負責解碼和播放接收到的媒體數(shù)據(jù)。
編碼器對原始的音視頻媒體源進行一定格式的壓縮編碼,編碼的方式有實時和離線兩種。實時編碼主要應用在實時直播服務中,由于對數(shù)據(jù)實時性的要求較高,因此對編碼器的性能要求也較高,其輸入一般是模擬的音視頻信號,也可以輸入數(shù)字的媒體設備信號如DVD光驅(qū)。由于單一的碼率無法滿足多種用戶的需求,實時編碼可以采用多個編碼器并行編碼的方法,輸出不同碼率的碼流。離線編碼對實時性的要求更低,一般是通過一個軟件平臺直接讀取并編碼需要壓縮的音視頻數(shù)據(jù),如果提供的是其他壓縮格式的數(shù)據(jù),則需要先解碼并轉(zhuǎn)碼成所需格式。這種方法一般是服務于對實時性要求不高的點播業(yè)務,因此最后需要將其封裝為一個媒體文件,供服務器進行傳輸。編碼器的性能好壞將直接決定服務質(zhì)量的優(yōu)劣,目前最新的H.264視頻編碼器無論在編碼效率還是在圖像質(zhì)量上都優(yōu)于現(xiàn)有的各種視頻編碼標準。服務器負責將編碼數(shù)據(jù)封裝成RTP數(shù)據(jù)包發(fā)送到網(wǎng)絡中。每次從節(jié)目中獲取一幀數(shù)據(jù),然后分成幾個RTP數(shù)據(jù)包,并將時間戳和序列號添加到RTP包頭,屬于同一幀的數(shù)據(jù)包具有相同的時戳。一旦到達數(shù)據(jù)包所應播放的時間后,服務器便將這一幀的音視頻數(shù)據(jù)包發(fā)送出去,然后再讀取下一幀數(shù)據(jù)。
流媒體系統(tǒng)是無法忽略網(wǎng)絡環(huán)境的變化所帶來的影響的。這些變化包括不斷變化的網(wǎng)絡吞吐量,不斷變化的傳輸延遲,以及由于網(wǎng)絡擁塞中丟包而不斷變化的丟包率。對付這種網(wǎng)絡變化的辦法就是在客戶端播放前預先緩沖足夠的數(shù)據(jù),以此來平滑網(wǎng)絡變化的影響。
音視頻RTP數(shù)據(jù)包經(jīng)互聯(lián)網(wǎng)絡傳輸?shù)娇蛻舳撕螅冗M入一個緩沖隊列等待,這個緩沖隊列中的所有數(shù)據(jù)包按照包頭的序列號排序,如果有遲到的包,則需按序列號重新插入到正確的位置上,這樣就避免了亂序的問題。
客戶端每次從隊列頭部讀取一幀的數(shù)據(jù),從包頭的時戳中解出該幀的播放時間,然后進行音視頻同步處理。同步后的數(shù)據(jù)將送入解碼器進行解碼,解碼后的數(shù)據(jù)被送入一個循環(huán)讀取的緩存中等待。一旦該幀的播放時間到達,解碼數(shù)據(jù)就被從緩存中取出,送入播放模塊驅(qū)動底層硬件設備進行顯示或播放。
2. 業(yè)務擴展
(1)集群調(diào)度。單臺服務器的容量和性能畢竟是有限的,服務器集群調(diào)度策略可以將多個服務器并行使用來為更多的用戶服務。集群系統(tǒng)通過客戶端和多個流服務器之間的一個調(diào)度與網(wǎng)管服務器實現(xiàn)。在負載均衡應用中,集中式調(diào)度是現(xiàn)在使用較多的一種集群管理模式,系統(tǒng)主要由三部分組成:調(diào)度器,位于服務集群的最前端,根據(jù)服務集群的負載情況將到來的服務請求轉(zhuǎn)發(fā)到后臺真實服務器上;服務器池,位于調(diào)度器的后端,由一組為用戶提供具體服務的Server組成,對用戶不可見,用戶通過調(diào)度器與服務器建立C/S關(guān)系;存儲池,后臺服務器的一個共享存儲空間,使得集群中的各臺服務器能夠提供相同的內(nèi)容服務。
客戶端將用戶的請求先傳送到調(diào)度器,調(diào)度器則通過網(wǎng)絡管理協(xié)議對各節(jié)點進行監(jiān)控,動態(tài)獲取各節(jié)點的狀態(tài)信息,隨時對各節(jié)點的性能進行評估,根據(jù)當前各節(jié)點的負載情況,通過一定的智能算法選擇轉(zhuǎn)發(fā)至最合適的服務器,從而達到集群中各個服務器間的動態(tài)負載均衡。這種方法通過增加新的服務結(jié)點大大擴充了服務器支持的并發(fā)流數(shù)量,克服了單臺服務器處理能力的局限性,使得整個流媒體服務的性能和容量得到了無限制的提升。
對于用戶來說,整個集群服務器是透明的,也就是不存在每個單獨服務器,因此我們必須實現(xiàn)IP隱藏,使得用戶無法觀察到每個單獨服務器的IP,這樣可以更好的保證整個集群的負載平衡,因為這樣集群的負載是由調(diào)度器來統(tǒng)一執(zhí)行,用戶無法自己指定,而且也可以更好的保證系統(tǒng)的安全性。實現(xiàn)IP隱藏的手段很多,在此選擇了IP隧道的方式。
(2)網(wǎng)絡管理。調(diào)度服務器上的網(wǎng)絡管理平臺通過特定的網(wǎng)管協(xié)議來實現(xiàn)各個服務器之間的協(xié)調(diào)管理,可以選用SNMP作為管理協(xié)議,并針對流媒體服務的特點開發(fā)了一套流媒體服務集群管理系統(tǒng)。一個SNMP網(wǎng)絡管理系統(tǒng)從邏輯上可抽象為四個部分:被管代理,網(wǎng)絡管理工作站,網(wǎng)絡管理協(xié)議,網(wǎng)絡管理信息庫。網(wǎng)管工作站負責整個網(wǎng)絡的管理,監(jiān)控被管設備狀態(tài)從而保證網(wǎng)絡中的各個設備正常運行。被管代理是駐留在被管理設備上的一個進程,負責收集組織被管設備狀態(tài)信息,響應管理端訪問管理信息庫的請求,另外當系統(tǒng)出現(xiàn)問題的時候可以主動向管理端發(fā)出通告信息。MIB是管理信息的組織形式,呈樹形結(jié)構(gòu)。管理協(xié)議則定義了網(wǎng)管工作站和被管設備之間信息交換的接口,雙方以約定的格式進行消息傳遞。
(3)認證計費。作為一個面向用戶的多媒體業(yè)務,商業(yè)運營必須作為其中一個重要的策略被提出。首先,提供流媒體服務必須面向授權(quán)用戶,因此需要對用戶的接入信息進行認證。其次作為一個商業(yè)平臺,必須對每項服務進行統(tǒng)一的多策略計費。目前流行的用戶認證和計費系統(tǒng)遵從RADIUS(Remote Authentication Dial in User Service)協(xié)議。整個系統(tǒng)主要實現(xiàn)的功能應該包括:用戶接入認證,用戶服務授權(quán),服務過程計費,用戶信息管理,計費策略管理等。各部分組件包括認證服務器,計費服務器,信息數(shù)據(jù)庫,用戶和計費策略管理平臺等。需要在流媒體平臺上提供用戶認證插件,當用戶通過Web認證后,還需要流媒體服務器進行身份驗證后才能收看節(jié)目,避免了用戶繞過Web認證而直接用節(jié)目URL地址進行點播,提供更高的安全性。認證服務器除了認證接入的用戶權(quán)限外,還作為代理轉(zhuǎn)發(fā)信息到計費服務器。同時計費服務器根據(jù)用戶級別,節(jié)目信息,收看時段信息可采取不同的計費策略。這項業(yè)務使得大規(guī)模商業(yè)運營成為可能,具備其自身的新業(yè)務特點,例如時間、流量、多種計費規(guī)則、多種媒體格式等等,在選擇性、高效性、實時性、可靠性及安全性方面將會提出比電信業(yè)務的用戶管理和計費系統(tǒng)更高的要求。
(4)內(nèi)容發(fā)布。為了方便用戶使用流媒體系統(tǒng)所提供的各類點播或直播服務,所有的服務內(nèi)容可以以Web頁面的形式發(fā)布到網(wǎng)上,用戶只需要點擊自己所需節(jié)目的鏈接,就可以自動啟動安裝在本地的客戶端進行收看。Web服務器可以通過Apache和PHP等技術(shù)實現(xiàn)。為了方便對發(fā)布內(nèi)容的更新,每個節(jié)目鏈接都是指向服務器上的一個鏈接文件,文件中的內(nèi)容即為該節(jié)目在某臺服務器或調(diào)度器的地址鏈接。這樣,如果需要更新節(jié)目,則只需修改或添加鏈接文件中內(nèi)容即可。
三、結(jié)束語
隨著互聯(lián)網(wǎng),多媒體編碼技術(shù)的不斷發(fā)展,流媒體業(yè)務具有廣闊的市場前景,流媒體技術(shù)的應用將對人們的工作和生活帶來深遠的影響。隨著流媒體技術(shù)的日益成熟,流媒體市場也吸引了越來越多的企業(yè)參與競爭,一個全球化的流媒體市場競爭格局已經(jīng)初步形成,具備巨大發(fā)展?jié)摿Φ牧髅襟w技術(shù)將會在未來的互聯(lián)網(wǎng)應用中占據(jù)重要的一席之地。