999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JMF的跨平臺視頻點播系統的設計與實現

2007-01-01 00:00:00周貴芳方貴明
計算機應用研究 2007年4期

摘要:利用Java媒體框架(JMF)開發的視頻點播系統具有開發簡單#65380;跨平臺#65380;提供QoS保證和交互性好等優點,具有廣泛的應用前景#65377;介紹了JMF應用編程接口的特點和結構,闡述了基于JMF開發的跨平臺的視頻點播系統的整體結構設計,并詳細介紹了基于RTP的實時媒體傳輸#65380;基于RTCP的擁塞控制#65380;完整VCR操作和穿越NAT等關鍵技術的具體實現#65377;

關鍵詞:Java媒體框架;視頻點播;實時傳輸協議

中圖分類號:TP393文獻標志碼:A

文章編號:1001-3695(2007)04-0235-04

0引言

隨著網絡帶寬的拓寬和計算機技術的發展,以視頻點播為代表的實時流媒體業務得到了飛速的發展#65377;視頻點播業務以豐富的內容#65380;自主的點播形式等特點受到了廣大網絡用戶的歡迎#65377;但是,現今市場上的視頻點播系統還有許多缺點:①不支持跨平臺應用部署#65377;通常的系統服務器端為Linux,客戶端為Windows,如需要改變其部署操作系統,則需要重新開發#65377;②直接采用UDP或TCP進行流媒體數據的傳輸,沒有一定的QoS保證#65377;③VCR操作簡單,不支持穿越NAT等#65377;

Java語言具有跨平臺可移植性,在網絡上應用廣泛而且靈活#65377;Sun公司推出的Java語言的媒體軟件開發包JMF(Java Media Framework,Java媒體框架[1])使得流媒體應用開發變得簡單#65377;基于JMF的優點,筆者設計開發了一個跨平臺的視頻點播系統,這個系統具有開發簡單#65380;成本低;跨平臺#65380;可移植性好;采用實時傳輸協議[2](RTP/RTCP)進行流媒體數據傳輸,服務質量(QoS)有保證;提供完整的VCR控制操作,交互性好;支持穿越NAT等優點#65377;

1JMF介紹

JMF是一個把音頻#65380;視頻及其他基于時間的媒體結合到Java程序和Applet中的應用程序接口#65377;它使得Java程序可以支持以下功能:捕捉和存儲媒體數據,控制回放時執行的處理類型,進行媒體數據流的個性化處理#65377;而且,最新版本的JMF還支持用戶利用插件應用程序接口(Plugin API)自定義和擴展JMF的功能#65377;JMF不僅支持本地媒體文件#65380;媒體設備的采集#65380;處理#65380;存儲#65380;播放等功能,還支持基于網絡的壓縮媒體流的同步#65380;控制#65380;處理和播放#65377;所謂媒體流,指的是可以邊下載邊播放的媒體傳輸方式#65377;

JMF包括JMF API和JMF RTP API兩個部分#65377;前者的主要功能是捕捉#65380;處理#65380;存儲和播放媒體;后者主要是在網絡上傳輸和接收媒體流#65377;

1.1JMF API的特點與結構

JMF API支持媒體捕捉并能夠滿足應用程序開發人員對媒體處理和播放進行控制的需要#65377;JMF API還提供了一個可以直接訪問處理底層媒體數據的插件架構,使得JMF可以很容易地被擴展#65377;它的特點有:易于編程;支持捕捉媒體數據;使Java可以開發媒體流傳輸和媒體會議等應用;使得高級開發人員和技術供應商能夠在已存在的API基礎上實現自定義解決方案,并能夠方便地在已存在的框架中集成新的特征;提供對原始的媒體數據的存取等#65377;通過利用Java平臺的優勢,JMF保持了“Write once,run anywhere”的承諾,為訪問底層的媒體框架提供了一個通用的跨平臺Java API#65377;

JMF為基于時間的媒體數據的獲取#65380;處理和傳送提供了一個統一的框架和消息協議,它可以支持大部分標準的媒體類型#65377;JMF API的結構主要由以下幾部分組成:捕捉設備#65380;數據源#65380;播放器和處理器等#65377;數據源類似于磁帶,封裝了捕捉設備或者媒體文件獲取的媒體流;播放器類似于錄像機,將數據源中的數據播放出來,輸出到顯示器#65380;聲卡等設備;而處理器類似于轉錄機,將數據源中的數據經過某些處理后得到另一個數據源#65377;以上的這些部分都是以接口的形式出現,JMF通過使用被稱為Manager(管理器)的中間對象來創建適應不同應用要求的接口#65377;

