国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于JMF架構(gòu)的RTP/RTCP傳輸模型

2010-10-22 04:23胡開明陳建華
關鍵詞:數(shù)據(jù)流參與者數(shù)據(jù)包

胡開明,陳建華

(廣東松山職業(yè)技術學院計算機系,廣東韶關512126)

1 引 言

對于一個基本的流媒體系統(tǒng)而言,它的基本目的是把流媒體傳輸?shù)娇蛻舳?是一個典型的 S/C(Server/Client)架構(gòu)[1].在過去幾乎所有的S/C架構(gòu)中,出現(xiàn)了一個不可避免的問題,就是在客戶端數(shù)量過多的時候,出現(xiàn)了服務器端由于負載過重而導致系統(tǒng)性能急劇下降甚至崩潰.另一方面當前的流式媒體系統(tǒng)還存在以下的問題:(1)格式的不統(tǒng)一性.各大流式媒體傳輸系統(tǒng)的流式媒體格式之間相互差別很大,不能進行播放.(2)可擴展性差.不能使用擴展用戶定義的接口,造成了流媒體系統(tǒng)開發(fā)上的分立局面.(3)平臺的相關性.(4)目前的智能流技術只能靜態(tài)的反映在客戶端進行請求的時候網(wǎng)絡的擁塞狀況.在數(shù)據(jù)流開始傳送的時候不能對網(wǎng)絡狀況進行反饋,也不能采取任何措施來適應這種網(wǎng)絡狀況的變化.使得流媒體傳輸過程中其QoS得不到保證[2].

為了解決這個問題,利用JAVA的JMF(Java Media Framework).利用其提供的多媒體功能加上對其原有接口的擴展,實現(xiàn)了一種基于JMF的RTP/RTCP傳輸模型的整體設計.在對RTP/RTCP工作模型的詳細分析中,實現(xiàn)了一個動態(tài)的網(wǎng)絡反饋機制,并利用其提供的動態(tài)的反饋信息實現(xiàn)了對發(fā)送端和接收端Buffer的控制,保證流媒體傳輸?shù)腝oS,以提高流媒體傳輸?shù)男?

2 JM F架構(gòu)及流媒體的基本功能模塊

2.1 JMF架構(gòu)

JMF(Java Media Framework)是Sun公司提出的Java媒體架構(gòu)[3].它是對應Java2平臺標準版(J2SE)的一種可選用的應用編程接口 (API)軟件.JMF的源代碼將通過SCSL(Sun社團源代碼許可模式)發(fā)布.這一強大的媒體工具包可以在任何版本 (1.1.x及以上版本)的Java平臺上運行[4].

JMF2.1.1技術提供了先進的媒體處理能力,從而擴展了Java平臺的功能[5].JMF所提供多媒體功能如下:

(1)可以在Java Applet和應用程序中播放各種媒體文件.它提供了對對各種主要媒體形式和編碼的支持,如 M-JPEG、H.263、MP3、Macromedias Flash、IBM 的 HotMedia和 Beatniks的 Rich Media Format(RMF)等.JMF2.1.1還支持多種媒體類型,如Quicktime MOV、Microsoft AVI和MPEG-1[6].

(2)可以播放從互聯(lián)網(wǎng)上下載的流媒體.

(3)可以利用麥克風和攝像機一類的設備截取音頻和視頻,并保存成多媒體文件.

(4)處理多媒體文件,轉(zhuǎn)換文件格式.

(5)向互聯(lián)網(wǎng)上傳音頻和視頻數(shù)據(jù)流.

(6)在互聯(lián)網(wǎng)上廣播音頻和視頻數(shù)據(jù).

JMF架構(gòu)中還包括了一個開放和統(tǒng)一的媒體架構(gòu),可使開發(fā)人員靈活采用各種媒體回放、捕獲組件,或采用他們自己的定制的內(nèi)插組件.

2.2 流媒體的基本功能模塊

在對流媒體技術進行分析和研究以前,首先我們要明確整個流媒體的系統(tǒng)架構(gòu)以及在流媒體架構(gòu)中采用的各種技術,然后再對其進行進一步的探討、改進和研究.一個典型的流媒體系統(tǒng)的功能模塊如圖1所示:

流媒體系統(tǒng)包括以下5個功能模塊:

(1)信息采集和播放設備:信息采集設備負責將音視頻信息源輸入計算機.

