實時傳輸協(xié)議(RTP),實時傳輸協(xié)議(RTP)是什么意思
實時傳輸協(xié)議(RTP),實時傳輸協(xié)議(RTP)是什么意思
RTP簡介
RTP是一種提供端對端傳輸服務(wù)的實時傳輸協(xié)議,用來支持在單目標(biāo)廣播和多目標(biāo)廣播網(wǎng)絡(luò)服務(wù)中傳輸實時數(shù)據(jù),而實時數(shù)據(jù)的傳輸則由RTCP協(xié)議來監(jiān)視和控制。
RTP定義在RFC
使用RTP協(xié)議的應(yīng)用程序運行在RTP之上,而執(zhí)行RTP的程序運行在UDP的上層,目的是為了使用UDP的端口號和檢查和。如圖1所示,RTP可以看成是傳輸層的子層。由多媒體應(yīng)用程序生成的聲音和電視數(shù)據(jù)塊被封裝在RTP信息包中,每個RTP信息包被封裝在UDP消息段中,然后再封裝在IP數(shù)據(jù)包中。
信息包的結(jié)構(gòu)包含廣泛用于多媒體的若干個域,包括聲音點播(audio-on-demand)、影視點播(video on demand)、因特網(wǎng)電話(Internet telephony)和電視會議(videoconferencing)。RTP的規(guī)格沒有對聲音和電視的壓縮格式制定標(biāo)準(zhǔn),它可以被用來傳輸普通格式的文件。例如,WAV或者GSM(Global System for Mobile communications)格式的聲音、MPEG-1和MPEG-2的電視,也可以用來傳輸專有格式存儲的聲音和電視文件。
從應(yīng)用開發(fā)人員的角度來看,可把RTP執(zhí)行程序看成是應(yīng)用程序的一部分,因為開發(fā)人員必需把RTP集成到應(yīng)用程序中。在發(fā)送端,開發(fā)人員必需把執(zhí)行RTP協(xié)議的程序?qū)懭氲絼?chuàng)建RTP信息包的應(yīng)用程序中,然后應(yīng)用程序把RTP信息包發(fā)送到UDP的套接接口(socket interface),如圖2所示;同樣,在接收端,RTP信息包通過UDP套接接口輸入到應(yīng)用程序,因此開發(fā)人員必需把執(zhí)行RTP協(xié)議的程序?qū)懭氲綇腞TP信息包中抽出媒體數(shù)據(jù)的應(yīng)用程序。
現(xiàn)以用RTP傳輸聲音為例來說明它的工作過程。假設(shè)音源的聲音是64 kb/s的PCM編碼聲音,并假設(shè)應(yīng)用程序取20毫秒的編碼數(shù)據(jù)為一個數(shù)據(jù)塊(chunk),即在一個數(shù)據(jù)塊中有160個字節(jié)的聲音數(shù)據(jù)。應(yīng)用程序需要為這塊聲音數(shù)據(jù)添加RTP標(biāo)題生成RTP信息包,這個標(biāo)題包括聲音數(shù)據(jù)的類型、順序號和時間戳。然后RTP信息包被送到UDP套接接口,在那里再被封裝在UDP信息包中。在接收端,應(yīng)用程序從套接接口處接收RTP信息包,并從RTP信息包中抽出聲音數(shù)據(jù)塊,然后使用RTP信息包的標(biāo)題域中的信息正確地譯碼和播放聲音。
如果應(yīng)用程序不使用專有的方案來提供有效載荷類型(payload type)、順序號或者時間戳,而是使用標(biāo)準(zhǔn)的RTP協(xié)議,應(yīng)用程序就更容易與其他的網(wǎng)絡(luò)應(yīng)用程序配合運行,這是大家都希望的事情。例如,如果有兩個不同的公司都在開發(fā)因特網(wǎng)電話軟件,他們都把RTP合并到他們的產(chǎn)品中,這樣就有希望:使用不同公司電話軟件的用戶之間能夠進行通信。
這里需要強調(diào)的是,RTP本身不提供任何機制來確保把數(shù)據(jù)及時遞送到接收端或者確保其他的服務(wù)質(zhì)量,它也不擔(dān)保在遞送過程中不丟失信息包或者防止信息包的次序不被打亂。的確,RTP的封裝只是在系統(tǒng)端才能看到,中間的路由器并不區(qū)分那個IP數(shù)據(jù)報是運載RTP信息包的。
RTP允許給每個媒體源分配一個單獨的RTP信息包流,例如,攝像機或者麥克風(fēng)。例如,有兩個團體參與的電視會議,這就可能打開4個信息包流:兩臺攝像機傳送電視流和兩個麥克風(fēng)傳送聲音流。然而,許多流行的編碼技術(shù),包括MPEG-1和MPEG-2在編碼過程中都把聲音和電視圖像捆綁在一起以形成單一的數(shù)據(jù)流,一個方向就生成一個RTP信息包流。
RTP信息包沒有被限制只可應(yīng)用于單目標(biāo)廣播,它們也可以在一對多(one-to-many)的多目標(biāo)廣播樹或者在多對多(many-to-many)的多目標(biāo)廣播樹上傳送。例如,多對多的多目標(biāo)廣播,在這種應(yīng)用場合下,所有發(fā)送端通常都把他們的RTP信息包流發(fā)送到具有相同多目標(biāo)廣播地址的多目標(biāo)廣播樹上。
RTP信息包標(biāo)題域
RTP標(biāo)題由4個信息包標(biāo)題域和其他域組成:有效載荷類型(payload type)域,順序號(sequence number)域,時間戳(timestamp)域和同步源標(biāo)識符(Synchronization Source Identifier)域等。RTP信息包的標(biāo)題域的結(jié)構(gòu)如下圖所示:
1. 有效載荷類型
RTP信息包中的有效載荷域(Payload Type Field)的長度為7位,因此RTP可支持128種不同的有效載荷類型。對于聲音流,這個域用來指示聲音使用的編碼類型,例如PCM、自適應(yīng)增量調(diào)制或線性預(yù)測編碼等等。如果發(fā)送端在會話或者廣播的中途決定改變編碼方法,發(fā)送端可通過這個域來通知接收端。表1列出了目前RTP所能支持的聲音有效載荷類型。
表1 目前RTP所能支持的聲音有效載荷類型
對電視流,有效載荷類型可以用來指示電視編碼的類型,例如motion JPEG, MPEG-1,MPEG-2或者H.231等等。發(fā)送端也可以在會話或者期間隨時改變電視的編碼方法。表16-02列出了目前RTP所能支持的某些電視有效載荷類型。
表2 目前RTP所能支持的聲音有效載荷類型
2. 順序號
順序號(Sequence Number Field)域的長度為16位。每發(fā)送一個RTP信息包順序號就加1,接收端可以用它來檢查信息包是否有丟失以及按順序號處理信息包。例如,接收端的應(yīng)用程序接收到一個RTP信息包流,這個RTP信息包在順序號86和89之間有一個間隔,接收端就知道信息包87和88已經(jīng)丟失,并且采取措施來處理丟失的數(shù)據(jù)。
3. 時間戳
時間戳(Timestamp)域的長度為32字節(jié)。它反映RTP數(shù)據(jù)信息包中第一個字節(jié)的采樣時刻(時間)。接收端可以利用這個時間戳來去除由網(wǎng)絡(luò)引起的信息包的抖動,并且在接收端為播放提供同步功能。
4. 同步源標(biāo)識符
同步源標(biāo)識符(Synchronization Source Identifier,SSRC)域的長度為32位。它用來標(biāo)識RTP信息包流的起源,在RTP會話或者期間的每個信息包流都有一個清楚的SSRC。SSRC不是發(fā)送端的IP地址,而是在新的信息包流開始時源端隨機分配的一個號碼。
非常好我支持^.^
(6) 100%
不好我反對
(0) 0%
相關(guān)閱讀:
- [電子說] 用于監(jiān)測RTP快速退火爐氧含量的高溫氧氣分析儀 2023-10-18
- [電子說] rtp流廣播網(wǎng)絡(luò)有源吸頂喇叭SIP-7043介紹 2023-09-26
- [電子說] 基于GPU的多波束相控陣雷達系統(tǒng)介紹 2023-08-04
- [電子說] 使用Keil5運行ARTPI blink led例程 2023-08-03
- [接口/總線/驅(qū)動] ARTPI測試PIN所有接口 2023-08-02
- [電子說] 請問ARTPI是怎樣使用軟件I2C讀取mpu6050的? 2023-08-02
- [電子說] 西門子200smartPLC定時器的用法 2023-07-24
- [電子說] 西門子200smartPLC讀取絕對值編碼器的數(shù)據(jù) 2023-07-20
( 發(fā)表人:admin )