音視頻入門基礎:RTP專題(7)——RTP協議簡介

一、引言

本文對RTP協議進行簡介。在簡介之前,請各位先下載RTP的官方文檔《RFC 3550》和《RFC 3551》。《RFC 3550》總共有89頁,《RFC 3551》總共有44頁。本文下面所說的“頁數”是指在pdf閱讀器中顯示的頁數:

二、RTP協議簡介

? 根據《RFC 3550》第5頁,實時傳輸協議(Real-time Transport Protocol或簡寫RTP)為交互式音頻和視頻等具有實時特性的數據提供端到端的傳輸服務。這些服務包括有效載荷類型識別、序列編號、時間戳和傳輸監控。應用程序通常在 UDP 的基礎上運行 RTP,以利用其多路復用和校驗服務;這兩個協議都貢獻了部分傳輸協議功能。不過、RTP 也可與其他合適的底層網絡或傳輸協議一起使用。如果底層網絡提供多播分發功能,RTP 支持將數據傳輸到多個目的地。
? 請注意,RTP 本身并不提供任何機制來確保及時傳輸或提供其他服務質量保證,而是依靠底層服務來實現。它既不保證傳送或防止無序傳送,也不假定底層網絡是可靠的并能按順序傳送數據包。RTP 中包含的序列號允許接收方重建發送方的數據包序列,但序列號也可用于確定數據包的正確位置,例如在視頻解碼中,不一定要按順序解碼數據包。雖然 RTP 主要是為了滿足多方參與的多媒體會議的需求,但它并不局限于這一特定應用,連續數據存儲、交互式分布式仿真、活動徽章以及控制和測量應用也可能適用 RTP:

三、Mixers和Translators

根據《RFC 3550》第7到第8頁,到目前為止,我們假定所有網站都希望以相同的格式接收媒體數據。然而,這并不總是合適的。考慮這樣一種情況:一個地區的與會者通過低速鏈路與大多數享有高速網絡接入的與會者連接。與其強迫每個人都使用帶寬較低、質量較差的音頻編碼,不如在低帶寬區域附近放置一個稱為混音器(Mixer)的RTP級中繼器。混音器會重新同步傳入的音頻數據包,以重建發送方生成的20毫秒恒定間隔,這些數據包可以單播給單個接收者,也可以通過不同地址組播給多個接收者。RTP header包含一種混音器識別混合數據包來源的方法,以便在接收器上提供正確的通話者指示。

音頻會議中的某些預期參與者可能使用高帶寬鏈路連接,但可能無法通過 IP 組播直接到達。例如,他們可能位于應用級防火墻之后,無法通過任何 IP 數據包。在這種情況下,可以使用另一種稱為翻譯器(Translator)的 RTP 級中繼。在防火墻兩側各安裝一個翻譯器,外部翻譯器通過安全連接將接收到的所有組播數據包傳送到防火墻內部的翻譯器。防火墻內的翻譯器將這些數據包作為組播數據包再次發送到僅限于網站內部網絡的組播組。
混合器和翻譯器的設計目的多種多樣。例如,視頻混合器可將獨立視頻流中的單個人物圖像進行縮放,然后合成到一個視頻流中,以模擬群體場景。其他轉換的例子包括將一組只講 IP/UDP 的主機連接到一組只懂 ST-II 的主機上,或對來自單個信號源的視頻流進行逐包編碼轉換,而無需重新同步或混合:


根據《RFC 3550》第10頁,Translator(翻譯器,轉換器)是轉發 RTP 數據包并保持其synchronization source identifier(同步源標識符)不變的中間系統。Translator的例子包括不混合轉換編碼的設備、從組播到單播的復制器以及防火墻中的應用級過濾器:

Mixer(混音器,混合器)為從一個或多個來源接收 RTP 數據包的中間系統,可能會更改數據格式,以某種方式合并數據包,然后轉發新的 RTP 數據包。由于多個輸入源之間的定時一般不會同步,因此Mixer會對數據流進行定時調整,并為合并后的數據流生成自己的定時。因此,從Mixer發出的所有數據包都將被識別為以Mixer為同步源(synchronization source):

四、RTP packet

根據《RFC 3550》第8頁,RTP packet(RTP報文)是由固定的RTP頭(RTP Fixed Header)、可能為空的貢獻源(contributing sources,簡稱CSRC)列表和有效載荷數據(payload)組成的數據包。某些底層協議可能要求定義 RTP 數據包的封裝。通常情況下,底層協議的一個數據包包含一個 RTP 數據包,但如果封裝方法允許,也可能包含多個 RTP 數據包:

一個RTP packet =??RTP header +?RTP layload + 填充字節(可選)

五、RTP header

?根據《RFC 3550》第12頁,RTP header包含下圖所示部分:

RTP header =?RTP Fixed Header +?contributing source(CSRC)?identifiers?+?RTP Header Extension(可選)

六、RTP Fixed Header

RTP Fixed Header包含RTP header中必須存在的字段。RTP Fixed Header固定占12字節。

RTP Fixed Header =?version +?padding +?extension +?CSRC count +?marker +?payload type +?sequence number +?timestamp +?SSRC

其中:

version:占2位,該字段標識 RTP 的版本,本規范(《RFC 3550》)定義的版本為'2'(目前都用2版本)。值'1'用于RTP的第一個草案版本,值'0'用于最初在 “vat ”音頻工具中實施的協議):

padding:占1位,為填充位,表示用于RTP packet結束點的預留空間。如果設置了填充位(padding的值為1),該RTP packet的末尾就會包含一個或多個額外的填充八位位組(此時RTP packet末端會附加填充字節),這些八位位組不屬于有效載荷的一部分。填充的最后一個八位位組包含應忽略多少個填充八位位組(包括其本身)的計數。某些具有固定塊大小的加密算法或在下層協議數據單元中攜帶多個RTP packet時可能需要使用填充:

extension:占1位,為擴展位,如果擴展位被設置(extension的值為1),RTP Fixed Header后(CSRC之后)必須有一個擴展頭(?RTP Header Extension)

CSRC count:占4位,為CSRC的計數。指示RTP Fixed Header之后的CSRC標識符數量,即contributing source(CSRC)?identifiers的數量:

marker:占1位,該marker(標記)的解釋由配置文件(profile)定義。其目的是允許在數據包流中標記幀邊界等重要事件。配置文件可定義額外的標記位,或通過改變有效載荷類型字段中的位數來指定沒有標記位:

根據《RFC 3551》第30頁,大多數視頻編碼規定,在視頻幀的最后一個packet(報文,數據包)中,RTP header的marker位應設置為 1,否則設置為0。因此,無需等待具有不同時間戳的后續數據包來檢測是否應顯示新幀(也就是說:視頻的每幀可能會比較大,一個RTP packet可能無法發送完。所以使用了幾個packet來傳輸該幀。對于視頻,通常的規則是marker位的值為1時表示這是該視頻幀的最后一個packet):

根據《RFC 3551》第37頁,音頻靜默后第一個數據包上設置marker位的要求級別從 “是 ”改為 “應該是”,并說明只有在故意不發送數據包時才設置標記位(也就是說:對于音頻而言,常用的規則是marker位值為1時表示通話開始,即 “數據包未連續傳輸的靜默期后的第一個數據包”):

payload type:占7位,為PT值(有效載荷類型),根據該值確定 RTP 有效負載(payload)的格式,并決定應用程序對其的解釋:

《RFC 3551》規定了一套初始的 “有效載荷類型”,?本列表保留并擴展了該列表:

有效載荷標識符 96-127 用于會話期間動態定義的有效載荷。建議動態分配端口號,但端口號 5004 和 5005 已被注冊,以便在不需要動態分配端口時使用配置文件。除了上表中明確指定PT值的負載類型,還有些負載類型由于誕生的較晚,沒有具體的PT值,只能使用動態(dynamic)PT值,即96到127,比如普遍指定H264的PT值為96。

根據《RFC 6184》第11頁(該文檔描述了:RTP Payload Format for H.264 Video),對于H.264,必須通過所使用的配置文件或以動態方式分配有效載荷類型:

sequence number:占16位(2字節),為序列號。每發送一個 RTP數據包,序列號的值就會遞增加1,接收方可利用序列號檢測數據包丟失并恢復數據包序列。序列號的初始值應是隨機的(不可預測的),這樣即使信源本身沒有加密,也能增加已知純文本加密攻擊的難度,因為數據包可能會流經translator (翻譯器)進行加密:

timestamp:占32位(4字節),為產生payload的時間戳。時間戳反映RTP數據包中第一個字節的采樣瞬間。采樣瞬時必須來自一個在時間上單調線性遞增的時鐘,以便進行同步和抖動計算。與序列號一樣,時間戳的初始值也應該是隨機的:

synchronization source (SSRC) identifier:占32位(4字節),SSRC字段用于標識同步源(synchronization source,即RTP數據流的起源)。該標識符應隨機選擇,目的是使同一RTP 會話中沒有兩個同步源具有相同的SSRC標識符(在一個RTP會話中,每個數據流的SSRC都不同,接收者將根據該SSRC標識符來區分不同的信源,進行RTP報文的分組)。雖然多個信號源選擇相同標識符的概率很低,但所有RTP實現都必須做好檢測和解決碰撞的準備。如果源更改了源傳輸地址,它也必須選擇一個新的SSRC標識符,以避免被解釋為循環源:

