SDP 与Rtcp-fb

这篇具有很好参考价值的文章主要介绍了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-e0ed14f25327

m=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-059b0210459c

m=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"参数取决于通信双方的支持和协商
 文章来源地址https://www.toymoban.com/news/detail-661165.html

到了这里,关于SDP 与Rtcp-fb的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 三菱FX5U通过CCLINK IE Basic网络控制JET伺服FB功能块使用说明

    FX5U+JET(Basic)FB 功能块一览 ​​​​​​​ 一、功能 MR-JET-G 伺服放大器根据CiA 402驱动器轨迹的Index来分配对象。FX5U PLC通过CCLINK IE Field Basic网络访问被分配的对象,可以驱动伺服电机。 样例FB块可实现轨迹速度、轨迹位置、原点回归以及一些暂停、急停、复位、状态监视、报

    2023年04月19日
    浏览(150)
  • 音视频、网络带宽等常用概念详解

            AAC帧大小为1024个sample: 指AAC编码一般以1024个采样为一个音频帧 。         采样率48khz :指1秒(即1000毫秒) 采集 4 8 0 0 0 次 。         计算1秒有多少帧 :48000 / 1024 = 46.875 = a(用a表示计算结果,多少帧) 。         计算每帧持续时长 :     

    2024年04月16日
    浏览(41)
  • Qt音视频开发42-网络推流(视频推流/本地摄像头推流/桌面推流/网络摄像头转发推流等)

    上次实现的文件推流,尽管优点很多,但是只能对现在存在的生成好的音视频文件推流,而现在更多的场景是需要将实时的视频流重新推流分发,用户在很多设备比如手机/平板/网页/电脑/服务器上观看,这样就可以很方便的将分散的视频流统一集中的流媒体服务器上,然后统

    2024年02月03日
    浏览(46)
  • Golang 流媒体音视频网络传输开源项目-LAL

    lal是开源直播流媒体网络传输项目,主要由三部分组成: lalserver:流媒体转发服务器。类似于 nginx-rtmp-module 等服务,但支持更多的协议,提供更丰富的功能。 demo:一些小应用,比如推、拉流客户端,压测工具,流分析工具,调度示例程序等。类似于ffmpeg、ffprobe等应用。

    2023年04月16日
    浏览(64)
  • RTP和RTCP详解

    在流媒体相关的领域,我们进场会看到RTP/RTCP,其用于流式传输的最常见的码流传输协议,位于传输层之上,控制流媒体码流传输。RTP(Real-time Transport Protocol)实时传输协议,用来为IP网上的语音、图像、元数据等多种需要实时传输的多媒体数据提供端到端的实时传输服务,

    2023年04月09日
    浏览(35)
  • windows10|音视频剪辑|FFMPEG录屏和网络推流源初步的生成

    FFMPEG的功能强大是毋庸置疑的,那么录屏的需求大家在某些时候大家可能是非常需要的,例如,现有的项目需要演示,因此录制一段演示视频;亦或者做内容分发直播的,比如游戏主播,需要录制在玩某个游戏的精彩片段,以创建一个后期的视频素材库; 亦或者通过FFMPEG抓取

    2024年02月20日
    浏览(69)
  • WebRTC | SDP详解

    目录 一、SDP标准规范 1. SDP结构 2. SDP内容及type类型 二、WebRTC中的SDP结构  1. 媒体信息描述 (1)SDP中媒体信息格式 i. “a=rtpmap”属性 ii. “a=fmtp”属性 (2)SSRC与CNAME (3)举个例子 (4)PlanB与UnifiedPlan 2. 网络描述 3. 安全描述 (1)应用级防护 (2)信令级防护 (3)数据级防

    2024年02月12日
    浏览(42)
  • 从新手到Flutter架构师,一篇就够!Flutter-最全开源项目(UI、导航、网络、导航、音视频---)

    pub.dartlang.org/packages/fl… 最好用的路由导航框架。功能:简单的路线导航;函数处理程序(映射到函数而不是路径);通配符参数匹配;查询字符串参数解析;内置常用转换;简单的定制转换创建。 http pub.dartlang.org/packages/ht… github.com/dart-lang/h… http是使用Dart原生编写的网络

    2024年04月17日
    浏览(51)
  • webrtc sdp各字段含义

    WebRTC使用Session Description Protocol(SDP)实现传输协议的协商和描述。以下是SDP中常见的字段及其含义: v:协议版本号 o:会话创建者的标识符、会话ID、和会话版本号 s:会话名称 t:会话时间描述(会话开始和会话结束时间) a:会话级别的属性描述,例如:带宽限制、编解码

    2024年02月10日
    浏览(40)
  • SIP协议-05 SDP协议

    SIP和其他协议一样都有这样的一个要求:在会话开头时两端要有充分的信息交流。使用的两个协议就是定义在RFC 2974中的SAP(Session Announcement Protocol )和定义在RFC 2327的SDP (Session Description Protocol)。简单来说,SAP提供了一种定期宣传多媒体会话,向有意参与会话者传递相关会话信息

    2023年04月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包