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