SDP 與Rtcp-fb

1、sdp介紹

SDP(Session Description Protocol)是一種用于描述多媒體會話的協議,它在會話層起著重要的作用。SDP的主要功能是提供會話的元數據和配置信息,以便參與者能夠協商和建立一致的會話。

以下是SDP在會話層的作用:

  1. 會話描述:SDP提供關于會話的描述,包括會話的起始時間、結束時間、會話名稱、會話發起者等。這些信息幫助參與者了解會話的基本屬性。

  2. 媒體描述:SDP包含了關于會話中每個媒體流的描述,例如音頻、視頻、數據等。媒體描述包括媒體類型、傳輸協議、編解碼器信息、網絡地址等。通過這些描述,參與者可以了解如何傳輸和處理會話中的不同媒體數據。

  3. 媒體協商:SDP允許參與者在會話建立過程中進行媒體協商。通過SDP,參與者可以提供自己支持的媒體編解碼器、傳輸協議和其他參數。參與者可以交換SDP消息以協商媒體流的編碼格式、傳輸選項和其他相關設置,從而達成一致的媒體配置

2、sdp Offer

v=0
o=- 4849970681842256719 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=extmap-allow-mixed
a=msid-semantic: WMS eb733957-3cc6-4765-b18f-e0ed14f25327m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:5ntO
a=ice-pwd:G2W0QvXRMnpYrWhn1aVqJPkh
a=ice-options:trickle
a=fingerprint:sha-256 4D:0C:B5:4C:7E:1E:04:B3:1A:ED:67:B5:F4:B1:D0:00:12:C9:C9:4C:7A:92:63:D4:CE:39:82:94:2C:97:4C:7A
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=sendrecv
a=msid:eb733957-3cc6-4765-b18f-e0ed14f25327 03522f49-55e7-47c1-b260-059b0210459c
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:63 red/48000/2
a=fmtp:63 111/111
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:126 telephone-event/8000
a=ssrc:1267016006 cname:jJhO4vLtJlw1ziFr
a=ssrc:1267016006 msid:eb733957-3cc6-4765-b18f-e0ed14f25327 03522f49-55e7-47c1-b260-059b0210459cm=video 9 UDP/TLS/RTP/SAVPF 96 97 102 103 104 105 106 107 108 109 127 125 39 40 45 46 98 99 100 101 112 113 116 117 118
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:5ntO
a=ice-pwd:G2W0QvXRMnpYrWhn1aVqJPkh
a=ice-options:trickle
a=fingerprint:sha-256 4D:0C:B5:4C:7E:1E:04:B3:1A:ED:67:B5:F4:B1:D0:00:12:C9:C9:4C:7A:92:63:D4:CE:39:82:94:2C:97:4C:7A
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:13 urn:3gpp:video-orientation
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendrecv
a=msid:eb733957-3cc6-4765-b18f-e0ed14f25327 6306e127-1df4-4d8e-b6c2-d860a5dedd74
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 transport-cc
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=rtpmap:102 H264/90000
a=rtcp-fb:102 goog-remb
a=rtcp-fb:102 transport-cc
a=rtcp-fb:102 ccm fir
a=rtcp-fb:102 nack
a=rtcp-fb:102 nack pli
a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f
a=rtpmap:103 rtx/90000
a=fmtp:103 apt=102
a=rtpmap:104 H264/90000
a=rtcp-fb:104 goog-remb
a=rtcp-fb:104 transport-cc
a=rtcp-fb:104 ccm fir
a=rtcp-fb:104 nack
a=rtcp-fb:104 nack pli
a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f
a=rtpmap:105 rtx/90000
a=fmtp:105 apt=104
a=rtpmap:106 H264/90000
a=rtcp-fb:106 goog-remb
a=rtcp-fb:106 transport-cc
a=rtcp-fb:106 ccm fir
a=rtcp-fb:106 nack
a=rtcp-fb:106 nack pli
a=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=106
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:127 H264/90000
a=rtcp-fb:127 goog-remb
a=rtcp-fb:127 transport-cc
a=rtcp-fb:127 ccm fir
a=rtcp-fb:127 nack
a=rtcp-fb:127 nack pli
a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:125 rtx/90000
a=fmtp:125 apt=127
a=rtpmap:39 H264/90000
a=rtcp-fb:39 goog-remb
a=rtcp-fb:39 transport-cc
a=rtcp-fb:39 ccm fir
a=rtcp-fb:39 nack
a=rtcp-fb:39 nack pli
a=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f
a=rtpmap:40 rtx/90000
a=fmtp:40 apt=39
a=rtpmap:45 AV1/90000
a=rtcp-fb:45 goog-remb
a=rtcp-fb:45 transport-cc
a=rtcp-fb:45 ccm fir
a=rtcp-fb:45 nack
a=rtcp-fb:45 nack pli
a=rtpmap:46 rtx/90000
a=fmtp:46 apt=45
a=rtpmap:98 VP9/90000
a=rtcp-fb:98 goog-remb
a=rtcp-fb:98 transport-cc
a=rtcp-fb:98 ccm fir
a=rtcp-fb:98 nack
a=rtcp-fb:98 nack pli
a=fmtp:98 profile-id=0
a=rtpmap:99 rtx/90000
a=fmtp:99 apt=98
a=rtpmap:100 VP9/90000
a=rtcp-fb:100 goog-remb
a=rtcp-fb:100 transport-cc
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=fmtp:100 profile-id=2
a=rtpmap:101 rtx/90000
a=fmtp:101 apt=100
a=rtpmap:112 H264/90000
a=rtcp-fb:112 goog-remb
a=rtcp-fb:112 transport-cc
a=rtcp-fb:112 ccm fir
a=rtcp-fb:112 nack
a=rtcp-fb:112 nack pli
a=fmtp:112 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f
a=rtpmap:113 rtx/90000
a=fmtp:113 apt=112
a=rtpmap:116 red/90000
a=rtpmap:117 rtx/90000
a=fmtp:117 apt=116
a=rtpmap:118 ulpfec/90000
a=ssrc-group:FID 130771272 388261291
a=ssrc:130771272 cname:jJhO4vLtJlw1ziFr
a=ssrc:130771272 msid:eb733957-3cc6-4765-b18f-e0ed14f25327 6306e127-1df4-4d8e-b6c2-d860a5dedd74
a=ssrc:388261291 cname:jJhO4vLtJlw1ziFr
a=ssrc:388261291 msid:eb733957-3cc6-4765-b18f-e0ed14f25327 6306e127-1df4-4d8e-b6c2-d860a5dedd74