數據源和播放器是JMF中用來管理捕捉#65380;表現和處理基于時間的媒體的高層API#65377;JMF還提供用于集成用戶化的處理組件和擴展應用的低層API,用于擴展編解碼器#65380;復用/解復用器等#65377;

1.2JMF RTP API的特點與結構

JMF RTP API提供了對實時傳輸協議RTP的支持#65377;RTP是一種應用型的傳輸層協議,用于Internet上針對多媒體數據流的傳輸#65377;RTP被定義為在一對一或一對多的傳輸情況下工作,其目的是提供時間信息并實現流同步#65377;RTP協議位于UDP之上,本身并不能為按順序傳送數據包提供可靠的傳送機制,也不提供流量控制或擁塞控制,這些功能由RTCP來完成#65377;RTP和RTCP配合使用,它們能以有效的反饋和最小的開銷使傳輸效率最佳化,因而特別適合傳送網上的實時數據#65377;JMF對RTP的支持使用戶開發基于流媒體實時傳輸的應用,如視頻點播#65380;視頻會議#65380;在線直播等,變得更為簡單#65377;

JMF使用SessionManager(會話管理器)來建立和管理用于傳輸實時流媒體的RTP會話#65377;會話管理器跟蹤會話的參與者和被傳輸的流,從本地參與者的角度維護會話狀態#65377;將JMF框架和RTP結合就形成了如圖1所示的JMF RTP總體結構#65377;

2系統結構設計

系統可分為四個部分,即Web服務器#65380;流媒體服務器#65380;IP網絡和客戶機#65377;整個視頻點播系統的結構如圖2所示#65377;各個部分的功能如下:

(1)控制服務器#65377;它由節目信息管理模塊#65380;用戶信息管理模塊和認證計費模塊三個模塊組成,負責系統數據傳輸以外的其他控制功能,主要功能都是基于Web服務器實現#65377;節目信息管理模塊負責節目信息的配置,并將配置好的節目信息發布到Web上,供用戶點播;用戶信息管理模塊負責用戶信息的維護;認證計費模塊負責用戶的注冊#65380;登錄#65380;點播記錄,并根據點播情況和計費策略生成點播費用清單#65377;

(2)視頻服務器#65377;它由RTSP服務器和數據泵兩部分組成,負責點播連接的建立#65380;數據的傳輸及控制,主要功能都是基于Java和JMF實現#65377;RTSP服務器負責接收處理各種RTSP請求,實現點播連接的建立#65380;釋放和各種VCR控制操作;數據泵負責流媒體數據傳輸#65377;

(3)IP網絡#65377;它既可以是寬帶局域網,也可以是國際互聯網#65377;為支持流媒體的實時傳輸,IP網絡需要保證足夠的帶寬#65377;

(4)客戶機#65377;它由瀏覽器#65380;數據接收器和RTSP請求發生器三部分組成,負責流媒體數據的接收和回放#65380;用戶與服務器的交互,主要是基于Java Web技術和JMF流媒體接收#65380;播放技術實現#65377;瀏覽器負責用戶與控制服務器交互;數據接收器負責流媒體數據的接收#65380;緩沖及回放,還要實現基于RTCP的擁塞控制信息反饋;RTSP請求發生器負責與RTSP服務器交互,實現點播請求的發送#65380;VCR控制信令的發送等#65377;

點播進行過程可以描述如下:用戶通過客戶機的瀏覽器登錄系統,選擇節目并通過RTSP請求發生器發送點播請求#65377;RTSP服務器接收處理點播請求,選擇流媒體服務器,定位媒體文件#65377;數據泵從磁盤陣列上的媒體文件或者音視頻采集設備等多種媒體源獲取媒體流,經過特定編碼處理后建立RTP會話,以RTP/RTCP將媒體數據傳輸給客戶機#65377;客戶機從網絡上接收RTP數據,邊接收邊播放,同時不停地發送RTCP反饋信息#65377;在點播的過程中,用戶可以通過RTSP請求發生器來進行各種VCR控制操作#65377;

系統的實現和運行表明,采用控制信息和數據處理的分開數據傳輸和傳輸控制的分開,能夠降低系統實現的復雜度,采用模塊化的實現方法可以提高實現效率,簡化系統的調試和維護#65377;客戶機和服務器之間采用標準的協議(RTSP#65380;RTP/RTCP#65380;HTTP)進行交互,降低了兩者的耦合程度,有利于對某一方面進行改進的時候不會對另一方造成影響#65377;

3關鍵技術及實現

