基于IP多播視頻系統(tǒng)的設計與實現(xiàn)
本文著重介紹了流媒技術及其底層傳輸技術——IP多播?;谛@網設計并實現(xiàn)了一個可供網絡現(xiàn)場直播、視頻點播等服務的視頻通信系統(tǒng),系統(tǒng)中結合了多播技術中節(jié)約帶寬、減輕服務器負載的優(yōu)勢,并采用了Real公司RealSystem流媒體系統(tǒng),在客戶端/服務器模式下完成。
1 流媒體技術
所謂流媒體是指采用流式傳輸方式在Internet播放媒體文件,即將整個音頻、視頻等連續(xù)媒體文件經過壓縮后,由服務器向用戶計算機連續(xù)和實時傳送。用戶只需經過幾秒或幾十秒的啟動延時即可進行播放和觀看,剩余部分將在后臺繼續(xù)下載,邊下載邊播放。實現(xiàn)流式傳輸有兩種方法:實時流式傳輸(Real times treaming)和順序流式傳輸(Progressive streaming)。其中實時流式傳輸需要專用的流媒體服務器與傳輸協(xié)議(如實時傳輸協(xié)議RTP、實時傳輸控制協(xié)議RTCP、實時流協(xié)議RTSP和媒體服務器協(xié)議MMS等)來保證媒體信號帶寬與網絡連接匹配,使媒體可被實時觀看到,特別適合用于現(xiàn)場直播。
目前支持流媒體技術的解決方案主要有RealNet works公司的RealSystem,Microsoft公司的Windows MediaTechnology和Apple公司的QuickTime。
2 多播技術
從底層傳輸模式看,實時流式傳輸支持單播、廣播和多播。所謂多播是指數(shù)據源將IP數(shù)據包“盡力而為”地發(fā)送到共享相同IP地址的一個主機組中,然后利用網絡設備進行相應的復制和分發(fā),只有屬于該組的成員才能接收到該數(shù)據包。顯然,對于網上視頻直播來說,因為大部分用戶接收的數(shù)據都是相同的,使用多播傳輸模式比點對點的數(shù)據包傳輸方式——單播和一點對所有主機的數(shù)據包傳輸方式——廣播,在節(jié)約網絡帶寬、減輕服務器負載和分布式網絡應用更容易實現(xiàn)等方面有著明顯優(yōu)勢。
多播采用IANAIP地址分類中的D類地址,即范圍為224.0.0.0~239.255.255.255。在此基礎上,CERNET還進一步將該地址空間劃分為4個管理域:Internet范圍、CERNET主干網、省網和校園網,其中校園網的多播地址空間為239.251.192.0/18。
除此之外,要實現(xiàn)多播至少還要:(1)在主機與路由器之間部署管理組成員關系的Internet組管理協(xié)議(IGMP)。(2)在路由器之間部署轉發(fā)數(shù)據包的多播路由協(xié)議。一般來說,多播路由協(xié)議可以分為兩類:一種是密集模式,如DVMRP、PIM-DM、MOSPF等,比較適合于網絡帶寬充足、組成員分布密集的環(huán)境;一種是稀疏模式,如PIM-SM等,比較適合于網絡帶寬有限、組成員分布稀疏的情況。(3)為了有效抑制多播數(shù)據包在鏈路層的擴散,需要部署IGMPSnooping,它依靠偵聽主機與路由器之間通信的IGMP報文將同一多播組的活動成員映射為一個VLAN,在收到多播數(shù)據包后,僅向該多播組所對應的VLAN成員轉發(fā)。
3 系統(tǒng)的設計與實現(xiàn)
系統(tǒng)采用了Real公司RealSystem的流媒體系統(tǒng),結合IP多播技術,在客戶端/服務器模式下,構建了一個可供在線直播,視頻點播等服務的流媒體通信系統(tǒng)如圖1所示。由于TCP的慢啟動特性和丟失重傳的可靠性保證,使得它并不適合流媒體傳輸,更不適合多播。當前大多數(shù)研究均是基于UDP的Multicast,而用RTP/RTCP作為信息反饋的框架。因此IP多播(IPMulticast)成為了最好的解決方法。
3.1 RealSystem流媒體系統(tǒng)
3.1.1 RealSystem的構成
Real公司的RealSystem流媒體系統(tǒng)是一種性能非常優(yōu)秀和非常穩(wěn)定的系統(tǒng),它在全球有很高的市場占有率。它采用的是一種高性能的自適應壓縮算法,生成獨特的RM格式文件,可以有很高的壓縮比率,并可以適應從56kbit/s到10Mbit/s以上帶寬的線路要求。Real公司的流媒體系統(tǒng)目前在實時網絡直播領域無人可以替代,有大量的實際方案可供選擇,而且可以適應各個平臺的操作系統(tǒng)。目前可以選擇的平臺有NT、Linux、Solaris、UNIX、AIX及Irix系統(tǒng)等,是目前支持平臺最多的一個系統(tǒng),其工作原理如圖2所示。
3.1.2 RealSystem中使用的通道和協(xié)議
在Real公司的Server端使用兩種通道與客戶端軟件Realplayer通信:一種是控制通道,用來傳輸諸如“暫停”、“向前”等命令,使用TCP協(xié)議;另一個是數(shù)據通道,用來傳輸實際的媒體數(shù)據,使用UDP協(xié)議。如圖2所示,在RealSystem中,通信過程可分為如下兩部分。
第一,當編碼器需要向Real服務器端傳輸壓縮好的數(shù)據時,通常使用UDP協(xié)議與Real的服務器端通訊。RealProducer(是Real公司的編碼工具)可以設置成使用TCP協(xié)議的方式向服務器傳輸數(shù)據。
第二,當用戶在瀏覽器上點擊一個指向媒體文件的鏈接時,Realplayer打開一個與Real服務器的雙路連接,通過這個連接與Real服務器之間來回傳輸信息。一旦Real服務器接受了客戶端的請求,它將通過UDP協(xié)議傳輸客戶請求的數(shù)據。
3.2 網絡支持
為了可以在不同VLAN間轉發(fā)多播數(shù)據包。因此,必須把交換機配置成IGMP查詢路由器,并在相應的端口啟用PIM-DM多播路由協(xié)議,具體配置命令如下:
全局模式:ipmulticast—muting
ruterpim
在每個端口(interface)配置模式:ippim
接下來,為了降低多播流量使其只轉發(fā)收到組成員報告的IP多播組,需要開啟IGMPSnooping。具體配置命令如下:
全局模式:ip igmpsnoping vlan
mrouterinterface
其中:vlan—id為交換機所包含的虛網號,為上聯(lián)到多播路由器或交換機的端口。
3.3 視頻服務器
實時視頻服務器是由流服務器硬件平臺與運行其上的流服務器軟件RealServer9.0共同完成,主要功能是完成流媒體的存放、控制和發(fā)布。RealServer支持兩種多播發(fā)布方式:反向信道多播和可伸縮多播。也就是說,將一個現(xiàn)場直播流同時傳遞給多個客戶端,而無須為每一客戶的連結發(fā)送一個單獨的數(shù)據流,客戶端只需連結到這個數(shù)據流,而不是連結到服務器上,就可觀看直播了。由于反向信道多播在每一個客戶端和服務器之間還保持了一個用于統(tǒng)計和控制信息交互的控制信道,所以還不能算是真正意義上的多播。因此,我們僅討論可伸縮多播的配置。在RealSystem管理器中,單擊左邊的菜單項“可伸縮多播”,就可以配置可伸縮多播:首先指定可伸縮多播的加載點(默認為/scalable/),然后為要轉播的實況流創(chuàng)建一個頻道(Channe1)。在本系統(tǒng)中與頻道有關的參數(shù)主要有啟用頻道(yes)、虛擬路徑(*)、端口范圍(9000~9099)、IP地址(239.251.192.0~239.251.192.99)等。
3.4 Realplayer客戶端播放器
瀏覽器通過HTTP(超文本傳輸協(xié)議)協(xié)議向Real服務器發(fā)出請求,URL請求中包含激活RAMGEN的參數(shù),指向被請求SMIL文件的URL引發(fā)RAMGEN自動產生一個包含SMIL文件位置的RAM文件,這個文件將被傳送給瀏覽器。RealPlayer播放軟件接受瀏覽器傳遞過來的RAM文件,然后用RTSP與RealServer進行通信,請求該RAM文件中包含的SMIL文件。根據在SMIL文件中包含的信息,Realplayer向RealSe-rver請求、接受并播放媒體元素。
客戶端播放器是提供給上網用戶觀看流媒體的工具軟件RealPlayer或RealOne,主要功能是播放服務器端發(fā)布的多媒體流(如視頻、音頻、圖像等)。在RealPlayer和RealOne中,訪問可伸縮多播流的URL格式如下:
http://視頻服務器的IP地址:端口號/可伸縮多播的加載點/虛擬路徑/流文件的名稱.Sdp
3.5 基于IP多播技術的優(yōu)勢及意義
通過基于標準的網絡平臺的IP多點映射支持(即IP多播技術),Real可只傳輸單一的數(shù)據流,就能服務高達數(shù)千計的使用者,而播放質量不會有任何的區(qū)別,只須在支持MultiCast的網絡中簡單配置,就可較之與古典的UniCast在效率上有了明顯的提高。IP多播技術的應用能夠降低占用帶寬,減輕服務器負荷,并能改善傳送數(shù)據的質量,尤其適用于大量帶寬的多媒體應用?;贗P多播技術的流媒體視頻系統(tǒng)的完成具有著重要的意義,優(yōu)勢表現(xiàn)如下。
(1)在帶寬方面,對于流媒體系統(tǒng)來說,大量的用戶經常要在大致相同的時間里訪問相同的節(jié)目,顯然用IP多播來發(fā)送節(jié)目是明智的,使得網絡帶寬得到更有效的利用。
(2)在服務器負載方面來說,如果流媒體系統(tǒng)使用IP多播來發(fā)布媒體節(jié)目,就不需要購買越來越高性能的服務器以滿足客戶數(shù)量的增長。很明顯,IP多播的主要優(yōu)勢在于通過大大減少需要轉發(fā)和處理的數(shù)據量,降低所需服務器性能。