(2)編碼和解碼工具:它由普通計算機和流媒體編碼軟件組成.視頻采集設備,供編碼軟件處理;編碼軟件負責將流媒體采集卡傳送過來的數(shù)字音視頻信號壓縮成流媒體格式.而解碼工作與之相反,負責將媒體數(shù)字信號轉(zhuǎn)化成終端可識別的信息.

(3)數(shù)據(jù)壓縮模塊:多媒體數(shù)據(jù)量巨大,為了適應其傳輸?shù)木W(wǎng)絡環(huán)境,必須多于原來的多媒體數(shù)據(jù)進行高效的壓縮,然后將壓縮后的數(shù)據(jù)在網(wǎng)絡上傳遞.其相應的解壓模塊將負責將數(shù)據(jù)還原成多媒體播放程序可以識別的信息.

(4)相關協(xié)議:流媒體數(shù)據(jù)由于自身的特點,在網(wǎng)絡上傳輸時將采用和過去諸如文字,靜態(tài)圖像等不同的網(wǎng)絡協(xié)議來進行傳輸.

(5)傳輸網(wǎng)絡:一般來說,流媒體傳輸可以在現(xiàn)有任何網(wǎng)絡上進行傳輸.更高的帶寬將有利于流媒體傳輸效率的提高,也能夠保證其質(zhì)量.

3 支持流媒體傳輸?shù)木W(wǎng)絡協(xié)議

流媒體采用流式傳輸方式在網(wǎng)絡服務器與客戶端之間進行傳輸.前面提到,流媒體可以進行用順序流和實時流的方式進行傳輸.流式傳輸?shù)膶崿F(xiàn)需要合適的傳輸協(xié)議.IETF(Internet Engineering Task Force,因特網(wǎng)工程任務組)制訂的很多協(xié)議可用于實現(xiàn)流媒體技術.目前,針對流媒體傳輸主要的工作在OSI七層中的網(wǎng)際層和傳輸層展開,當然也涉及到七層協(xié)議中的2.5層協(xié)議網(wǎng)絡 (ATM、FR網(wǎng)絡)[7].適合流媒體相關協(xié)議包括:

(1)RT P/RTCP協(xié)議:實時傳輸和實時傳輸控制協(xié)議;

(2)RSVP協(xié)議:資源預留協(xié)議;

(3)RTSP協(xié)議:實時流協(xié)議.

4 RTP/RTCP模型及動態(tài)網(wǎng)絡反饋機制

4.1 RTP/RTCP基本模型

RTP協(xié)議是一種應用型的傳輸層協(xié)議,它并不提供任何傳輸可靠性的保證和流量的擁塞控制機制.RTP協(xié)議位于UDP協(xié)議之上,在功能上獨立于下面的傳輸層 (UDP)和網(wǎng)絡層,但不能單獨作為一個層次存在,通常是利用低層的UDP協(xié)議對實時視音頻數(shù)據(jù)進行組播 (Multicast)或單播 (Unicast),從而實現(xiàn)多點或單點視音頻數(shù)據(jù)的傳輸.

RTP協(xié)議被設計成能夠為某種特定的應用提供服務的一種協(xié)議.實際上,RTP協(xié)議的實現(xiàn)已經(jīng)被融合到應用程序中來.RTP沒有連接的概念,它既可以建立在面向連接的底層協(xié)議上,也可以建立在面向無連接的底層協(xié)議上,因此RTP協(xié)議對傳輸層是獨立的.RTP協(xié)議一般由兩個部分組成:數(shù)據(jù)報文部分(RTP報文)和控制報文部分 (RTCP).與傳統(tǒng)的注重的高可靠的數(shù)據(jù)傳輸?shù)倪\輸層協(xié)議相比,RTP更加側(cè)重的數(shù)據(jù)傳輸?shù)膶崟r性.此協(xié)議提供的服務包括時間載量標識、數(shù)據(jù)序列、時戳、傳輸控制等.RTP與輔助控制協(xié)議RTCP一起得到數(shù)據(jù)傳輸?shù)囊恍┫嚓P的控制信息.其基本模型如下圖所示:

圖1 型的流媒體系統(tǒng)的功能

圖2 RTP/RTCP基本工作模型

4.2 基于RTCP的動態(tài)網(wǎng)絡反饋機制