會話描述

o=- 4849970681842256719 2 IN IP4 127.0.0.1?

媒體描述

m=audio:音頻媒體流的負載類型在a=rtpmap行中定義。例如,a=rtpmap:111 opus/48000/2表示負載類型111對應于opus編解碼器。
m=video:視頻媒體流的負載類型同樣在a=rtpmap行中定義。例如,a=rtpmap:96 VP8/90000表示負載類型96對應于VP8編解碼器。


3、在提供的SDP中,負載類型102和104都對應于H.264編解碼器,

? 參數配置(fmtp):不同

? ?- 對于負載類型102:`a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f`
? ?- 對于負載類型104:`a=fmtp:104 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f`

? ?注意到這兩個負載類型在`packetization-mode`參數上有所不同。對于負載類型102,設置為1,而對于負載類型104,設置為0。這表示在負載類型102中使用了分片(packetization),而負載類型104中沒有使用分片。

?RTCP反饋(rtcp-fb):是相同的

? ?- 負載類型102的RTCP反饋:`a=rtcp-fb:102 goog-remb`, `a=rtcp-fb:102 transport-cc`, `a=rtcp-fb:102 ccm fir`, `a=rtcp-fb:102 nack`, `a=rtcp-fb:102 nack pli`
? ?- 負載類型104的RTCP反饋:`a=rtcp-fb:104 goog-remb`, `a=rtcp-fb:104 transport-cc`, `a=rtcp-fb:104 ccm fir`, `a=rtcp-fb:104 nack`, `a=rtcp-fb:104 nack pli`

? ?這些RTCP反饋配置是為了支持不同的功能,如擁塞控制(REMB、Transport-CC)、請求關鍵幀(CCM FIR)、重傳(NACK)和重要幀指示(NACK PLI)。這些反饋可能在負載類型102和104之間的具體實現或優先級上有所不同。


4、負載類型102和104之間的分片模式(packetization mode)的差異會對視頻傳輸產生具體的影響。

負載類型102中的分片模式設置為1(packetization-mode=1),表示使用分片模式。這意味著H.264視頻幀在傳輸時將被分割成更小的數據包(也稱為分片)進行傳輸。這種分片模式通常被稱為"Single NAL Unit Mode",即每個RTP包中僅包含一個NAL單元。

相比之下,負載類型104中的分片模式設置為0(packetization-mode=0),表示不使用分片模式。這意味著H.264視頻幀將作為完整的NAL單元進行傳輸,而不進行分割。

具體影響如下:

1. 延遲:使用分片模式(負載類型102)可以將視頻幀拆分為較小的數據包,這可能有助于降低傳輸延遲。較小的數據包可以更快地傳輸和處理,從而減少端到端的延遲。

