實現視頻質量與發送速率控制的高並發流媒體伺服器系統的製作方法
2023-06-19 07:58:51
專利名稱:實現視頻質量與發送速率控制的高並發流媒體伺服器系統的製作方法
技術領域:
本發明屬網絡多媒體技術領域。具體的說,主要涉及一種能夠實現視頻質量與發送速率控制的高並發流媒體伺服器系統。
背景技術:
流媒體指在網絡中使用流式傳輸技術傳送音頻、視頻和多媒體文件等。流式傳輸技術的特點是把連續的音頻和視頻信息經過壓縮後放到網絡的伺服器上,網絡用戶一邊下載一邊進行收聽或觀看,而不必等到把整個文件下載完畢。目前,越來越多的企業網和校園網上都開展了流媒體應用,同時流媒體技術的興起也越來越受到了學術界和工業界的高度關注。但是,流媒體的應用費用相對比較高昂,特別是在遠程傳送流媒體信息方面。鑑於目前多數企業都已經採用了許多通用伺服器產品,而且這類產品的成本越來越低,許多廠商紛紛推出以通用伺服器產品作為硬體平臺的流媒體解決方案,通過在通用伺服器上安裝流媒體伺服器軟體,就可以滿足企業流媒體應用的需求。國際上使用較多的流媒體伺服器軟體主要有RealNetworks公司的Helix Server、Microsoft公司的Windows Media Server(以下簡稱為微軟Media Server)和Apple公司的Darwin StreamingServer,它們佔據著絕大部分市場份額。而近期微軟的Media Server逐漸勝出,成為主流中的主流。
但是這些流媒體伺服器普遍沒有實現好的緩衝控制和流媒體速率平滑技術,發送速率波動性很大,對瘦客戶端的服務質量造成很大影響;另一方面,這些流媒體伺服器也不能像機頂盒或無線終端所要求的那樣控制客戶端緩衝區到給定值範圍,容易造成緩衝區溢出。目前國際上較多的流媒體伺服器軟體系統還存在並發性能不好,可擴展性差,多種客戶端並存卻互不兼容等問題,例如微軟Media Server存在只支持多機鬆耦合集群、Windows平臺、Microsoft類型的播放器等問題,極大地限制了流媒體技術的應用推廣。
發明內容
本發明的目的在於提出一種能夠實現視頻質量和發送速率控制的支持高並發數的流媒體伺服器系統,以解決上述主流流媒體伺服器可擴展性差、支持平臺單一、支持請求類型不夠全面的問題。
本發明提出的流媒體伺服器系統採用新穎的方法提高其並發用戶數,並根據發送速率與視頻質量控制的特點將兩者有機地融合起來,給出了統一實現模式,使得發送速率與視頻質量控制協同工作,有效地提升了流媒體的服務質量。該系統包括三個進程主控進程、RTSP(實時流協議)通信進程和媒體數據發送進程;其中,主控進程管理和協調其他進程的運行,RTSP通信進程負責與客戶端的RTSP交互信息的傳輸,媒體數據發送進程負責發送媒體數據;各個進程之間的通信結構採用消息集線器結構形式;各進程之間的通信方式採用消息隊列方式和套接字方式主控進程和RTSP通信進程都運行在一個計算機上,相互之間通信採用消息隊列的方式,而媒體數據發送進程與主控進程通信採用套接字方式。
本發明中,一個主控進程通過不同通信方式統籌管理其他進程,這種主從式的架構可以方便地添加功能模塊,對原先系統影響很小。圖1是該體系的總體邏輯架構圖。
各個進程之間的通信結構採用消息集線器(Hub)結構形式,即其他所有的進程之間不進行直接通信,所有的進程間通信都通過主進程。與各個進程直接互相通信的方案相比較,消息集中處理方案便於集中控制,實現簡單,邏輯清楚;各個進程之間的通信方式採用為消息隊列方式和Socket(套接字)方式。除了媒體數據發送進程外,其他各個進程都運行在一個計算機上,所以相互之間採用消息隊列的方式進行通信,可以保證通信的高效和可靠。至於媒體數據發送進程,由於其負責實際媒體數據的傳輸,需要大量的系統資源,可能有若干個運行在不同機器上的媒體數據發送進程協同工作,所以,媒體數據發送進程採用套接字通信方式與主控進程進行通信,可以保證通信的高效和可靠。通過連接多個媒體數據發送進程,可以加大整個流媒體伺服器所支持的並發數目,提供一定的冗餘保護。
本發明中,各播放板(媒體數據發送進程及其支撐硬體系統合稱為播放板)統一由一塊主控板(RTSP進程和主控進程兩個進程及其硬體系統合在一起記做主控板)管理,所有用戶請求都定位到主控板,主控板在各個硬體設備和播放板之間自主進行負載均衡。
RTSP通信進程不負責媒體數據發送,該進程採用單線程派發技術,以提高並發性,一套RTSP進程和主控進程可以帶一個或多個媒體數據發送進程,具有良好的可擴展性。
媒體數據發送進程負責視頻質量控制、發送速率控制和RTP打包發送。該進程從網絡緩衝區中取下一幀(第k幀)數據,根據視頻質量控制模塊和發送速率控制模塊的輸出來調製第k幀數據,把調製後的第k幀數據打成RTP(實時傳輸協議)包發送。視頻質量控制模塊運用比例積分的方法,根據比例積分係數Kp、Ki來輸出視頻質量Q。
本發明的這種主從式架構使得一套伺服器系統可以配備不同類型的播放板,從而能同時支持Media Player、QuickTime和IPTV機頂盒等多種客戶端請求。該系統架構把許多依賴於作業系統實現的調度功能都收歸到伺服器上層實現,並根據流媒體應用的具體特點做優化。因此該系統不依賴於作業系統的特殊支持,播放板和主控板之間通過網絡連接,主控板和播放板可以運行在不同的軟硬體平臺上,具有跨平臺性。
圖1是本發明的總體架構圖。其中,顯示了各個進程之間的通信關係。主控進程管理和協調其他進程的運行;RTSP通信進程負責與客戶端的RTSP控制信息的傳輸;媒體數據發送進程負責發送媒體數據。
圖2是媒體數據發送進程的工作流程圖。
圖3是視頻質量控制、發送速率控制和RTP打包發送流程。
圖4是視頻質量控制策略;其中,Q表示質量控制信號量,Kp為比例積分調節器的比例項係數,Ki為比例積分調節器的積分項係數,Integ為積分器的輸出;Ref為接收緩衝區數據量的參考值。
具體實施例方式
下面進一步介紹本發明的實施方式。
第一,主控進程(Main Process)負責管理和協調其他進程的運行,由以下幾個模塊構成a.初始化模塊;創建主控進程的主數據結構、加載伺服器上的媒體文件信息表以及他的一些初始化工作;b.RTSP(實時流協議)和RTCP(實時傳輸控制協議)包解析模塊,負責RTSP包和RTCP包的解析;c.響應RTSP信息模塊建立連接如果有客戶端請求建立連接,首先對用戶信息進行認證,然後調用調度信息表進行接納控制,判斷伺服器是否有能力再接受一個新的客戶端服務請求。若拒絕該連接請求,則直接通知客戶端,如果接受該連接請求,則分配給客戶端發送數據的伺服器埠號等相關信息,並更新伺服器上的相應管理信息;播放根據文件ID以及RTSP的播放時間信息,發指令給相應的媒體數據發送進程進行播放,更新伺服器上的相應管理信息;暫停或重新定位更新伺服器上的相應管理信息,並通知媒體數據發送進程停止發送數據或通知媒體數據發送進程重新定位發送數據;關閉連接更新伺服器上的相應管理信息,並通知媒體數據發送進程停止發送媒體數據並清除該連接;d.響應RTCP信息模塊主控進程每收到一個RTCP包做一次流量控制工作。為適應網絡發展的需要,我們按TCP友好流量控制(TCP-Friendly Rate Control)方式進行設計。所不同的是,在TCP的反饋包中,要麼是丟包信息,要麼是收到包的確認信息;而在RTCP反饋包中,只有丟包率的多少信息,且反饋不及時。因此基於RTCP反饋信息的流量控制方法如下當相鄰幾個RTCP反饋包所匯報的丟包率基本恆定或有下降趨勢時,緩慢提升伺服器對該會話的發送速率(如果發送速率已經達到一個上限值,則不再增加發送速率);當最近得到的RTCP反饋包所報告的丟包率比以前有所上升時,快速下降發送速率;e.響應媒體數據發送進程的反饋信息模塊媒體數據發送進程向主控進程匯報媒體數據發送進程的運行狀態,主控進程做相應的處理;f.響應主控伺服器上其他進程的信息。
第二,RTSP通信進程(RTSP Communication Process)。RTSP協議是傳輸交互指令(如建立和釋放流媒體連接、暫停播放、拖動播放等控制信息)的協議,為了保證指令信息傳輸的可靠性,工業標準上RTSP信息利用TCP連接傳輸。在流媒體伺服器的實現裡,一般遵循TCP連接的處理習慣,但是每個TCP連接啟動一個線程易造成線程資源耗盡(一個進程所能啟動的線程數量是很有限的),所以在硬體資源尚有很大富裕的情況下,由於線程數受限而限制了伺服器所支持的並發數。在RTSP通信進程模塊中,先建立RTSP監聽埠,響應用戶的RTSP連接,接收多個用戶的RTSP數據包,並把數據包按照規定格式加入主控進程的接收消息隊列中,再從主進程的發送消息隊列中讀取RTSP數據包,並發往相應用戶的RTSP套接字。這樣,RTSP通信進程模塊就能充分利用了RTSP連接的特點,巧妙地採用套接字輪詢的方式,採用單線程批發技術(STD),避免了線程數受限的問題。
第三,媒體數據發送進程(Media Data Sender Process)。媒體數據發送進程負責按照流媒體標準協議RTP協議發送媒體數據。在媒體數據發送進程模塊中,共同維護三個主要數據結構a.該媒體數據發送進程負責的會話的一些必要狀態信息表,記作SessionInformation。每個Session的狀態信息包括該Session的當前狀態(state)、客戶的IP位址和Port號、媒體文件ID等。
b.每個會話的一級緩存(該緩存用於克服硬碟和網絡傳輸之間的速率不匹配),記作HardDiskBuffer。
c.每個會話的二級緩存(用於充當網絡發送的緩衝區),記作NetworkBuffer。
媒體數據發送進程的總體流程如圖2所示。媒體數據發送進程設一個定時器,每隔一定時間(如100ms)輪詢一遍該媒體數據發送進程所負責的活躍會話(即已經建立連接的會話)的狀態,若當前會話的狀態為Play,則對該會話的各個緩衝器內的數據進行合理地調度,並按照緩衝區控制和速率平滑技術進行數據發送(見圖2的步驟9)。同樣的,對各個活躍的會話進行輪詢處理的辦法可以避免啟動大量的線程,在大並發的應用環境下可以節約系統開銷。媒體數據發送進程的核心部分是緩衝區控制、速率平滑技術和RTP打包發送,即圖2中的步驟9。這部分可參見圖3視頻質量控制、發送速率控制和RTP打包發送流程。因為視頻質量控制時同樣需要對視頻的數據流進行合理的調度,所以我們可以把發送速率控制看作視頻質量控制的一種特殊情況。從而可以把圖3作為發送速率控制和視頻質量控制的統一實現模式。
第四,發送速率控制算法由幀調度模塊實現,而質量控制器的輸出始終為1(即為無損傳輸)。在這種情況下,碼率整形器、接收方緩衝區觀測器不需做任何工作,擁塞控制模塊也被屏蔽掉。圖2中的步驟9就是根據這樣的思路實現的。其具體流程如圖3和圖4所示。根據圖3的流程,如果當前採樣周期內伺服器所發送的數據還不到擁塞控制器(或發送速率控制器,也叫速率平滑算法)所決定的當前採樣周期內應該發送的數據量,則就進行下一幀數據的處理。這一步的判斷相當於實現了圖3中的發送緩衝區監視器和數據禎調度的功能。進一步的,對下一幀數據的處理包括三個步驟1.從網絡緩衝區中裡取下一幀(第k幀)數據;2.根據質量控制器(質量控制器的流程如圖4所示)的輸出來調製第k幀數據。對數據幀的調製可以用很多方式實現如果視頻數據是分層編碼的,那麼可以通過從該幀數據中選擇合適的層數來達到調製該幀數據的視頻質量和發送比特率要求;如果視頻數據是可擴展編碼的,那麼可以直接利用可擴展編碼的特性來調製數據;如果視頻數據是按MPEG-2或更早的編碼標準編碼的,那麼可以採用動態比特率整形(Dynamical RateShaping)的方法調製該幀數據的視頻質量和發送比特率要求。
3.把調製後的第k幀數據打成RTP包發送。圖4給出了質量控制器的具體實現流程。在這個實施例子裡,我們用比例積分調節器來進行視頻質量控制。每到一個採樣時刻,質量控制器讀入接收緩衝區觀測器的輸出,並進行比例積分運算,最後輸出視頻質量。我們也可以用其他的調節器來進行視頻質量控制,比如模糊調節器、比例調節器等等。
在圖3中的質量控制器裡,有一比例積分器,對應圖4中的402和404。積分器的輸出記做Q。該質量控制器有三個參數1.接收緩衝區數據量的參考值,記為Ref,用於設定接收緩衝區數據量的調節目標。
2.比例積分調節器的比例項係數Kp,用於設定比例積分調節器的比例項的調節強度。
3.比例積分調節器的積分項係數Ki,用於設定比例積分調節器的積分項的調節強度。
如圖4所示,採用比例積分調節器的質量控制器在一個採樣周期裡的工作步驟是1.讀入接收緩衝區觀測器的觀測值。這裡接收緩衝區觀測器的觀測值用Br表示。
2.把接收緩衝區觀測器的觀測值Br與接收緩衝區數據量的參考值做Ref比較,按照式(6.1)調整積分器的輸出Integ=Ki*(Br-Ref)+Integ (6.1)對應圖4中的步驟402。按照式(6.2)計算視頻質量QQ=Integ+KP*(Br-Ref) (6.2)對應圖4中的步驟404。
上述內容公開了本發明的一種最佳模式。應該理解並且認識到,有許多等效於在此公開的示例性實施方式,並且在不脫離本發明的範圍和精神的情況下可以進行修改和變形。
權利要求
1.一種實現視頻質量與發送速率控制的高並發流媒體伺服器系統,其特徵在於該系統由主控進程、RTSP通信進程和媒體數據發送進程組成,其中,主控進程管理和協調其他進程的運行,RTSP通信進程負責與客戶端的RTSP交互信息的傳輸,媒體數據發送進程負責發送媒體數據;各個進程之間的通信結構採用消息集線器結構形式;各進程之間的通信方式採用消息隊列方式和套接字方式主控進程和RTSP通信進程都運行在一個計算機上,相互之間通信採用消息隊列的方式,而媒體數據發送進程與主控進程通信採用套接字方式。
2.根據權利要求1所述的流媒體伺服器系統,其特徵在於由媒體數據發送進程及其支撐硬體系統組成的各播放板統一由一塊由RTSP通信進程和主控進程及其硬體系統組成的主控板管理,所有用戶請求都定位到主控板,主控板在各個硬體設備和播放板之間自主進行負載均衡。
3.根據權利要求1所述的流媒體伺服器系統,其特徵在於RTSP通信進程不負責媒體數據發送,該進程採用單線程派發技術來提高並發性,一套RTSP進程和主控進程帶一個或多個媒體數據發送進程。
4.根據權利要求1所述的流媒體伺服器系統,其特徵在於媒體數據發送進程負責視頻質量控制、發送速率控制和RTP打包發送;該進程從網絡緩衝區中取下一幀,即第k幀數據,根據視頻質量控制模塊和發送速率控制模塊的輸出來調製第k幀數據,把調製後的第k幀數據打成RTP包發送;視頻質量控制模塊運用比例積分的方法,根據比例積分係數Kp、Ki來輸出視頻質量Q。
5.根據權利要求1所述的流媒體伺服器系統,其特徵在於主控進程由以下模塊組成a.初始化模塊;創建主控進程的主數據結構、加載伺服器上的媒體文件信息表以及他的一些初始化工作;b.RTSP(實時流協議)和RTCP(實時傳輸控制協議)包解析模塊,負責RTSP包和RTCP包的解析;c.響應RTSP信息模塊建立連接如果有客戶端請求建立連接,首先對用戶信息進行認證,然後調用調度信息表進行接納控制,判斷伺服器是否有能力再接受一個新的客戶端服務請求;若拒絕該連接請求,則直接通知客戶端,如果接受該連接請求,則分配給客戶端發送數據的伺服器埠號等相關信息,並更新伺服器上的相應管理信息;播放根據文件ID以及RTSP的播放時間信息,發指令給相應的媒體數據發送進程進行播放,更新伺服器上的相應管理信息;暫停或重新定位更新伺服器上的相應管理信息,並通知媒體數據發送進程停止發送數據或通知媒體數據發送進程重新定位發送數據;關閉連接更新伺服器上的相應管理信息,並通知媒體數據發送進程停止發送媒體數據並清除該連接;d.響應RTCP信息模塊主控進程每收到一個RTCP包做一次流量控制工作,流量控制方法如下當相鄰幾個RTCP反饋包所匯報的丟包率基本恆定或有下降趨勢時,緩慢提升伺服器對該會話的發送速率;當最近得到的RTCP反饋包所報告的丟包率比以前有所上升時,快速下降發送速率;e.響應媒體數據發送進程的反饋信息模塊媒體數據發送進程向主控進程匯報媒體數據發送進程的運行狀態,主控進程做相應的處理;f.響應主控伺服器上其他進程的信息。
6.根據權利要求1所述的流媒體伺服器系統,其特徵在於RTSP通信進程模塊中,先建立RTSP監聽埠,響應用戶的RTSP連接,接收多個用戶的RTSP數據包,並把數據包按照規定格式加入主控進程的接收消息隊列中,再從主進程的發送消息隊列中讀取RTSP數據包,並發往相應用戶的RTSP套接字。
7.根據權利要求1所述的流媒體伺服器系統,其特徵在於媒體數據發送進程模塊中,共同維護三個主要數據結構a.該媒體數據發送進程負責的會話的一些必要狀態信息表,包括該信息的當前狀態等;b.每個會話的一級緩存;c.每個會話的二級緩存。
全文摘要
本發明屬於網絡多媒體技術領域,具體公開了一種支持高並發數並實現視頻質量與發送速率控制的流媒體伺服器系統。該系統採用新穎獨特的架構以提高其並發用戶數,並將發送速率與視頻質量控制有機融合起來,給出統一實現模式,有效地提升了流媒體的服務質量。本系統由主控進程、RTSP通信進程和媒體數據發送進程組成,各個進程之間採用消息集線器的通信結構,進程間通信都通過主控進程;進程間通信方式為消息隊列和套接字,除媒體數據發送進程外,各進程都運行在一個計算機上。媒體數據發送進程的核心是視頻質量控制、發送速率控制和RTP打包發送。
文檔編號G06F9/46GK1731732SQ20051002707
公開日2006年2月8日 申請日期2005年6月23日 優先權日2005年6月23日
發明者葉德建, 張佐, 吳秋峰 申請人:復旦大學