RealSystem的SureStream技術是實現(xiàn)流式媒體傳輸關鍵技術之一,可以根據(jù)不同連接速率創(chuàng)建多個文件和采用一種復雜客戶/服務器機制探測帶寬變化.但是,對于網(wǎng)絡環(huán)境而言,網(wǎng)絡的狀況是不斷變化的,SureStream技術顯然沒有能夠?qū)W(wǎng)絡狀況的變化進行任何的響應,即使網(wǎng)絡狀況發(fā)生變化,它對客戶端發(fā)送的文件仍是在針對客戶端請求時連接速率創(chuàng)建的.對于一個變化不大的網(wǎng)絡而言,這種方法當然是行之有效的,但是對于一個不斷變化的網(wǎng)絡而言,建立動態(tài)的帶寬偵測和反饋機制將是解決問題的有效途徑.

利用RTCP的報告來偵測網(wǎng)絡變化的趨勢,根據(jù)網(wǎng)絡變化的趨勢,可以對系統(tǒng)其他部分進行調(diào)整.

首先,通過RR控制包獲取反饋信息.即讀取RTCP的RR(接收者報告)包并做統(tǒng)計分析,必須利用RTCP提供的3個性能指標來確定網(wǎng)絡當前狀況:

(1)傳輸時延抖動估計Interarrival jitter:記作J.傳輸時延抖動估計是指兩個相鄰數(shù)據(jù)包到達事件的平均偏差 (Mean Deviation)估算,若到達時間比較規(guī)律,則該值為零,否則該數(shù)值比較大.網(wǎng)絡狀況的變化并非毫無規(guī)律,在大體上,網(wǎng)絡狀況的變化只是一個狀態(tài)到另外一個狀態(tài)的轉(zhuǎn)換過程.而Interarrival jitter必然體現(xiàn)這個狀態(tài)的轉(zhuǎn)換過程,即由0到非0再到0的所代表的穩(wěn)定到變化再到穩(wěn)定的過程.

(2)連續(xù)數(shù)據(jù)包傳送的時延差值.記作D.RTCP定義的公式為:

其中Ri、Si分別代表第i個數(shù)據(jù)包接收和發(fā)送的RT P時間戳,因此Ri-Si就代表第i個數(shù)據(jù)包的相對發(fā)送時間,D(i,i-1)則代表相鄰兩個數(shù)據(jù)包的時延差.當D(i,i-1)不斷增大時,我們可以得到結(jié)論,即網(wǎng)絡可用帶寬正在變小,反之變大.

根據(jù)這個變化趨勢,可以在JMF平臺上實現(xiàn)一個基于動態(tài)偵測帶寬變化的智能流機制.

5 構(gòu)建基于JMF架構(gòu)的流媒體傳輸

通過對RTP/RTCP的分析,已經(jīng)了解了流媒體傳輸?shù)恼w協(xié)議模型,如圖3所示.在這個模型的基礎上,就可以建立自己的流媒體傳輸系統(tǒng).

圖3 流式媒體傳輸系統(tǒng)的整體協(xié)議模型

5.1 Session Manager接口

SessionManager接口定義了應用程序之間建立、參與一個會話和釋放資源并退出整個會話的一整套方法.同樣可以利用其來建立在 RTP傳輸中的 RT PSession.通過建立兩個端口的Session對話,為RTP,RTCP建立了兩個Port的連接.分別用來進行RTP的數(shù)據(jù)傳送和RTCP的反饋和控制信息的傳送.下面將利用JMF中的SessionManager來實現(xiàn)RTP Session:

(1)Session Statistics

通過SessionManager中的Session Statistics,可以保存每個會話的信息,即每個RTP/RTCP包的發(fā)送和接收信息.SessionManager保存了兩個可以用來記錄發(fā)送和接收信息包的屬性:

GlobalReceptionStats:保存了會話中全局的接收信息.

GlobalTransmissionStats:保存了所有發(fā)送者的累計發(fā)送信息.

它們將被用來和RTCP包中的Sender'spacketcount等字段對應.

(2)Session Participants(會話參與者)

JMF的Session Manager能夠記錄一個會話中所有參與者的信息.每個參與者是通過一個類的實例(Instance)來確認的.該實例使用了會話中Participant接口.當SessionManager收到一個以前從未收到包含了SDES(Source Description)和CNAME的RTP數(shù)據(jù)包時,將創(chuàng)建一個Participant接口.參與者這是就可以加入一個會話.

在SessionManager中還有一個LocalParticipant屬性,可以用來表示本地參與會話的Client或Server.本地參與者可以發(fā)送RTCP控制信息.