1. 丟包恢復:在負載類型102中使用分片模式,即每個RTP包僅包含一個NAL單元,如果發生丟包,只丟失單個NAL單元而不會影響整個視頻幀。這使得丟失的單元可以更容易地通過重傳(NACK)或其他恢復機制進行補償。

1. 壓縮效率:分片模式(負載類型102)會增加一些額外的開銷,因為每個RTP包都需要包含NAL單元的頭部和額外的RTP頭部。相比之下,非分片模式(負載類型104)將整個NAL單元作為一個單一的數據包進行傳輸,從而減少了一些額外的開銷。

需要注意的是,分片模式的選擇可能根據網絡條件、傳輸需求和設備兼容性等因素進行調整。因此,在實際應用中,選擇合適的分片模式可以根據具體情況進行評估和調整。


5、rtcp-fb為什么有這么多個

在SDP中,"rtcp-fb"(RTCP Feedback)用于定義RTCP的反饋機制,以支持各種功能,如擁塞控制、容錯機制和質量反饋等。每個"rtcp-fb"參數對應一個特定的功能或反饋類型。

在提供的SDP中,有多個"rtcp-fb"參數是因為不同的視頻編解碼器和傳輸配置可能需要不同的RTCP反饋機制。每個"rtcp-fb"參數都指定了相應的負載類型(payload type),以及支持的具體反饋類型。

例如,"rtcp-fb:96 goog-remb"指定了負載類型96(對應VP8編解碼器),并啟用了Google的擁塞控制反饋(REMB)。"rtcp-fb:102 transport-cc"指定了負載類型102(對應H.264編解碼器),并啟用了傳輸層擁塞控制(Transport-CC)。其他的"rtcp-fb"參數也類似地指定了不同的編解碼器和反饋類型的組合。

這些"rtcp-fb"參數的存在是為了滿足不同編解碼器和傳輸需求的靈活性和互操作性。具體使用哪些"rtcp-fb"參數取決于通信雙方的支持和協商
?

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

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

相關文章

生活隨筆,記錄我的日常點點滴滴.

前言 😘個人主頁:曲終酣興晚^R的小書屋🥱 😕作者介紹:一個莽莽撞撞的🐻 💖專欄介紹:日常生活&往事回憶 😶?🌫?每日金句:被人暖一下就高熱&…

catboost推理開GPU加速

核心設置 model.predict(feature, task_type‘GPU’) 代碼參考 # 訓練配置 params {"catboost": {"n_estimators": 7000,"learning_rate": 0.03,"eval_metric": "AUC","loss_function": "RMSE",&qu…

【sgDragSize】自定義拖拽修改DIV尺寸組件,適用于窗體大小調整

核心原理就是在四條邊、四個頂點加上透明的div,給不同方向提供按下移動鼠標監聽 ,對應計算寬度高度、坐標變化 特性: 支持設置拖拽的最小寬度、最小高度、最大寬度、最大高度可以雙擊某一條邊,最大化對應方向的尺寸;再…

一次Linux中的木馬病毒解決經歷(6379端口---newinit.sh)

病毒入侵解決方案 情景 最近幾天一直CPU100%,也沒有注意看到了以為正常的服務調用,直到騰訊給發了郵件警告說我的服務器正在入侵其他服務器的6379端口,我就是正常的使用不可能去入侵別人的系統的,這是違法的. 排查 既然入侵6379端口,就懷疑是通過我的Redis服務進入的我的系統…

Vue基礎-1.知識導航

知識導航(就問全不全) 當學習 Vue.js 時,除了基本的 HTML、CSS 和 JavaScript 知識外,還有一些其他的技術和語法需要了解,例如 ES6 和 TypeScript。以下是您可能需要學習的一些基礎知識和對應的學習資源,我…

css中變量和使用變量和運算

變量: 語法:--css變量名:值; --view-theme: #1a99fb; css使用變量: 語法:屬性名:var( --css變量名 ); color: var(--view-theme); css運算: 語法:屬性名…

vue3 rouer params傳參的問題

route.params在頁面刷新的時候數據會丟失,所以vue3 棄用了params方式! 但是,vue3又更新了一個替代params的方式:history API import { useRouter } from "vue-router" const router userRouter; // 跳轉路由&#xff…

JDBC封裝與設計模式

什么是 DAO ? Data Access Object(數據存取對象) 位于業務邏輯和持久化數據之間實現對持久化數據的訪問 DAO起著轉換器的作用,將數據在實體類和數據庫記錄之間進行轉換。 ----------------------------------------------------- DAO模式的組成部分 …

數據結構--拓撲排序