視頻點播系統的技術指標包括音視頻的回放質量和連續性#65380;傳輸的實時性#65380;友好靈活的交互性#65380;對各種網絡環境和網絡變化情況的自適應性等#65377;要實現這些指標,基于RTP的實時媒體流傳輸[3]#65380;基于RTCP的擁塞控制[4]#65380;完整VCR控制#65380;穿越NAT[6]等技術是關鍵的技術#65377;

3.1基于RTP的實時流媒體傳輸

基于JMF對媒體流和實時傳輸協議RTP的支持,采用JMF可以很方便地實現基于RTP/RTCP的實時媒體流傳輸#65377;傳輸的建立過程可以分為以下兩部分#65377;

(1)創建并配置處理器對象,產生數據源

處理器(Processor)對象是用來設置和控制從媒體源讀取媒體數據的#65377;媒體源可以是媒體文件也可以是音視頻采集設備,這里以媒體文件為例#65377;創建處理器對象的方法是:新建以媒體文件路徑為參數的MediaLocator對象,以此對象為參數調用Manager(管理器)對象的createProcessor方法#65377;

配置處理器對象首先要對處理器對象的通道(Track)設置參數#65377;方法是:調用處理器對象的getTrackControls方法,得到通道的TrackControl對象,然后調用TrackControl對象的setFormat方法設置處理后的媒體格式(即適合于RTP傳輸的媒體編碼格式)#65377;對于音頻,JMF提供五種編碼格式,即ULAW/RTP#65380;G723/RTP#65380;GSM/RTP#65380;DVI/RTP和MPEGAudio/RTP;對于視頻,JMF提供四種編碼格式,即JPEG/RTP#65380;MPEG/RTP#65380;H261/RTP和H263/RTP#65377;采用哪種編碼格式依賴于媒體文件存儲時的壓縮編碼格式,如以XVID#65380;MP3壓縮的MPEG4媒體文件可以采用H263/RTP#65380;MPEGAudio/RTP編碼格式進行傳輸#65377;

配置處理器對象還要設置處理器對象的數據輸出格式,方法是調用處理器對象的setContentDescriptor設置#65377;可設置的數據輸出格式有CONTENT_UNKNOWN#65380;RAW#65380;MIXED#65380;RAW_RTP;一般采用默認值RAW即可#65377;例如編碼格式為JPEG/RTP,還可以通過調用JPEG編碼格式的QualityControl對象的setQuality(float newQuality)方法設置圖像質量,一般設置為0.5#65377;處理器對象配置完成后就可以調用getDataOutput方法獲取數據源,以供下一步使用#65377;

(2)創建傳輸器,進行RTP數據流傳輸

JMF中傳輸RTP數據流有兩種方法:①使用數據接收器(DataSink)進行數據流傳輸;②使用會話管理器(SessionManager)創建輸出數據流并控制傳輸的進行#65377;

使用數據接收器進行傳輸是比較簡單的方法,只需要創建一個數據接收器對象,然后調用此對象的open()#65380;start()方法來開啟傳輸,調用stop()方法來停止傳輸#65377;但是,使用數據接收器進行傳輸只能傳輸一個數據流,而且無法監控會話狀態#65377;在本系統中,一般傳輸的媒體文件均包括音頻#65380;視頻兩個數據流,而且利用RTCP進行傳輸擁塞控制時需要監控會話狀態,所以無法使用數據接收器來進行傳輸#65377;這時候就需要使用會話管理器創建多個輸出數據流來進行傳輸#65377;

使用會話管理器傳輸音視頻RTP數據流的方法如下:

(1)創建一個會話管理器對象(實例化一個RTPSessionMgr對象);

(2)調用initSession方法初始化會話管理器;

(3)調用startSession方法開啟會話管理器;

(4)調用createSendStream方法創建輸出流對象;

(5)調用輸出流對象的start()方法開始RTP數據流的傳輸#65377;

3.2基于RTCP的擁塞控制

Internet是不能提供帶寬保證的網絡,很容易發生擁塞#65377;而且Internet接入用戶的網絡情況帶寬都不太一樣,發生擁塞的情況也不一樣#65377;如果以單一的傳輸速率進行傳輸,對于連接速率低于設定的傳輸速率的用戶,將會出現頻繁緩沖的現象;而對于連接速率高于傳輸速率的用戶來說,浪費了部分帶寬,接收的效果并沒有達到最好#65377;為了實現Internet視頻點播系統的應用級QoS保證,可以根據RTCP反饋的傳輸統計信息,動態地對RTP傳輸速率進行調整,以適應網絡帶寬的變化,提高音視頻的傳輸質量#65377;

判斷網絡擁塞有不同的策略,這里主要根據某段時間內的丟包率的大小作為標準來判斷#65377;自適應流媒體傳輸控制策略分為三個步驟:

(1) RTCP分析#65377;根據接收包RR的反饋信息得出包丟失率等參數#65377;

(2) 網絡狀況分析#65377;根據包丟失率的大小分析出網絡擁塞狀況#65377;

(3) 帶寬調整#65377;根據網絡擁塞狀況調整流媒體數據的發送速率#65377;

本系統采用AIMD(加性增#65380;乘性減)算法對傳輸速率進行動態調整#65377;具體算法如下所示:

其中,p是丟包率;R是傳輸速率;Pc是網絡擁塞臨界值;Pu是網絡輕載臨界值;MaxR是允許的最大發送速率;MinR是允許的最小發送速率;AIR是速率線性增量;i是乘性減小因子#65377;輸入參數丟包率p既可以是原始值,也可以是平滑值,使用平滑值可以減少抖動#65377;本系統使用一個低通濾波器對丟包率p進行平滑處理:p=(1-a)p+ab#65377;其中b為RR包中的丟包率;a是濾波調整參數,0

丟包率p的計算方法如下:調用輸出流對象的getSenderReport()方法得到接收端報告,調用getSenderPacketCount()方法得到接收到的包數pLost;調用輸出流對象的getSourceTransmissionStats()得到傳輸狀態,再調用getPDUTransmitted()方法得到已發送的包數pSent#65377;因此,p=(pSent-pLost)/pSent#65377;速率調整可以通過調用輸出流對象的setBitRate方法實現#65377;

3.3完整VCR控制

基于用戶對視頻流控制的程度可以將VOD系統分為兩種:①TVOD(True VOD)系統中,用戶可以完全控制視頻節目的播放,進行各種VCR控制操作,如暫停#65380;播放#65380;快進#65380;快退以及隨機定位節目播放位置;②NVOD(Near VOD)系統中,用戶只能對節目播放有部分的控制能力#65377;本文實現的是支持完整VCR控制操作的TVOD#65377;

在某些直接使用TCP#65380;UDP或HTTP傳輸媒體文件數據的TVOD中,只能通過改變VOD服務程序數據發送狀態和發送內容來實現簡單的VCR操作,如暫停#65380;播放#65380;拖動等#65377;因為不對媒體文件編碼格式進行處理,所以無法實現快進#65380;快退等更深層次的VCR操作#65377;JMF中流媒體服務程序分為處理器和傳輸器兩個部分,在處理器部分對媒體文件的編碼格式#65380;編碼內容進行了處理,只需要對處理器作相應的控制,就可以很方便地實現快進#65380;快退等深層次的VCR操作#65377;具體的各種VCR控制操作的軟件實現如下:

(1)暫停#65380;播放#65377;調用處理器對象(Processor)的stop()#65380;start()方法實現#65377;

(2)隨機定位節目播放位置#65377;以新播放位置構造的時間對象(Time)為參數,調用處理器對象(Processor)的setMediaTime()方法實現#65377;

(3) 快進#65380;快退#65377;調用處理器對象(Processor)的setRate()方法實現,快進速率參數為正,快退為負#65377;

需要注意的是,(2)和(3)中調用set方法之前需要確保處理器對象為stopped狀態#65377;

3.4穿越NAT

Internet是一種復雜的網絡環境,當前普遍運行的互聯網版本IPv4的一個顯著的缺點就是IP地址不足#65377;許多互聯網用戶不得不使用NAT(Network Address Translation,網絡地址轉換)來解決IP地址不足的問題#65377;對于這些主機,外部的主機不能直接訪問到它們#65377;目前,許多的流媒體傳輸軟件還不能解決NAT內部和外部#65380;兩個不同的NAT內部的用戶之間的傳輸問題#65377;因此,穿越NAT進行實時流媒體的傳輸是視頻點播軟件迫切需要解決的一個問題#65377;

穿越NAT技術的原理即為俗稱的“打洞”技術#65377;NAT內外用戶的呼叫方向受到限制,內部用戶可以呼叫外部用戶,外部用戶不能直接呼叫內部用戶#65377;雖然呼叫的方向受到限制,但是數據傳輸的方向與呼叫的方向無關#65377;也就是說,一旦呼叫得到應答,連接建立,數據傳輸可以是雙向的#65377;因此,由內部用戶先呼叫外部用戶,外部用戶應答,從而建立連接,然后兩者利用這個連接收發數據,實現NAT的穿越#65377;

許多常用的P2P通信軟件只實現了文本數據傳輸的NAT穿越,而沒有實現音視頻數據傳輸的NAT穿越#65377;這是因為音視頻數據傳輸的通道需要另外建立,而不能利用已經“打好洞”的通道進行數據傳輸#65377;JMF解決了這個問題,JMF允許用戶使用用戶化的#65380;處理過的TCP或者UDP通道替代原有的通道進行數據傳輸,實現音視頻數據傳輸的NAT穿越#65377;

具體的JMF穿越NAT實現如下:

(1)客戶機開啟所需UDP通道(DatagramSocket),針對每一個通道,向服務器發送“打洞包”#65377;

(2)服務器開啟所需UDP通道并接收“打洞包”,記錄下每個通道所收到的“打洞包”的來源地址和端口,即媒體數據發送的目的地址和端口#65377;

(3)客戶機和服務器分別使用上兩個步驟“打洞”后的UDP通道構造適配器類RTPClientSocket Adapter和RTPServerSocketAdapter的對象#65377;這兩個適配器類實現了RTPConnector接口,利用“打洞”后的UDP通道發送和接收媒體數據#65377;

(4)客戶機和服務器分別以步驟(3)中的兩個適配器對象為參數,調用RTPManager類的initialize (RTPConnector conn)方法初始化會話管理器,然后建立RTP會話進行媒體傳輸#65377;

本系統中的流媒體服務器一般位于公網中,即NAT外部,所以只考慮了NAT內部和外部之間穿越NAT的情況#65377;對于雙方都位于NAT內部的流媒體傳輸情況可以根據雙向打洞原理,依靠一個中轉服務器同理實現#65377;

4結束語

本文介紹了Java媒體框架應用編程接口JMF的結構特點,闡述了利用JMF開發的跨平臺視頻點播系統的系統結構設計和關鍵技術,詳細介紹了相關關鍵技術的具體軟件實現#65377;所開發的視頻點播系統具有跨平臺#65380;提供一定的QoS保證#65380;實現了完整的VCR操作#65380;穿越NAT等優點#65377;隨著寬帶的普及和JMF技術的發展,基于JMF的視頻點播系統將具有非常好的應用前景#65377;

本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 国产精品xxx| 久久婷婷国产综合尤物精品| 奇米精品一区二区三区在线观看| 精品剧情v国产在线观看| 伊伊人成亚洲综合人网7777 | 国产精品对白刺激| 999国内精品久久免费视频| 中文字幕日韩丝袜一区| 毛片手机在线看| 九色免费视频| 污网站在线观看视频| 国产一二三区视频| 亚洲成a人片7777| 色综合久久无码网| 亚洲免费福利视频| 亚洲性影院| 又大又硬又爽免费视频| 91久久天天躁狠狠躁夜夜| 亚洲精品日产AⅤ| 久久精品视频亚洲| 国产中文在线亚洲精品官网| 久草性视频| 操国产美女| 毛片三级在线观看| 天天摸夜夜操| 一本色道久久88| 日韩国产综合精选| A级毛片高清免费视频就| 久久国产精品麻豆系列| 精品一區二區久久久久久久網站| 无码精品一区二区久久久| 国产成人h在线观看网站站| 精品无码视频在线观看| 亚洲无限乱码| 日韩小视频网站hq| 中文字幕无码电影| 色吊丝av中文字幕| 91精品伊人久久大香线蕉| 日韩第一页在线| 日本欧美一二三区色视频| 在线视频亚洲欧美| 成人在线观看一区| 亚洲天堂777| 国产成人AV大片大片在线播放 | 一边摸一边做爽的视频17国产| 无码中文字幕精品推荐| 日韩在线视频网| 国产精品视频导航| 天天摸天天操免费播放小视频| 亚洲黄网视频| 午夜啪啪网| 黄色网页在线观看| 影音先锋亚洲无码| 国产拍在线| 精品小视频在线观看| 欧美一区二区人人喊爽| 91青青视频| 日本a∨在线观看| 91年精品国产福利线观看久久| 538精品在线观看| 国产精品美女免费视频大全| 2018日日摸夜夜添狠狠躁| 99视频只有精品| 国产福利在线观看精品| 国产香蕉97碰碰视频VA碰碰看| 国产91全国探花系列在线播放| 国产精品网址在线观看你懂的| 久久午夜夜伦鲁鲁片不卡| 老司机精品久久| 91青青草视频| 国内a级毛片| 久久性视频| 午夜福利亚洲精品| 五月天综合网亚洲综合天堂网| 欧美一区二区三区香蕉视| 亚洲人成网站色7777| 91精品亚洲| 国产xxxxx免费视频| 亚洲天堂网在线观看视频| 动漫精品中文字幕无码| 国产欧美日韩在线一区| 91精选国产大片|