每個會話參與者可以由參于多個數(shù)據(jù)流,每個數(shù)據(jù)流將通過RTP中的SSRC來區(qū)分數(shù)據(jù)流的源.

(3)Session Streams

通過SessionManager,還為每個RTP數(shù)據(jù)流保持一個RTPStream對象.ManagerSession將RTP數(shù)據(jù)流分兩類:ReceiveStream表示從遠端參與者接收到的數(shù)據(jù)流.SendStream將表示通過Prosessor或者輸入DataSource向網(wǎng)絡發(fā)送的數(shù)據(jù)流.當SessionManager偵測到一個新的RTP數(shù)據(jù)包的時候,將自動建立一個 ReceiveStream.而如果要向外發(fā)送 RTP數(shù)據(jù)流,將調(diào)用SessionManager中的 createSend-Stream方法.

5.2 RTP事件

通過繼承JMF中MediaEvent的類,可以創(chuàng)建響應的RT P事件.為了得到RTP事件,必須相應的RTPListener和SessionManager結(jié)合.

(1)SessionListener:通過它得到一個會話狀態(tài)的改變.包括:

NewParticipantEvent:表示一個新的參與者加入會話.

LocalCollisionEvent:表示參與者請求的同步資源正在使用.

(2)SendStreamListener:通過它得到一個正在傳送的RTP數(shù)據(jù)流的狀態(tài)的改變.

NewSendStreamEvent:表示本地參與者已經(jīng)創(chuàng)建一個新的發(fā)送數(shù)據(jù)流.

ActiveSendStreamEvent:表示從DataSource創(chuàng)建的數(shù)據(jù)流已經(jīng)開始發(fā)送.

InactiveSendStreamEvent:表示從本地DataSource創(chuàng)建的數(shù)據(jù)流已經(jīng)停止.

LocalPayloadChangeEvent:表示數(shù)據(jù)流格式已經(jīng)開始改變.

StreamClosedEvent:表示數(shù)據(jù)流已經(jīng)停止.Indicatesthatthestreamhasbeenclosed.

(3)ReceiveStreamListener:通過它得到一個正在接收的RTP數(shù)據(jù)流的狀態(tài)的改變.

New ReceiveStreamEvent:表示SessionManager已經(jīng)創(chuàng)建了一個從新偵測到的地址來的接收數(shù)據(jù)流.

InactiveReceiveStreamEvent:表示數(shù)據(jù)的傳送已經(jīng)停止.

TimeoutEvent:表示數(shù)據(jù)傳送超時.

RemotePayloadChangeEvent:表示接收到的數(shù)據(jù)流格式已經(jīng)改變.

ApplicationEvent:表示收到了一個RTCPApp數(shù)據(jù)包.

(4)RemoteListener:通過它得到遠端會話參與者的時間或RTP控制信息.

ReceiverReportEvent:表示接受到一個RTCP的RR包.

SenderReportEvent:表示收到RTCP的SR包.

RemoteCollisionEvent:表示兩個遠端的參與者使用了相同的SSRC,出錯.

5.3 RTP會話控制及基于反饋的智能流機制的實現(xiàn)

JMF架構(gòu)中的SessionManager同樣提供了對會話的控制功能.SessionManager中的控制功能是繼承了JMF中的Control.這樣,通過GetControls方法,就可以的到例如BufferControl的接口.

無論對于Stream Server還是Client而言,對于一個發(fā)起的流媒體傳輸會話,都會在系統(tǒng)資源中占用一定的Buffer資源.一般來說,一個Session的Buffer是固定不便的.JMF的會話控制提供了對Buffer的控制能力.同時,JMF對RTP/RTCP協(xié)議的支持使得能夠獲得RTCP包中包含的信息.在上面對RTCP協(xié)議進行分析的時候,已經(jīng)得到了一個基于RTCP報告、可獲取對網(wǎng)絡狀況變化趨勢的反饋機制,使得能夠根據(jù)網(wǎng)絡狀況,改變相應Session的Buffer大小,使其適應當前網(wǎng)絡的狀況.實現(xiàn)智能流,其模型如圖4所示.

6 JM F架構(gòu)上RTP/RTCP模型的實現(xiàn)

通過對JMF架構(gòu)的系統(tǒng)分析和對SessionManager等接口的擴展,可以用JMF架構(gòu)實現(xiàn)基于RTP數(shù)據(jù)流的傳輸.可以利用SessionManager對一個會話的創(chuàng)建和控制來進行網(wǎng)絡流媒體的傳輸.數(shù)據(jù)將從DataSource獲取.例如,為了傳送實時捕捉的數(shù)據(jù).可以按如下步驟進行:

(1)為該會話創(chuàng)建并初始化一個SessionManager.

(2)構(gòu)建一個處理器 (Processor),它將使用相應的DataSource,這個DataSource將是由捕捉設備輸入的.

(3)將輸出格式定義為RTP格式,并加入相應的RTP解碼.

(4)從Processor得到輸出DataSource.

(5)調(diào)用SessionManager的CreateSendStream方法發(fā)送輸出DataSource中的數(shù)據(jù).

(6)不斷獲取RTCP報告信息,對 Buffer大小控制,以保證傳輸效率.

可以通過SendStream中的 Start和Stop方法來對數(shù)據(jù)的發(fā)送進行控制.當?shù)谝淮伍_始發(fā)送數(shù)據(jù)時,SessionManager將充當一個接受者的角色 (發(fā)送RTCP的 RR數(shù)據(jù)包).一旦創(chuàng)建了 SendStream.將發(fā)送RTCP的SR數(shù)據(jù)包,并在數(shù)據(jù)流傳送期間以致充當一個發(fā)送者的角色.當所有數(shù)據(jù)包發(fā)送完畢,可以關閉該SessionManager.

在接收方要做的工作是同樣的,用SessionManager來創(chuàng)建一個RTP會話以接收數(shù)據(jù)包并交換控制信息.并創(chuàng)建接收 Data-Source,同時創(chuàng)建一個Player對接受中的 Data-Source.

圖4 JMF架構(gòu)上的基于RTCP報告的智能流模型

圖5 基于JMC的RTP/RTCP傳輸模型的設計

7 結(jié)束語

通過在分析 RTP/RTCP協(xié)議時得出的反饋機制的方向,實現(xiàn)一種基于JMF的RTP/RTCP傳輸模型的整體設計.在對RTP/RTCP工作模型的詳細分析中,實現(xiàn)了一個動態(tài)的網(wǎng)絡反饋機制,并利用其提供的動態(tài)的反饋信息實現(xiàn)了對發(fā)送端和接收端Buffer的控制,保證流媒體傳輸?shù)腝oS,以提高流媒體傳輸?shù)男?

[1] 董曉捷.流媒體應用技術淺談[J].河北北方學院學報:自然科學版,2007,(04):50-53

[2] 王銳,郭喜鳳.基于遺傳算法的DSR路由協(xié)議的優(yōu)化[J].河北北方學院學報:自然科學版,2008,(01):59-62

[3] 胡澤,趙新梅.流媒體技術與應用[M].北京:中國廣播電視出版社,2006:145-147

[4] 莊捷.流媒體原理與應用[M].北京:中國廣播電視出版社,2007:98-100

[5] 肖磊,陳卓.流媒體技術與應用完全手冊[M].重慶:重慶大學出版社,2003:201-304

[6] 梁振軍.計算機網(wǎng)絡通信與協(xié)議[M].北京:石油工業(yè)出版社,1990:135-136

[7] 彭波,孫一林.Java多媒體技術[M].北京:清華大學出版社,2004:187-189

猜你喜歡
數(shù)據(jù)流參與者數(shù)據(jù)包
休閑跑步參與者心理和行為相關性的研究進展
臺胞陳浩翔:大陸繁榮發(fā)展的見證者和參與者
基于Jpcap的網(wǎng)絡數(shù)據(jù)包的監(jiān)聽與分析
汽車維修數(shù)據(jù)流基礎(上)
汽車維修數(shù)據(jù)流基礎(下)
SmartSniff
淺析打破剛性兌付對債市參與者的影響
海外僑領愿做“金絲帶”“參與者”和“連心橋”
基于數(shù)據(jù)流聚類的多目標跟蹤算法
北醫(yī)三院 數(shù)據(jù)流疏通就診量
通渭县| 高雄县| 卢氏县| 松潘县| 琼海市| 漯河市| 玉山县| 青龙| 梁山县| 农安县| 馆陶县| 西平县| 司法| 江北区| 屏边| 甘南县| 阜宁县| 博爱县| 华容县| 夏河县| 高邮市| 奉贤区| 左云县| 连南| 静乐县| 土默特右旗| 社旗县| 凤台县| 大化| 上思县| 广饶县| 承德市| 潞西市| 浑源县| 衡山县| 交口县| 石首市| 巴里| 华安县| 双峰县| 西充县|