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