版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JMF視頻傳輸Rtp與Rtcp協(xié)議1.流媒體(StreamingMedia)1.1流媒體概念流媒體技術(shù)是網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)發(fā)展到一定階段的產(chǎn)物。術(shù)語流媒體既可以指在網(wǎng)上傳輸連續(xù)時(shí)基媒體的流式技術(shù),也可以指使用流式技術(shù)的連續(xù)時(shí)基媒體本身。在網(wǎng)上傳輸音頻、視頻等多媒體信息目前主要有兩種方式:下載和流式傳輸。采用下載方式,用戶需要先下載整個(gè)媒體文件,然后才能進(jìn)行播放。由于網(wǎng)絡(luò)帶寬的限制,下載常常要花很長時(shí)間,所以這種處理方式延遲很大。而流媒體實(shí)現(xiàn)的關(guān)鍵技術(shù)是流式傳輸。傳輸之前首先對(duì)多媒體進(jìn)行預(yù)處理(降低質(zhì)量和高效壓縮),然后使用緩存系統(tǒng)來保證數(shù)據(jù)連續(xù)正確地進(jìn)行傳輸。使用流式傳輸方式,用戶不必像采用下載方式那樣要等到整個(gè)文件全部下載完畢,而是只需經(jīng)過幾秒到幾十秒的啟動(dòng)延時(shí)即可在客戶端進(jìn)行播放和觀看。此時(shí)媒體文件的剩余部分將在后臺(tái)繼續(xù)下載。與單純的下載方式相比,這種對(duì)多媒體文件邊下載邊播放的流式傳輸方式不僅使啟動(dòng)延時(shí)大幅度地縮短,而且對(duì)系統(tǒng)緩存容量的需求也大大降低。使用流式傳輸?shù)牧硪粋€(gè)好處是使傳輸那些事先不知道或無法知道大小的媒體數(shù)據(jù)(如網(wǎng)上直播、視頻會(huì)議等)成為可能。到目前為止,Internet上使用較多的流式視頻格式主要有以下三種:RealNetworks公司的RealMedia,Apple公司的QuickTime以及Microsoft公司的AdvancedStreamingFormat(ASF)。1.2支持流媒體的協(xié)議多媒體應(yīng)用的一個(gè)顯著特點(diǎn)是數(shù)據(jù)量大,并且許多應(yīng)用對(duì)實(shí)時(shí)性要求比較高。傳統(tǒng)的TCP協(xié)議是一個(gè)面向連接的協(xié)議,它的重傳機(jī)制和擁塞控制機(jī)制都是不適用于實(shí)時(shí)多媒體傳輸?shù)摹TP是一個(gè)應(yīng)用型的傳輸層協(xié)議,它并不提供任何傳輸可靠性的保證和流量的擁塞控制機(jī)制。RTP位于UDP(UserDatagramProtocol)之上。UDP雖然沒有TCP那么可靠,并且無法保證實(shí)時(shí)業(yè)務(wù)的服務(wù)質(zhì)量,需要RTCP實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)傳輸和服務(wù)質(zhì)量。但是,由于UDP的傳輸時(shí)延低于TCP,能與音頻和視頻很好地配合。因此,在實(shí)際應(yīng)用中,RTP/RTCP/UDP用于音頻/視頻媒體,而TCP用于數(shù)據(jù)和控制信令的傳輸。目前,支持流媒體傳輸?shù)膮f(xié)議主要有實(shí)時(shí)傳輸協(xié)議RTP(Real-TimeTransportProtocol)、實(shí)時(shí)傳輸控制協(xié)議RTCP(Real-TimeTransportControlProtocol)和實(shí)時(shí)流協(xié)議RTSP(Real-TimeStreamingProtocol)等2.實(shí)時(shí)傳輸協(xié)議RTP(Real-TimeTransportProtocol):RTP是針對(duì)Internet上多媒體數(shù)據(jù)流的一個(gè)傳輸協(xié)議,由IETF(Internet工程任務(wù)組)作為RFC1889發(fā)布。RTP被定義為在一對(duì)一或一對(duì)多的傳輸情況下工作,其目的是提供時(shí)間信息和實(shí)現(xiàn)流同步。RTP的典型應(yīng)用建立在UDP上,但也可以在TCP或ATM等其他協(xié)議之上工作。RTP本身只保證實(shí)時(shí)數(shù)據(jù)的傳輸,并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。2.1RTP工作機(jī)制威脅多媒體數(shù)據(jù)傳輸?shù)囊粋€(gè)尖銳的問題就是不可預(yù)料數(shù)據(jù)到達(dá)時(shí)間。但是流媒體的傳輸是需要數(shù)據(jù)的適時(shí)的到達(dá)用以播放和回放。rtp協(xié)議就是提供了時(shí)間標(biāo)簽,序列號(hào)以及其它的結(jié)構(gòu)用于控制適時(shí)數(shù)據(jù)的流放。在流的概念中”時(shí)間標(biāo)簽”是最重要的信息。發(fā)送端依照即1/9時(shí)的采樣在數(shù)據(jù)包里隱蔽的設(shè)置了時(shí)間標(biāo)簽。 在接受端收到數(shù)據(jù)包后 ,就依照時(shí)間標(biāo)簽按照正確的速率恢復(fù)成原始的適時(shí)的數(shù)據(jù)。不同的媒體格式調(diào)時(shí)屬性是不一樣的。但是 rtp本身并不負(fù)責(zé)同步, rtp 只是傳輸層協(xié)議,為了簡化運(yùn)輸層處理,提高該層的效率。將部分運(yùn)輸層協(xié)議功能(比如流量控制)上移到應(yīng)用層完成。同步就是屬于應(yīng)用層協(xié)議完成的。它沒有運(yùn)輸層協(xié)議的完整功能,不提供任何機(jī)制來保證實(shí)時(shí)地傳輸數(shù)據(jù),不支持資源預(yù)留,也不保證服務(wù)質(zhì)量。rtp 報(bào)文甚至不包括長度和報(bào)文邊界的描述。同時(shí) rtp 協(xié)議的數(shù)據(jù)報(bào)文和控制報(bào)文的使用相鄰的不同端口,這樣大大提高了協(xié)議的靈活性和處理的簡單性。rtp 協(xié)議和udp二者共同完成運(yùn)輸層協(xié)議功能。 udp協(xié)議只是傳輸數(shù)據(jù)包, 不管數(shù)據(jù)包傳輸?shù)臅r(shí)間順序。 rtp 的協(xié)議數(shù)據(jù)單元是用 udp分組來承載的。在承載 rtp 數(shù)據(jù)包的時(shí)候,有時(shí)候一幀數(shù)據(jù)被分割成幾個(gè)包具有相同的時(shí)間標(biāo)簽,則可以知道時(shí)間標(biāo)簽并不是必須的。而udp的多路復(fù)用讓 rtp 協(xié)議利用支持顯式的多點(diǎn)投遞,可以滿足多媒體會(huì)話的需求。rtp 協(xié)議雖然是傳輸層協(xié)議但是它沒有作為 osi體系結(jié)構(gòu)中單獨(dú)的一層來實(shí)現(xiàn)。 rtp 協(xié)議通常根據(jù)一個(gè)具體的應(yīng)用來提供服務(wù),rtp只提供協(xié)議框架,開發(fā)者可以根據(jù)應(yīng)用的具體要求對(duì)協(xié)議進(jìn)行充分的擴(kuò)展。3.實(shí)時(shí)傳輸控制協(xié)議 RTCP(Real-TimeTransportControlProtocol)RTCP負(fù)責(zé)管理傳輸質(zhì)量在當(dāng)前應(yīng)用進(jìn)程之間交換控制信息。 在RTP會(huì)話期間,各參與者周期性地傳送 RTCP包,包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量、丟失的數(shù)據(jù)包的數(shù)量等統(tǒng)計(jì)資料。因此,服務(wù)器可以利用這些信息動(dòng)態(tài)地改變傳輸速率,甚至改變有效載荷類型。 RTP和RTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,故特別適合傳送網(wǎng)上的實(shí)時(shí)數(shù)據(jù)。3.1RTCP工作機(jī)制當(dāng)應(yīng)用程序開始一個(gè) rtp 會(huì)話時(shí)將使用兩個(gè)端口:一個(gè)給 rtp,一個(gè)給 rtcp。rtp 本身并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,也不提供流量控制或擁塞控制,它依靠rtcp 提供這些服務(wù)。在 rtp 的會(huì)話之間周期的發(fā)放一些 rtcp 包以用來傳監(jiān)聽服務(wù)質(zhì)量和交換會(huì)話用戶信息等功能。 rtcp 包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量、 丟失的數(shù)據(jù)包的數(shù)量等統(tǒng)計(jì)資料。因此,服務(wù)器可以利用這些信息動(dòng)態(tài)地改變傳輸速率,甚至改變有效載荷類型。 rtp和rtcp 配合使用,它們能以有效的反饋和最小的開銷使傳輸效率最佳化, 因而特別適合傳送網(wǎng)上的實(shí)時(shí)數(shù)據(jù)。根據(jù)用戶間的數(shù)據(jù)傳輸反饋信息,可以制定流量控制的策略,而會(huì)話用戶信息的交互,可以制定會(huì)話控制的策略。3.2RTCP數(shù)據(jù)報(bào)在RTCP通信控制中,RTCP協(xié)議的功能是通過不同的RTCP數(shù)據(jù)報(bào)來實(shí)現(xiàn)的,主要有如下幾種類型:SR:發(fā)送端報(bào)告,所謂發(fā)送端是指發(fā)出RTP數(shù)據(jù)報(bào)的應(yīng)用程序或者終端,發(fā)送端同時(shí)也可以是接收端。②RR:接收端報(bào)告,所謂接收端是指僅接收但不發(fā)送RTP數(shù)據(jù)報(bào)的應(yīng)用程序或者終端。③SDES:源描述,主要功能是作為會(huì)話成員有關(guān)標(biāo)識(shí)信息的載體, 如用戶名、郵件地址、電話號(hào)碼等,此外還具有向會(huì)話成員傳達(dá)會(huì)話控制信息的功能。BYE:通知離開,主要功能是指示某一個(gè)或者幾個(gè)源不再有效,即通知會(huì)話中的其他成員自己將退出會(huì)話。⑤APP:由應(yīng)用程序自己定義,解決了RTCP的擴(kuò)展性問題,并且為協(xié)議的實(shí)現(xiàn)者提供了很大的2/9靈活性。JMF術(shù)語名稱:Java媒體框架(JMF)術(shù)語解釋:該核心框架支持不同媒體(如:音頻輸出和視頻輸出)間的時(shí)鐘同步。它是一個(gè)標(biāo)準(zhǔn)的擴(kuò)展框架,允許用戶制作純音頻流和視頻流。JMF實(shí)際上是 Java的一個(gè)類包。 技術(shù)提供了先進(jìn)的媒體處理能力,從而擴(kuò)展了Java平臺(tái)的功能。這些功能包括:媒體捕獲、壓縮、流轉(zhuǎn)、回放,以及對(duì)各種主要媒體形式和編碼的支持,如M-JPEG、H.263、MP3、RTP/RTSP(實(shí)時(shí)傳送協(xié)議和實(shí)時(shí)流轉(zhuǎn)協(xié)議)、MacromediasFlash、IBM的HotMedia和Beatniks 的RichMediaFormat(RMF)等。還支持廣受歡迎的媒體類型, 如Quicktime、Microsofts AVI和MPEG-1等。此外,軟件中包括了一個(gè)開放的媒體架構(gòu),可使開發(fā)人員靈活采用各種媒體回放、捕獲組件,或采用他們自己的定制的內(nèi)插組件。Sun以四種不同的專用版本提供個(gè)是一個(gè)輕便型版本,它完全采用人員還可選擇分別適用于Solaris提高性能和能力。
技術(shù),滿足專業(yè)開發(fā)人員的各類需求,第一Java語言編寫,適用于任何Java兼容系統(tǒng)。此外,開發(fā)、Windows或Linux等操作系統(tǒng)的性能最優(yōu)化軟件包,以軟件也是JavaMedia系列軟件的一部分。JavaMedia系列軟件包括Java3D、Java2D、JavaSound和JavaAdvancedImaging等API。采用各種JavaMediaAPI,軟件開發(fā)商人員就能容易、快速地為他們已有的各種應(yīng)用程序和客戶端 Java小程序增添豐富的媒體功能,如流式視頻、3D圖像和影像處理等。就是說,各種JavaMediaAPI發(fā)揮了Java平臺(tái)的固有優(yōu)勢(shì),將"編寫一次,到處運(yùn)行"的能力擴(kuò)展到了圖像、影像和數(shù)字媒體等各種應(yīng)用領(lǐng)域,從而大大縮減了開發(fā)時(shí)間和降低了開發(fā) 成本。JMF系統(tǒng)介紹一.簡介1.1JMF體系結(jié)構(gòu)簡介在開發(fā)JMF應(yīng)用程序之前要完全理解 JMF的體系架構(gòu)、接口和類。就拿我們的家用攝像機(jī)系統(tǒng)作個(gè)例子。首先用攝像機(jī)拍攝內(nèi)容,拍攝下來的內(nèi)容錄制在 DV帶中。DV帶可以放在放像機(jī)里播放、放像機(jī)提供視頻信號(hào)給電視機(jī),提供音頻信號(hào)給音箱,這樣我們就可以在電視機(jī)上看到畫面,從音箱里聽到聲音。 JMFAPI提供的也是同樣的模型。JMF提供的模型可大致分為七類*數(shù)據(jù)源(Datasource )*截取設(shè)備(CaptureDevice ,包括視頻和音頻截取設(shè)備)播放器(Player)處理器(Processor)數(shù)據(jù)池(DataSink)數(shù)據(jù)格式(Format)管理器(Manager)1.2 如何應(yīng)用 JMF捕獲媒體數(shù)據(jù)可以應(yīng)用JMF從攝像頭和麥克風(fēng)中采集數(shù)據(jù),采集后的數(shù)據(jù)可以被處理、保存、渲染為以后應(yīng)用。3/9捕獲媒體數(shù)據(jù)需要做以下工作。1.定位所需要用的捕獲設(shè)備,可以通過查詢CaptureDeviceManager 來定位。2.獲取這個(gè)捕獲設(shè)備的信息 CaptureDeviceInfo 對(duì)象。3.從CaptureDeviceInfo 對(duì)象中獲取捕獲設(shè)備的位置 Medialocator 。4.利用MediaLocator 創(chuàng)建DataSource。5.使用DataSource創(chuàng)建Player 或是Processor。6.然后啟動(dòng) Player 就開始了媒體的捕獲。如果只是想觀看捕獲的內(nèi)容, 只需要使用捕獲數(shù)據(jù)源創(chuàng)建播放器 Player 即可。如果想把捕獲的數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)或者保存起來,就需要?jiǎng)?chuàng)建處理器 Processor??梢詮腃aptureDeviceManager 中獲取捕獲設(shè)備的信息。 CaptureDeviceManager 是可在JMF中使用的全部捕獲設(shè)備的注冊(cè)中心。可以通過調(diào)用 CaptureDeviceManager 的getDeviceList 方法獲取可用的捕獲設(shè)備列表。每個(gè)捕獲設(shè)備都由 CaptureDeviceInfo 對(duì)象代表,要獲取一個(gè)特定的設(shè)備只需要調(diào)用CaptureDeviceManager 的getDevice 方法。從特定的設(shè)備捕獲媒體數(shù)據(jù),需要從它的 CaptureDeviceInfo 對(duì)象中獲取這個(gè)設(shè)備的位置信息MediaLocator。可以用 MediaLocator 直接構(gòu)建一個(gè) Player 或者Processor。還可以用MediaLocator構(gòu)建一個(gè)DataSource作為Player的輸入。當(dāng)Play開始的播放的時(shí)候,就開始捕獲過程。一個(gè)捕獲設(shè)備通常有一系列屬性可以進(jìn)行配置。通??刂品譃?2種,一種是端口控制PortControl,另一種是監(jiān)視MonitorControl。可以通過調(diào)用捕獲DataSource的getControl方法,來獲取這兩種控制對(duì)象。和其他的控制對(duì)象一樣,對(duì)于 PortControl 或者 MonitorControl 都可以通過調(diào)用getControlCompent方法來得到它們的可視化組件。這些組件可以添加到Applet中或者應(yīng)用程序中,這樣用戶可以和這些控制對(duì)象交互。處理顯示控制組件,還可以顯示標(biāo)準(zhǔn)的 Player 控制組件。1.3如何使用 RTP接收和發(fā)送流媒體數(shù)據(jù)JMFPlayer 和Processor 可以提供顯示、獲取、轉(zhuǎn)換 RTP數(shù)據(jù)流的機(jī)制??梢园凑諛?biāo)準(zhǔn)的方式通過 Manger為RTP數(shù)據(jù)流創(chuàng)建 Player。使用包含 RTPSession 的MediaLocator 作為參數(shù),調(diào)用 Manager的createPlayer(MediaLocator) 來創(chuàng)建Player。也可以用某個(gè)接收數(shù)據(jù)流的 DataSource作為參數(shù)來創(chuàng)建 Player。如果用MediaLocator 作為參數(shù)來創(chuàng)建 Player, Player 只會(huì)顯示Session中檢測(cè)到的第一個(gè)RTP數(shù)據(jù)流。如果想播放 Session中的所有視頻流,則需要調(diào)用 SessionManager 為每個(gè)接收數(shù)據(jù)流創(chuàng)建一個(gè) Player。當(dāng)使用MediaLocator 為RTPSession 創(chuàng)建Player,Manager為Session中的第一個(gè)數(shù)據(jù)流創(chuàng)建 Player。當(dāng)檢測(cè)到數(shù)據(jù)時(shí), Player 發(fā)出RealizeCompleteEvent 。通過監(jiān)聽RealizeCompleteEvent, 可以確定數(shù)據(jù)是否到了以及 Player 是否可以播放任何數(shù)據(jù)。一旦 Player 發(fā)出這個(gè)事件,就可以獲取 Player 的可視組件和控制組件。要注意的是,如果在沒有檢測(cè)到 Session中數(shù)據(jù)時(shí),Player 是不會(huì)結(jié)束 Realizing 狀態(tài)的。對(duì)于 Rtp媒體流Player 不能試圖調(diào)用 Manager的CreateRealizedPlayer 。如果調(diào)用,會(huì)引起死鎖。1.4如何在網(wǎng)絡(luò)發(fā)送流媒體數(shù)據(jù)在發(fā)送 RTP數(shù)據(jù)流之前,需要應(yīng)用 Processor 產(chǎn)生RTP編碼的數(shù)據(jù)源。通過構(gòu)建一個(gè)SessionManager或者是DataSink來控制傳輸過程。Processor 處理器的輸入可以是現(xiàn)有的媒體文件,也可以是實(shí)時(shí)捕獲的數(shù)據(jù)。對(duì)于現(xiàn)有的媒體數(shù)據(jù),可以使用 MediaLocaotr 來代表媒體文件。并根據(jù) MediaLocator 來創(chuàng)建Processor。對(duì)于捕獲的媒體數(shù)據(jù),一個(gè)捕獲數(shù)據(jù)源 CaptureDataSource 會(huì)用作Processor4/9的輸入。有兩種方式來發(fā)送 RTP數(shù)據(jù)流,一種是用 MediaLocator 作為RTPsession 的參數(shù),調(diào)用Manager的createDataSink 方法來創(chuàng)建一個(gè) RTPDataSink。另一種方式是利用 sessionmanager來創(chuàng)建發(fā)送數(shù)據(jù)流,并控制傳輸過程。當(dāng)利用MediaLocator 來構(gòu)建RTPDataSink的時(shí)候,你只能發(fā)送 DataSource中的第一個(gè)數(shù)據(jù)流。如果需要在一個(gè)進(jìn)程中發(fā)送多個(gè) RTP數(shù)據(jù)流或者需要監(jiān)控進(jìn)程的統(tǒng)計(jì)狀態(tài),就需要直接使用 SessionManager。無論采用哪種方式傳輸 RTP數(shù)據(jù)流,都需要做如下工作:1、使用DataSource創(chuàng)建Processor, 這個(gè)DataSource代表你要傳輸?shù)臄?shù)據(jù)2、設(shè)置Processor 的輸出為 RTP編碼的數(shù)據(jù)3、取得Processor 的輸出作為 DataSource二.具體的實(shí)驗(yàn)-應(yīng)用JMF開發(fā)視頻應(yīng)用2.1配置開發(fā)環(huán)境需要 J2SDK,JRE1.42, JMFWindowsPerformance Pack,JMF 的 下載地址: 針對(duì) WINDOWS用戶,可下載WindowsPerformancePack。只有安裝WindowsPerformancePack才支持視頻、音頻捕獲。下載后會(huì)自動(dòng)安裝,自動(dòng)配置路徑。安裝后需去測(cè)試一下是否安裝成功。測(cè)試地址:2.2用APPLET在瀏覽器中播放視頻短片在瀏覽器中實(shí)現(xiàn)APPLET視頻播放中用到了兩個(gè)基本概念manager,和player。JMFAPPLET是播放視頻文件的過程是這樣的。首先,提供媒體文件的位置作為創(chuàng)建PLAYER的參數(shù)。Player創(chuàng)建后會(huì)根據(jù)媒體文件的格式尋找解碼器,并且進(jìn)行初始化。然后為PLAYER添加一個(gè)ControllerListener,用來監(jiān)聽PLAYER的狀態(tài)。通過監(jiān)聽player的狀態(tài)采取不同的措施。在Player發(fā)出RealizeCompleteEvent的時(shí)候,可以獲取player的VisualComponent寬度,高度,VisualControllpane的寬度,高度。最后一步調(diào)用player的start方法,就可以顯示媒體文件的內(nèi)容了。如果不使用PLUGIN,JMF只支持標(biāo)準(zhǔn)的AVI,MOV,WAV文件。對(duì)于流行的MPEG4視頻文件,MP3并不支持。通過安裝解碼器,可以播放這些文件。2.3采集攝像頭數(shù)據(jù)采集攝像頭數(shù)據(jù),需要兩步工作。連接視頻設(shè)備,然后獲取視頻設(shè)備的數(shù)據(jù)。視頻,音頻設(shè)備在JmfPerformancePack安裝時(shí)會(huì)在JMFRegistry中注冊(cè)自己的設(shè)備名。需要連接攝像頭時(shí),可以通過查找攝像頭的設(shè)備名來連接攝像頭。具體的實(shí)現(xiàn)步驟,首先要得到Device的名字,有兩種方法可以辦到,方法一通過菜單,把系統(tǒng)支持的 Device都列出來,根據(jù)客戶的選擇來確定。方法二用程序來判斷。在第二種方法中,通過傳遞一個(gè) Format 對(duì)象到CaptureDeviceManager的getDeviceList方法中,獲得Device的名字。得到Device的名字以后,可以獲得CaptureDeviceInfo ,從而得到 MediaLocator。第一部分連接攝像頭的工作就完成了。下一步工作是捕獲攝像頭視頻,并顯示出來。有視頻設(shè)備構(gòu)成的數(shù)據(jù)源可分為 2種,例如照相機(jī)這種設(shè)備,屬于 Pull DataSource,用的時(shí)候才使用。類似于攝像頭這種設(shè)備構(gòu)成的數(shù)據(jù)源屬于 PushDatasource, 源源不斷的發(fā)送視頻數(shù)據(jù)。以獲取的 MediaLocator 作為參數(shù)構(gòu)建Player, 就可以播放攝像頭內(nèi)容了。5/92.4獲取攝像頭視頻數(shù)據(jù)和麥克風(fēng)音頻數(shù)據(jù)基本步驟是首先獲取視頻、音頻捕獲設(shè)備的信息,然后再根據(jù)取得的設(shè)備信息確定設(shè)備的位置。找到設(shè)備的位置以后,調(diào)用Manager的CreatePlayer方法創(chuàng)建Player,當(dāng)Player開始播放的時(shí)候,就開始了捕獲的過程。有多種方法獲得捕獲設(shè)備信息, 可以通過查詢指定的格式, 也可以查詢特定的設(shè)備名字。具體步驟如下:先把所有的捕獲設(shè)備調(diào)出來2. 所有的視頻捕獲設(shè)備的名字都是以 vfw開頭的,所以取得捕獲設(shè)備列表中以 vfw 開頭的設(shè)備名字就是視頻捕獲設(shè)備獲取設(shè)備的medialocator地址創(chuàng)建Player,當(dāng)Play開始的時(shí)候,就開始了視頻捕獲的過程2.5保存攝像頭數(shù)據(jù)為視頻文件首先是找到捕獲設(shè)備,然后取的捕獲設(shè)備的位置信息。如果要保存所采集的數(shù)據(jù),就要?jiǎng)?chuàng)建一個(gè)處理器。然后將處理器的輸出作為數(shù)據(jù)池的輸入。當(dāng)啟動(dòng)數(shù)據(jù)池的時(shí)候,就可以把捕獲的數(shù)據(jù)保存成文件了。具體步驟如下:獲取視頻捕獲設(shè)備的medialocator地址以獲取的medialocator為參數(shù),創(chuàng)建Processor設(shè)置Processor,輸出類型為AVI格式以Processor的輸出為參數(shù),創(chuàng)建數(shù)據(jù)源建立一個(gè)保存文件位置的MediaLocator6. 以輸入數(shù)據(jù)源和輸出數(shù)據(jù)源為參數(shù),建立一個(gè) DATASINK7. 調(diào)用Processor 的StreamWriterControl, 設(shè)置Processor 控制生成文件的大小設(shè)置完畢,可以啟動(dòng)Processor和DataSink來保存捕獲數(shù)據(jù)了2.6 捕獲音頻、視頻數(shù)據(jù)為 QuickTime格式的文件使用處理器模型來捕獲實(shí)時(shí)的視頻、音頻數(shù)據(jù)并且將數(shù)據(jù)軌道進(jìn)行編碼、混合,最后保存為QuickTime格式的文件。首先構(gòu)建一個(gè)處理器模型,設(shè)定好特定的數(shù)據(jù)軌道和輸出內(nèi)容格式。然后使用這個(gè)處理器模型來創(chuàng)建一個(gè)處理器。處理器會(huì)自動(dòng)連接到符合文件格式要求的捕獲設(shè)備。具體步驟如下:設(shè)定要輸出的音頻格式和視頻格式設(shè)定要輸出的文件類型為QuickTime格式3. 以數(shù)據(jù)軌道輸出格式和文件輸出類型為參數(shù),創(chuàng)建 ProcessorModel由ProcessorModel對(duì)象創(chuàng)建Processor對(duì)象以Processor的輸出為參數(shù)創(chuàng)建數(shù)據(jù)源建立一個(gè)記錄保存文件的MediaLocator創(chuàng)建DataSink開始保存數(shù)據(jù)文件,啟動(dòng)處理器當(dāng)結(jié)束捕獲視頻時(shí),停止處理器,并關(guān)掉它當(dāng)數(shù)據(jù)池接到EndOfStream事件時(shí),停止保存文件。數(shù)據(jù)傳輸?shù)牧鞒?.7 發(fā)送實(shí)時(shí)媒體數(shù)據(jù)6/9如果需要將媒體數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),首先需要用 Processor 生成RTP編碼的數(shù)據(jù)源,然后創(chuàng)建SessionManager或者DataSink來控制傳輸過程。具體步驟如下:獲取視頻采集設(shè)備創(chuàng)建Processor,連接到視頻采集設(shè)備等待,直到processor的狀態(tài)變成configured,設(shè)置輸出格式為RAW_RTP列出所有的和數(shù)據(jù)軌道相關(guān)的控制器遍歷這些控制器,找到可以控制輸出格式的控制器找到了數(shù)據(jù)軌道的格式控制器之后,設(shè)置輸出格式,輸出格式輸出為VideoFormat.JPEG_RTP7.準(zhǔn)備工作已經(jīng)做好,可以調(diào)用Processor的realize方法8.當(dāng)Processor進(jìn)出realized狀態(tài)以后,可以取得Processor的輸出作為數(shù)據(jù)源可以把這個(gè)數(shù)據(jù)源作為參數(shù)傳遞給manager,通過manager創(chuàng)建一個(gè)RTP的數(shù)據(jù)池。先設(shè)置一個(gè)發(fā)送數(shù)據(jù)流的多播目的網(wǎng)址確定了數(shù)據(jù)源和發(fā)送地址,可以建立數(shù)據(jù)池DataSink了,建立成功后調(diào)用open()和start() 方法,就可以在網(wǎng)上以多播方式發(fā)送捕獲的內(nèi)容了2.8 接收實(shí)時(shí)視頻數(shù)據(jù)接收網(wǎng)上傳輸?shù)臄?shù)據(jù)流時(shí),首先要構(gòu)建一個(gè) MediaLocator 來描述 RTP進(jìn)程,Manager為進(jìn)程中的第一個(gè)數(shù)據(jù)流創(chuàng)建播放器,當(dāng)從進(jìn)程中檢測(cè)到數(shù)據(jù)時(shí),Player會(huì)發(fā)出RealizeComplete事件。通過監(jiān)聽RealizeComplete事件,你可以確定是否有數(shù)據(jù)到了,還可以確定Player是否準(zhǔn)備好播放數(shù)據(jù)了。當(dāng)Player發(fā)出這個(gè)事件時(shí),就可以獲取播放器的可視面板和控制面板了。具體實(shí)現(xiàn)步驟如下:1. 確 定 RTP 數(shù) 據(jù) 源 的 地 址 , 例 如 : String url=2.以RTP數(shù)據(jù)源地址為參數(shù),創(chuàng)建MediaLocator3.以MediaLocator為參數(shù),創(chuàng)建Player4.為PLAYER添加監(jiān)聽器,以便監(jiān)聽RealizeComplete事件三. 實(shí)驗(yàn)效果總結(jié)JMF2.0支持媒體捕獲,并且考慮到了程序開發(fā)者需求。允許程序開發(fā)者在媒體處理、媒體控制上添加自己的控制器。JMF提供的插件的架構(gòu)使得直接訪問媒體數(shù)據(jù)成為可能。這樣JMF可以更方便的被擴(kuò)展。 JMF的設(shè)計(jì)目的是使開發(fā)簡便、支持媒體捕獲、支持使用 JAVA技術(shù)開發(fā)媒體傳輸以及視頻會(huì)議等應(yīng)用、支持高級(jí)開發(fā)者開發(fā)插件擴(kuò)展 JMF應(yīng)用,新的特性還可以和原有的系統(tǒng)很好的融合。允許開發(fā)者開發(fā)定制的,可下載的編碼器、處理器、分離器和組合器。JMF的類庫還可以提供對(duì) RTP(實(shí)時(shí)傳輸協(xié)議)的支持。 RTP支持在網(wǎng)上實(shí)時(shí)的發(fā)送、接收媒體流。RTP可以用在開發(fā)視頻點(diǎn)播、音頻點(diǎn)播或者網(wǎng)上的交互內(nèi)容服務(wù)等應(yīng)用。四. 進(jìn)一步的研究工作本文研究了 JAVA視頻應(yīng)用基本內(nèi)容, 為進(jìn)一步擴(kuò)展 JMF的應(yīng)用開發(fā)打下了基礎(chǔ)。 在這一段的研究中積累的很多經(jīng)驗(yàn)。由于時(shí)間的關(guān)系,只是初步了解了如何通過插件技術(shù)擴(kuò)展 JMF的應(yīng)用能力。今后需要做的主要研究工作和研究方向主要有7/91、編寫解碼器插件,擴(kuò)展 JMF的應(yīng)用能力。使得 JMF可以支持更多的媒體類型。2、編寫處理器插件,增強(qiáng) JMF的視頻處理能力,使得 JMF的視頻編輯能力更強(qiáng)。附:核心代碼分析:JMF中可以實(shí)現(xiàn) RTP媒體流的回放( playback)和傳輸( transmission ),主要由 和 包中定義的 API完成。JMF可以通過標(biāo)準(zhǔn)的 JMFplug-in 機(jī)制來實(shí)現(xiàn)支持特定的 RTP格式和動(dòng)態(tài)負(fù)載。你可以在本地播放 RTP數(shù)據(jù)流,或?qū)⑵浯鎯?chǔ)到本地文件。Rtp媒體數(shù)據(jù)流的發(fā)送過程①將轉(zhuǎn)換格式后的數(shù)據(jù)放入一個(gè) DataSource,//獲得轉(zhuǎn)制后的 DataSourcedataOutput=processor.getDataOutput() 。//將DataSource轉(zhuǎn)化為Push數(shù)據(jù)流PushBufferDataSourcepbds=(PushBufferD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024產(chǎn)品銷售區(qū)域代理合同模板
- 2024租車合同協(xié)議書公司單位租車協(xié)議書
- 2024版獨(dú)家代理合同樣本
- 2024年廣場(chǎng)文化建設(shè)施工合同
- 2024年度貨物采購與供應(yīng)協(xié)議
- 陀螺課件圖片教學(xué)課件
- 2024年度勞動(dòng)合同標(biāo)的:高級(jí)管理人員雇傭
- 2024解除土地流轉(zhuǎn)合同
- 2024年度環(huán)保項(xiàng)目技術(shù)研發(fā)與許可使用合同
- 2024年度房屋買賣合同(高檔住宅)
- 傳染病實(shí)驗(yàn)室檢查的質(zhì)量控制
- 期中測(cè)試卷(1~3單元)(試題)2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 四川省成都市2024年七年級(jí)上學(xué)期期中數(shù)學(xué)試卷【附答案】
- 期中易錯(cuò)密押卷(第1-5單元)(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 咸寧房地產(chǎn)市場(chǎng)月報(bào)2024年08月
- 2024-2030年中國艾草行業(yè)供需分析及發(fā)展前景研究報(bào)告
- GB/T 37342-2024國家森林城市評(píng)價(jià)指標(biāo)
- 北京市海淀區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末語文試題
- 人教版生物八年級(jí)下冊(cè) 8.1.1傳染病及其預(yù)防-教案
- 煤礦安全生產(chǎn)知識(shí)培訓(xùn)考試題庫(800題)
- 舊橋拆除監(jiān)理細(xì)則
評(píng)論
0/150
提交評(píng)論