七、CSRC list

在RTP Fixed Header之后的是CSRC list(CSRC列表),其包含0到15項contributing source(CSRC)?identifiers,,每項占32位(4字節)。CSRC列表標識了該數據包所含有效載荷的貢獻源(contributing sources)。標識符的數量由RTP Fixed Header的CSRC count(CC)字段給出。如果貢獻源超過 15 個,則只能識別 15 個。CSRC 標識符由混合器(mixers)插入,使用貢獻源的 SSRC 標識符。例如,在音頻數據包中,會列出混合在一起創建數據包的所有信源的 SSRC 標識符,以便在接收機上正確顯示通話者:

八、RTP Header Extension

根據《RFC 3550》第16頁,RTP中提供了一種擴展機制,允許各實施機構嘗試與有效載荷格式無關的新功能,這些功能需要在 RTP 數據包報頭中攜帶額外的信息。設計該機制的目的是使其他未進行擴展的互操作實現可以忽略報頭擴展。比如通過該RTP擴展,可以添加前向糾錯碼(FEC),發送冗余數據。使接收端在一定比例丟包的情況下可以恢復原始數據,提高傳輸的穩健性。
請注意,該報頭擴展僅用于有限的用途。例如,RTP Fixed Header的特定配置文件擴展處理成本較低,因為它不是條件性的,也不在可變位置。特定有效載荷格式所需的附加信息不應使用這種標頭擴展,而應放在數據包的有效載荷部分:

九、payload

根據《RFC 3550》第8頁,payload(RTP layload,有效載荷)為RTP在數據包中傳輸的數據,例如音頻樣本或壓縮后的視頻數據,即實際的媒體數據。其格式和內容取決于RTP Fixed Header中的payload type字段:

十、參考

《維基百科——實時傳輸協議》

《Real-Time Transport Protocol (RTP) Parameters》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/67898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67898.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP協議的無狀態和無連接

無連接 ①無連接的含義 這里所說的無連接并不是指不連接,客戶與服務器之間的HTTP連接是一種一次性連接,它限制每次連接只處理一個請求,當服務器返回本次請求的應答后便立即關閉連接,下次請求再重新建立連接。這種一次性連接主要考…

Java知識速記:Lambda表達式

Java知識速記:Lambda表達式 一、什么是Lambda表達式? Lambda表達式是Java 8引入的一種簡潔的表示函數式接口的方法,它使得可以將函數作為參數傳遞,并且可以在代碼中以更簡潔的方式實現函數式編程。Lambda表達式的基本語法如下&a…

第31章 星騙計劃的推進與團隊協作

我回到自己的辦公室,在座位上剛坐下沒多久,還沒來得及好好整理一下思緒,就聽到一陣敲門聲。“請進。” 我抬頭說道,聲音中帶著一絲疲憊。借助情緒監測系統,我察覺到自己的壓力指數正處于高位,于是暗自提醒自…

半導體器件與物理篇7 微波二極管、量子效應和熱電子器件

基本微波技術 微波頻率:微波頻率涵蓋約從0.1GHz到3000GHz,相當于波長從300cm到0.01cm。 分布效應:電子部件在微波頻率,與其在較低頻率的工作行為不同。 輸運線:一個由電阻、電容、電感三種等效基本電路部件所組成的…

【C++】B2122 單詞翻轉

博客主頁: [小????????] 本文專欄: C 文章目錄 💯前言💯題目描述輸入格式輸出格式樣例 #1樣例輸入 #1樣例輸出 #1 💯一、我的做法代碼實現:代碼解析思路分析 💯二、老師的第一種做法代碼實現&a…

麥芯(MachCore)應用開發教程5 --- 工位和晶圓傳輸