數據結構–拓撲排序 AOV? A O V ? \color{red}AOV? AOV?(Activity On Vertex NetWork&#xff0c;?頂點表示活動的?)&#xff1a; ? D A G 圖 \color{red}DAG圖 DAG圖&#xff08;有向?環圖&#xff09;表示?個?程。頂點表示活動&#xff0c;有向邊 < V i , V j …

計算機網絡的性能指標

計算機網絡的性能指標 1. 速率 速率是指數據在網絡中傳送的速度&#xff0c;通常用比特率或數據率來表示&#xff0c;單位是b/s&#xff0c;或bit/s&#xff0c;即比特每秒&#xff0c;或者bps(bit per second)。 速率單位&#xff1a;1 Ybps 10^24 bps(堯), 1 Zbps 10^21…

python中的lstm:介紹和基本使用方法

python中的lstm&#xff1a;介紹和基本使用方法 未使用插件 LSTM&#xff08;Long Short-Term Memory&#xff09;是一種循環神經網絡&#xff08;RNN&#xff09;的變體&#xff0c;專門用于處理序列數據。LSTM 可以記憶序列中的長期依賴關系&#xff0c;這使得它非常適合于各…

深度思考rpc框架面經之四

7 netty機制的一些理解 推薦閱讀&#xff1a; 深度思考netty網絡編程框架 7.1 Netty支持的端口號: Netty可以綁定到任何合法的端口號&#xff0c;這與大多數網絡庫類似。有效的端口范圍是從0到65535&#xff0c;但通常建議使用1024以上的端口&#xff0c;因為0-1023的端口已…

算法與數據結構(二十四)最優子結構原理和 dp 數組遍歷方向

注&#xff1a;此文只在個人總結 labuladong 動態規劃框架&#xff0c;僅限于學習交流&#xff0c;版權歸原作者所有&#xff1b; 本文是兩年前發的 動態規劃答疑篇open in new window 的修訂版&#xff0c;根據我的不斷學習總結以及讀者的評論反饋&#xff0c;我給擴展了更多…

【STM32】高效開發工具CubeMonitor快速上手

工欲善其事必先利其器。擁有一個輔助測試工具&#xff0c;能極大提高開發項目的效率。STM32CubeMonitor系列工具能夠實時讀取和呈現其變量&#xff0c;從而在運行時幫助微調和診斷STM32應用&#xff0c;類似于一個簡單的示波器。它是一款基于流程的圖形化編程工具&#xff0c;類…

面試題:線程池的底層工作原理

線程池的幾個重要的參數&#xff1a; 1、corePoolSize&#xff1a;線程池的核心線程數&#xff08;也是默認線程數&#xff09; 2、maximumPoolSize&#xff1a;最大線程數 3、keepAliveTime&#xff1a;允許的線程最大空閑時間&#xff08;單位/秒&#xff09; 線程池內部是…

鏈表之第二回

歡迎來到我的&#xff1a;世界 該文章收入欄目&#xff1a;鏈表 希望作者的文章對你有所幫助&#xff0c;有不足的地方還請指正&#xff0c;大家一起學習交流 ! 目錄 前言第一題&#xff1a;反轉一個鏈表第二題&#xff1a;鏈表內指定區間反轉第三題&#xff1a;判斷一個鏈表…

opencv+ffmpeg+QOpenGLWidget開發的音視頻播放器demo

前言 本篇文檔的demo包含了 1.使用OpenCV對圖像進行處理&#xff0c;對圖像進行置灰&#xff0c;旋轉&#xff0c;摳圖&#xff0c;高斯模糊&#xff0c;中值濾波&#xff0c;部分區域清除置黑&#xff0c;背景移除&#xff0c;邊緣檢測等操作&#xff1b;2.單純使用opencv播放…

一個案例:Vue2組件化開發組件從入門到入土

1. 環境搭建 1.1. 創建項目 npm install -g vue/clivue create vue_study_todolist1.2. 清空項目代碼 清楚HelloWorld.Vue代碼中的內容。 1.3. 啟動空項目 1.4 項目目標 項目組件實現以下效果 2. 組件拆分代碼 Vue是一個基于組件的框架&#xff0c;允許您將界面拆分成小的…

open cv學習 (五) 圖像的閾值處理

圖像的閾值處理 demo1 # 二值化處理黑白漸變圖 import cv2 img cv2.imread("./img.png", 0) # 二值化處理 t1, dst cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) cv2.imshow("img", img) cv2.imshow("dst", dst) cv2.waitKey() cv2.des…

Golang使用MinIO

最近在使用Golang做了一個網盤項目&#xff08;學習&#xff09;&#xff0c;文件存儲一直保存在本地&#xff08;各廠商提供的oss貴&#xff09;&#xff0c;所以就在思考怎么來處理這些文件&#xff0c;類似的方案很對hdfs、fastdfs&#xff0c;但這其中MinIO是最近幾年比較火…