麥芯是構建在windows系統上的設備應用操作系統,利用該系統可以快速高效的開發一款設備專用軟件。希望進一步了解請email: acloud163.com 黃國強 2025/02/03 一、工位與子設備的關系 想象工廠中的流水線工作站,每個工位(Station&#xff09…

Python從0到100(八十七):CNN網絡詳細介紹及WISDM數據集模型仿真

前言: 零基礎學Python:Python從0到100最新最全教程。 想做這件事情很久了,這次我更新了自己所寫過的所有博客,匯集成了Python從0到100,共一百節課,幫助大家一個月時間里從零基礎到學習Python基礎語法、Pyth…

C++ Primer 迭代器

歡迎閱讀我的 【CPrimer】專欄 專欄簡介:本專欄主要面向C初學者,解釋C的一些基本概念和基礎語言特性,涉及C標準庫的用法,面向對象特性,泛型特性高級用法。通過使用標準庫中定義的抽象設施,使你更加適應高級…

【C++篇】位圖與布隆過濾器

目錄 一,位圖 1.1,位圖的概念 1.2,位圖的設計與實現 1.5,位圖的應用舉例 1.4,位圖常用應用場景 二,布隆過濾器 2.1,定義: 2.2,布隆過濾器的實現 2.3, 應…

VR觸感數據手套:觸感反饋賦予虛擬交互沉浸式體驗

隨著動作捕捉技術的蓬勃發展,動捕數據手套成為了手部動作捕捉與虛擬交互的便捷工具,為人們打開了通往虛擬世界的新大門。在眾多產品中,mHand Pro作為一款多功能兼具的VR動作捕捉數據手套,憑借其卓越的性能,在手部動作捕…

C# 結構體介紹

.NET學習資料 .NET學習資料 .NET學習資料 一、結構體的定義與基本使用 (一)定義結構體 在 C# 中,使用struct關鍵字來創建結構體。它就像是一個模板,能定義出符合特定需求的數據結構。比如,若要跟蹤圖書館中書的信息…

圖像噪聲處理技術:讓圖像更清晰的藝術

在這個數字化時代,圖像作為信息傳遞的重要載體,其質量直接影響著我們的視覺體驗和信息解讀。然而,在圖像采集、傳輸或處理過程中,難免會遇到各種噪聲干擾,如高斯噪聲、椒鹽噪聲等,這些噪聲會降低圖像的清晰…

追逐低空經濟,無人機研學技術詳解

追逐低空經濟,無人機研學技術成為了一個備受關注的領域。以下是對無人機研學技術的詳細解析: 一、無人機研學技術概述 無人機研學技術是以無人機為核心,結合航空科技、電子技術、機械原理等多領域知識的一種教育實踐活動。它旨在通過理論學習…

(done) MIT6.S081 2023 學習筆記 (Day7: LAB6 Multithreading)

網頁:https://pdos.csail.mit.edu/6.S081/2023/labs/thread.html (任務1教會了你如何用 C 語言調用匯編,編譯后鏈接即可) 任務1:Uthread: switching between threads (完成) 在這個練習中,你將設計一個用戶級線程系統中的上下文切…

Kubernetes學習之通過Service訪問Pod

一、基礎概述 1.當通過deployment等controller動態創建和銷毀pod使得每個pod都有自己的ip地址,當controller用新的pod替代發生故障的pod時,新的pod會分配到新的ip地址,那么客戶端如何穩定的找到并訪問pod提供的服務。 2.創建service service從…

【優先算法】專題——前綴和

目錄 一、【模版】前綴和 參考代碼: 二、【模版】 二維前綴和 參考代碼: 三、尋找數組的中心下標 參考代碼: 四、除自身以外數組的乘積 參考代碼: 五、和為K的子數組 參考代碼: 六、和可被K整除的子數組 參…

CDDIS從2025年2月開始數據遷移

CDDIS 將從 2025 年 2 月開始將我們的網站從 cddis.nasa.gov 遷移到 earthdata.nasa.gov,并于 2025 年 6 月結束。 期間可能對GAMIT聯網數據下載造成影響。

谷歌Titans模型論文解析,Transformer迎來變革拐點——DeepSeek能否“接招”?

一、引入 Titans 模型 我們將深入探討谷歌研究院的一篇新論文《Titans: Learning to Memorize at Test Time》,該論文介紹了一種名為 Titans 的新模型架構。 Titans 在緩解 Transformer 二次方成本問題的同時,展現出了令人期待的成果。Titans 模型的設…

新春賀歲,共赴AGI之旅

點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入! 往期精彩文章推薦 季姮教授獨家文字版干貨 | 面向知識淵博的大語言模型 關于AI TIME AI TIME源起于2019年,旨在發揚科學思辨精神,邀請各界人士對人工智能理論、算法和場景應用的本質問題…

Baklib推動數字化內容管理解決方案助力企業數字化轉型

內容概要 在當今信息爆炸的時代,數字化內容管理成為企業提升效率和競爭力的關鍵。企業在面對大量數據時,如何高效地存儲、分類與檢索信息,直接關系到其經營的成敗。數字化內容管理不僅限于簡單的文檔存儲,更是整合了文檔、圖像、…