SDP对SIP是支撑是主导?还是相互协同?

更新时间:2025-01-24

在探讨SIP协议时,我们不得不提到其重要的配套协议——SDP(会话描述协议)。SDP与SIP的关系犹如引擎与方向盘,SDP为SIP会话提供了关键的描述信息,而SIP则负责传递这些信息并协调会话的建立和管理。

SDP在SIP会话中的作用可以概括为 提供媒体相关信息 。它定义了会话的各种参数,包括媒体类型、编解码格式、网络地址等。这些信息对于SIP会话的成功建立和进行至关重要。 SIP与SDP关系
SDP与SIP的关系主要体现在以下几个方面:
  1. 消息结构 :SDP通常作为SIP消息的一部分,包含在INVITE或200 OK等消息的正文部分。这种嵌套结构使得SIP能够在传递信令的同时,也传递会话的详细描述信息。
  2. 功能互补 :SIP负责会话的建立、修改和终止,而SDP则专注于描述会话的媒体特性。两者的结合实现了完整的会话控制功能。
  3. 动态协商 :SIP消息中的SDP部分可以根据会话的进展进行动态更新。例如,在会话建立阶段,SIP INVITE消息中包含初始的SDP信息;在会话修改阶段,SIP UPDATE消息可以携带更新后的SDP信息。
  4. 媒体能力匹配 :SDP中的媒体描述信息使得SIP能够实现媒体能力的匹配。例如,当一个SIP用户代理收到包含SDP的INVITE消息时,它可以根据SDP中的媒体类型和编解码信息,判断是否能够支持该会话。
  5. 网络参数定义 :SDP定义了会话的网络参数,如IP地址和端口号。这些信息使得SIP能够正确地建立媒体流的连接。
  6. 安全性支持 :SDP可以包含加密密钥等安全相关信息,为SIP会话提供额外的安全保障。
SDP与SIP的协同工作,为多媒体会话的实现提供了全面的解决方案。SDP提供了会话的详细描述,而SIP则负责传递这些信息并协调会话的建立和管理。这种分工合作的模式使得SIP能够灵活地适应各种多媒体应用场景,为IP语音、视频会议等应用提供了坚实的技术基础。

1. SDP在SIP中的角色

会话描述功能

SDP在SIP会话中的会话描述功能是其核心作用之一,为多媒体会话提供了全面而灵活的描述机制。这种描述不仅限于基本的会话参数,还包括了媒体能力、网络参数等关键信息,为SIP会话的成功建立和进行奠定了基础。
=\n其中:\n :属性(大小写敏感),例如 v 代表版本;\n :内容,它是结构化文本,对应的格式和属性关联,采用 UTF8 编码;\n= :符号,两边不能存在空格;\n=* :表示可选。\n三、会话描述参数\nSDP会话描述由一个会话级描述(session_level description)和多个媒体级描述(media_level description)组成。\n会话级(session_level)的作用域是整个会话。其位置是从’v=’行开始到下一个媒体描述为止。\n媒体级(media_level)描述是对单个的媒体流进行描述,其位置是从’m=’行开始到下一个媒体描述为止。\n总之,除非媒体部分重载,会话级的值是各个媒体的缺省默认值(就是说媒体级描述其实也是一个会话级描述,只不过没写出来的会话级描述参数都用的缺省值)。\n1.Version(必选)\n协议版本,不包括次版本号,格式如下:\nv=0\n 2、origion(必选)\n对会话的发起者进行了描述\no=
\n:用户的登录名。如果主机不支持,则为 ”-”。注意:不能含空格。\n::会话ID。在整个会话中,必须是唯一的\n:该会话公告的版本,供公告代理服务器检测同一会话的若干个公告哪个是最新公告.基本要求是会话数据修改后该版本值递增,建议用NTP时戳。\n:网络类型,一般为”IN”,表示”internet”\n
:地址类型,一般为IP4\n
:地址\n3.Session Name(必选)\n会话名称,在整个会话中有且只有一个”s=”\n s=\n4.Connection Data(可选)\n表示媒体的连接信息, 一个会话声明中,会话级描述中必须有”c=”项或者在每个媒体级描述中有一个”c=”项。也有可能在会话级描述和每个媒体级描述中都有”c=”项。\nc=
\n:网络类型,一般为”IN”,表示”internet”\n
:地址类型,一般为IP4。\n :应用程序必须处理域名和ip地址两种情形。单播时,为域名或ip地址,推荐使用域名;多播,为ip地址,且ip后面必须有TTL(取值范围是0-255),地址和TTL决定了多播包被传播的范围。\n 5.Bandwidth(可选)\n带宽信息,单位kilobits per second\nb=:\n:包括两种CT和AS。CT:ConferenceTotal,总带宽。AS:Application-SpecificMaximum,单个媒体带宽的最大值\n6.Times(必选)\n描述了会话的开始时间和结束时间\n t=\n 为NTP时间,单位是秒。假如为零,表示过了时间后会话一直持续。当均为零时表示持久会话。建议start time和stoptime不要设为0。因为不知道此会话的开始和结束时间,增加了调度(scheduling)的难度。\n7.Media Announcements (必选)\n 媒体名称和传输地址。一个媒体描述以”m=”开始到下一个”m=”结束。\n m=\n:表示媒体类型。有\"audio\"、 \"video\"、\"application\"(例白板信息)、\"data\"(不向用户显示的数据)和\"control\"(描述额外的控制通道)。\n:媒体流发往传输层的端口。取决于c=行规定的网络类型和接下来的传送层协议:对UDP为1024-65535;对于RTP为偶数。当分层编码流被发送到一个单播地址时,需要列出多个端口。\n对于RTP,偶数端口被用来传输数据,奇数端口用来传输RTCP包。例:\n/*\n端口49170和49171为第一对RTP/RTCP端口,49172和49173为第二对的端口。传输协议是RTP/AVP,媒体格式为31(媒体格式是rtp头中payload参数对应的)\n*/\nm=video49170/2 RTP/AVP 31 \n:传输协议,与c=行的地址类型有关。两种: RTP/AVP,表示RealtimeTransport Protocol using the Audio/Video profile carried over UDP;\n:媒体格式。对于音频和视频就是在RTP Audio/Video Profile定义的负载类型(payload type)。但第一个为缺省值,分为静态绑定和动态绑定:静态绑定即媒体编码方式与RTP负载类型有确定的一一对应关系,动态绑定即媒体编码方式(如时钟频率,音频信道数等)没有完全确定,需要进一步的属性说明(用rtpmap)。静态绑定举例如下:\n//u_law的PCM编码单信道Audio,采样率8KHZ。在RTPAudio/Video profile中对应的payload type为0\nm=audio49232 RTP/AVP 0\n动态绑定的例子:16位线形编码,采样率为16KHZ,假如我们希望动态RTP/AVP 类型98表示此此流,写法如下:\nm=video49232 RTP/AVP 98 a=rtpmap:98 L16/16000/2\n8.rtpmap(可选)\n0 个或多个会话属性行\na=rtpmap:/[/]\n四、SDP示例\n1.媒体级会话VLC播放264视频的sdp文件\nm=video 1234 RTP/AVP 96\na=rtpmap:96 H264\na=framerate:15\n"},{"seeMoreUrl":"https://zhuanlan.zhihu.com/p/75492311","showName":"知乎专栏","image":"https://picture-search.tiangong.cn/image/thumb/9fb0a0e3250d9d0ea6475f3b2eb8be0e.jpg","snippet":"什么是SDP SDP(Session Description Protocol)是一种通用的 会话描述协议,主要用来描述多媒体会话,用途包括会话声明、会话邀请、会话初始化等。 WebRTC主要在连接建立阶段用到SDP,连接双方通过信令服务交换会话信息,包括音视频 编解码器 (codec)、主机候选地址、网络传输协议 等。","publishDate":"2019-07-28 08:00:00","title":"WebRTC:会话描述协议SDP - 知乎","fullText":"\n什么是SDP\nSDP(Session Description Protocol)是一种通用的会话描述协议,主要用来描述多媒体会话,用途包括会话声明、会话邀请、会话初始化等。\nWebRTC主要在连接建立阶段用到SDP,连接双方通过信令服务交换会话信息,包括音视频编解码器(codec)、主机候选地址、网络传输协议等。\n下面先简单介绍下SDP的格式、常用属性,然后通过WebRTC连接建立过程生成的SDP实例进行进一步讲解。\n协议格式说明\nSDP的格式非常简单,由多个行组成,每个行都是如下格式。\n=\n其中:\n:大小写敏感的一个字符,代表特定的属性,比如v代表版本;\n:结构化文本,格式与属性类型有关,UTF8编码;\n=两边不允许存在空格;\n=*表示是可选的;\n常见属性\n以下面的SDP为例:\nv=0 o=alice 2890844526 2890844526 IN IP4 host.anywhere.com s= c=IN IP4 host.anywhere.com t=0 0 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 m=video 51372 RTP/AVP 31 a=rtpmap:31 H261/90000 m=video 53000 RTP/AVP 32 a=rtpmap:32 MPV/90000\n协议版本号:v=\n格式如下,注意,没有子版本号。\nv=0\n会话发起者:o\n格式如下,其中,username、session-id、nettype、addrtype、unicast-address 一起,唯一标识一个会话。\no=\n各字段含义如下:\nusername:发起者的用户名,不允许存在空格,如果应用不支持用户名,则为-。\nsess-id:会话id,由应用自行定义,规范的建议是NTP(Network Time Protocol)时间戳。\nsess-version:会话版本,用途由应用自行定义,只要会话数据发生变化时(比如编码),sess-version随着递增就行。同样的,规范的建议是NTP时间戳。\nnettype:网络类型,比如IN表示Internet。\naddrtype:地址类型,比如IP4、IV6\nunicast-address:域名,或者IP地址。\n会话名 s=\n必选,有且仅有一个s=字段,且不能为空。如果实在没有有意义的会话名,可以赋一个空格,即s=。\ns=\n连接数据:c=\n格式如下:\nc=\n每个SDP至少需要包含一个会话级别的c=字段,或者在每个媒体描述后面各包含一个c=字段。(媒体描述后的c=会覆盖会话级别的c=)\nnettype:网络类型,比如IN,表示 Internet。\naddrtype:地址类型,比如IP4、IP6。\nconnection-address:如果是广播,则为广播地址组;如果是单播,则为单播地址;\n举例01:\nc=IN IP4 224.2.36.42/127\n举例02:\nc=IN IP4 host.anywhere.com\n媒体描述:m=\nSDP可能同时包含多个媒体描述。格式如下:\nm= ...\n其中:\nmedia:媒体类型。包括 video、audio、text、application、message等。\nport:传输媒体流的端口,具体含义取决于使用的网络类型(在c=中声明)和使用的协议(proto,在m=中声明)。\nproto:传输协议,具体含义取决于c=中定义的地址类型,比如c=是IP4,那么这里的传输协议运行在IP4之上。比如:\nUDP:传输层协议是UDP。\nRTP/AVP:针对视频、音频"},{"seeMoreUrl":"https://blog.csdn.net/weixin_38102771/article/details/121259974","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/e2b190fa70c9504865fd75577b0d98e0.jpg","snippet":"SDP简要解析 1.概述 SDP也是MMUSIC工作组的一个产品,在MBONE内容中用得很多。其目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话。SDP基本上在internet上工作。他定义了会话画描述的统一格式,但并不定义多播地址的分配和SDP消息的传输,也不支持媒体编码方案的协商,这些功能均 ...","publishDate":"2023-08-19 08:00:00","title":"WebRTC SDP详解:协议结构与WebRTC特有扩展-CSDN博客","fullText":"SDP简要解析 1.概述 SDP也是MMUSIC工作组的一个产品,在MBONE内容中用得很多。其目的就是在媒体会话中,传递媒体流信息,允许会话描述的接收者去参与会话。SDP基本上在internet上工作。他定义了会话画描述的统一格式,但并不定义多播地址的分配和SDP消息的传输,也不支持媒体编码方案的协商,这些功能均 ..."},{"seeMoreUrl":"https://blog.csdn.net/wkd_007/article/details/140229038","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/e2b190fa70c9504865fd75577b0d98e0.jpg","snippet":"本文主要介绍 SDP(会话描述协议)的格式、语法结构、描述解析等。_rtsp sdp 【音视频 | RTSP】SDP(会话描述协议)详解 及 ... 以下是关于RTSP协议的详细解释 和抓包分析的相关知识。 一、RTSP协议详解 1. **协议作用**:RTSP主要设计用于服务器向客户 ...","publishDate":"2024-07-09 08:00:00","title":"【音视频 | RTSP】SDP(会话描述协议)详解 及 抓包例子分析","fullText":"本文主要介绍 SDP(会话描述协议)的格式、语法结构、描述解析等。_rtsp sdp 【音视频 | RTSP】SDP(会话描述协议)详解 及 ... 以下是关于RTSP协议的详细解释 和抓包分析的相关知识。 一、RTSP协议详解 1. **协议作用**:RTSP主要设计用于服务器向客户 ..."},{"seeMoreUrl":"https://blog.csdn.net/ms44/article/details/142655359","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/e2b190fa70c9504865fd75577b0d98e0.jpg","snippet":"SDP回话描述协议,它是一种信息格式的描述标准,本身不属于传输协议,但是可以被其他传输协议用来交换必要的信息,用于两个会话实体之间的媒体协商。SDP是用来描述多媒体会话的应用层控制协议,为会话通知,会话邀请和其他形式的多媒体会话初始化等目的提供了多媒体会话描述;它是一个 ...","publishDate":"2024-10-03 08:00:00","title":"第八章 SDP协议_sdp协商-CSDN博客","fullText":"SDP回话描述协议,它是一种信息格式的描述标准,本身不属于传输协议,但是可以被其他传输协议用来交换必要的信息,用于两个会话实体之间的媒体协商。SDP是用来描述多媒体会话的应用层控制协议,为会话通知,会话邀请和其他形式的多媒体会话初始化等目的提供了多媒体会话描述;它是一个 ..."},{"seeMoreUrl":"http://ec.ctiforum.com/jishu/qiye/qiyetongxinjishu/kaiyuantongxin/jishudongtai/568972.html","showName":"ec.ctiforum","image":"http://ec.ctiforum.com/favicon.ico","snippet":"除了我们前面介绍的会话描述和媒体描述说明以外,SDP以支持了特征属性的拓展,通过拓展的属性可以支持更多的属性参数。SDP属性支持了会话级和媒体级属性两种。会话级属性顾名思义,它是针对会话层级的属性。","publishDate":"2020-03-04 08:00:00","title":"完整SIP/SDP媒体协商概论-SDP基础-会话描述说明 - 技术 ...","fullText":"一个媒体描述包含几个媒体描述子项:\n  ,它表示媒体类型,目前定义的媒体类型包括语音,视频,应用程序,和消息。未来可能还有其他类型,用户需要密切关注。\n  ,它是一个传输端口,媒体发送到此端口。此端口依赖于\"c=\"行定义的网络传输协议。其他被媒体应用程序使用的端口,例如RTCP端口需要根据其基准端口来设定相应的端口,或者分开特征属性设置。如果使用了非连续端口或者没有遵从偶数-RTP端口,奇数-RTCP端口的规则处理的话,必须增加一个\"a=rtcp:\"行。应用程序被发送到一个端口,此端口是一个奇数端口,并且出现\"a=rtcp:\"行时,此媒体一定不能从RTP端口减一,应用程序必须发送RTP数据到指定的端口,并且发送RTCP到\"a=rtcp\"属性设定的端口。对于某些应用程序,它们的媒体流通过层级解码发送到单播地址时,它们有必要设定多个传输端口。使用语法和多播地址的方式类似: m=/ …这种场景中,使用的端口依赖于传输协议类型。一些读者可能明白,通常默情况下,RTP使用偶数端口传输数据,它的RTCP使用高一位数的奇数端口控制RTP会话。表示RTP会话数量。例如:\n  m=video 49170/2 RTP/AVP 31\n  这里,媒体会话将设定一个视频媒体类型,端口从49170开始计算,包括两对RTP媒体会话,其中第一对媒体会话是49170端 口(RTP)和 49171 端口(RTCP)。第二对是从49172(RTP)和49173端 口(RTCP)端口。RTP/AVP是传输协议,31是媒体格式(fmt,H261)。以上介绍的是默认环境中使 用的连续端口,如果端口使用的是非连续的端口,需要增加属 性\"a=rtcp:\" 分开独立的端口属性。\n  ,它是传输协议。这里的传输协议依赖于\"c=\"行定义的地址类型。目前支持的主要的几个类型包括:UDP,RTP/AVP,RTP/SAVP。这里专门针对媒体格式设定不同的传输协议是因为同一网络协议时,标准的媒体格式可以通过不同的传输协议来进行传输。这样的设定可以支持不同的网络传输和满足不同检测工具部署。\n  ,它表示一种媒体格式描述。前面第四个子项或者其他后续子项都表示媒体格式。媒体格式描述的解析依赖于子项的值。如果 子项是\"RTP/AVP\"或者\"RTP/SAVP,媒体格式描述会包含RTP payload 类型号码。当给定了一个payload类型列表时(静态方式,从96-127),这表示所有的媒体格式可以适用于此会话中,但是,通常列表中的第一个格式应该作为此会话默认支持格式。如果payload类型列表是动态的payload类型列表的话,SDP使用\"a=rtpmap:\"属性来执行一个映射(从RTP payload 类型号码到媒体解码名称),通过媒体类型号码到媒体解码名称的对应关系来确认payload格式。\"a=fmtp:\" 行可以用来设定具体的媒体格式参数。在很多应用场景中,用户可以看到动态payload不匹配导致的问题,例如Asterisk或者FreeSWITCH的运行环境中,我们经常看到类似的错误:\n  Unsupported payload type received\n  关于动态payload的规范定义,用户可以查阅RFC3551-6。\n  6、SDP属性说明/IANA/ABNF\n  除了我们前面介绍的会话描述和媒体描述说明以外,SDP以支持了特征属性的拓展,通过拓展的属性可以支持更多的属性参数。SDP属性支持了会话级和媒体级属性两种。会话级属性顾名思义,它是针对会话层级的属性。媒体级属性针对媒体属性设置所设置的属性。大家经常遇到的也是一些在应用场景中常见的属性设置,我们这里也不可能做一个非常完整的归纳。因此,因为篇幅所限,笔者只能介绍一下其基本的语法构成:\n  a=tool:\n  具体在一般场景中看到的例如:\n  a=ptime:\n  此特征属性表示一个数据包中的媒体打包时长的特征属性。如果使用RTP映射的话,使用的语法为:\n  a=rtpmap:/ [/]\n  另外,为了规范SDP会话描述中的语法格式,读者也需要了解几个相关的规范,这些规范定义了SDP的语法规则。IANA和ABNF是在SDP规范中需要了解的基本语法,其中,ABNF规定了一些基本的规则,包括空格,大小写,分割行和各种会话描述,媒体描述以及特征属性的完整说明。\n  7、总结\n  在本章节中,笔者重点介绍了关于SDP规范细节的会话描述部分以及相关的拓展属性介绍。笔者通过三个子章节的篇幅,基本介绍了SDP的使用方式和要求,增加针对SDP会话描述和媒体描述的规范细节做了充分说明和拓展介绍,并且对SDP的特征属性已经IANA和ABFN做了一些简单介绍。以上内容都相对比较抽象,读者需要在实际生产环境中不断练习,不断解决排查问题,才能对这些内容有进一步的了解。\n  到此为止,笔者已经完整介绍了SDP的基础和核心语法。这些基础的内容为我们后续章节的介绍打下了一个比较好的基础。在接下来的章节中,我们将首先完整介绍SDP的协商模式。\n  再次说明,因为很多约定用语需要翻译成中文的含义,本文中的翻译风格或者理解不同可能有一些出入,希望读者谅解。\n  参考链接:\n  https://www.rfc-editor.org/rfc/rfc3556\n  https://www.rfc-editor.org/rfc/rfc3890\n  https://www.rfc-editor.org/rfc/rfc4567\n  关注微信公众号:asterisk-cn,获得有价值的Asterisk行业分享\n  Asterisk freepbx FreeSBC技术文档: www.freepbx.org.cn\n  融合通信/IPPBX商业解决方案:www.hiastar.com\n"},{"seeMoreUrl":"https://www.showapi.com/news/article/66d5bc994ddd79f11a0040fe","showName":"showapi","image":"https://www.showapi.com/favicon.ico","snippet":"会话描述协议(SDP)作为一种关键的通信协议,在多媒体会话的初始化、通知以及邀请等方面发挥着重要作用。本文详细介绍了SDP协议的基本概念及其应用场景,并提供了丰富的代码示例,帮助读者深入理解并掌握如何利用SDP进行多媒体会话的描述与管理。","publishDate":"2024-09-02 08:00:00","title":"深入解析会话描述协议(SDP):理论与实践的结合-易源AI ...","fullText":"摘要\n会话描述协议(SDP)作为一种关键的通信协议,在多媒体会话的初始化、通知以及邀请等方面发挥着重要作用。本文详细介绍了SDP协议的基本概念及其应用场景,并提供了丰富的代码示例,帮助读者深入理解并掌握如何利用SDP进行多媒体会话的描述与管理。\n关键词\n会话描述, 多媒体会话, SDP协议, 代码示例, 会话初始化\n一、SDP协议概述\n1.1 SDP协议的基本概念与作用\n在当今数字化的世界里,多媒体通信已经成为人们日常生活中不可或缺的一部分。无论是视频通话、在线会议还是实时游戏,背后都有一个至关重要的协议在支撑——会话描述协议(Session Description Protocol,简称SDP)。SDP协议作为多媒体会话的基础,其重要性不言而喻。它不仅定义了多媒体会话的结构化描述方式,还为会话参与者提供了必要的信息,确保双方能够顺利建立连接并进行有效的通信。\nSDP协议的核心在于其简洁而强大的描述能力。它通过一系列文本行来描述多媒体会话的各种属性,包括媒体类型(如音频、视频)、编码格式、传输地址等。这些信息对于多媒体会话的初始化至关重要。例如,在WebRTC技术中,SDP被广泛应用于创建和交换会话描述,使得不同设备之间能够快速识别对方的能力,并据此调整自身的配置参数,从而实现高质量的音视频通信。\n1.2 SDP在多媒体会话中的角色与重要性\nSDP协议在多媒体会话中的角色是多方面的。首先,它是会话初始化过程中不可或缺的一环。当用户发起一个视频通话请求时,SDP描述符会被用来告知接收方关于此次通话的所有必要信息,如使用的编解码器、端口号等。这一步骤确保了双方设备能够正确地设置网络连接,并准备好接收数据流。\n此外,SDP还在会话通知和邀请方面扮演着重要角色。在大型会议系统中,组织者可以通过发送包含SDP信息的消息来邀请参与者加入会议。这种方式不仅简化了加入流程,还提高了会议的灵活性与效率。例如,在企业级视频会议平台中,SDP可以自动检测与会者的网络环境,并根据实际情况调整视频质量,保证每位参与者都能获得最佳体验。\n总之,SDP协议凭借其强大的描述能力和灵活的应用场景,在现代多媒体通信领域占据了举足轻重的地位。无论是对于开发者还是最终用户而言,深入了解SDP的工作原理及其实现细节都是十分必要的。接下来的部分将通过具体的代码示例进一步探讨如何利用SDP协议来实现高效稳定的多媒体会话管理。\n二、SDP协议的结构与组成\n2.1 SDP消息的格式与字段解释\nSDP消息采用了一种简洁明了的文本格式,每一行代表一个特定的信息单元。这种格式易于人类阅读和解析,同时也便于机器处理。一条典型的SDP消息由多个字段组成,每个字段都有其独特的功能和意义。下面我们将逐一介绍这些字段及其含义:\nv= :版本号字段,表示SDP协议的版本。当前版本为0。\no= :起源者字段,标识会话的创建者及其会话标识符。通常包含用户名、会话ID、会话版本号以及网络类型和地址。\ns=:会话名称字段,用于描述整个会话的主题或目的。\ni=:会话信息字段,提供关于会话的详细信息。\nu= :URI字段,指定一个URI,该URI可以提供有关会话的更多信息。\nc= :连接信息字段,指定了参与会话所需的网络连接信息,如IP地址和端口号。\nt=:时间字段,定义了会话开始和结束的时间。\nm= :媒体字段,描述了会话中涉及的媒体类型(如音频、视频),以及端口、传输协议和编码格式。\na= :属性字段,提供了额外的媒体属性信息,如编解码器参数、带宽限制等。\n通过这些字段的组合,SDP消息能够全面描述一次多媒体会话的所有必要信息。例如,一条简单的SDP消息可能如下所示:\nv=0 o=- 2890844526 2890842807 IN IP4 192.0.2.1 s=SDP Seminar i=A seminar on the session description protocol u=http://www.example.com/seminar/sdp.pdf c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 \n这段SDP消息清晰地展示了会话的基本信息,包括创建者、会话名称、连接信息以及所使用的媒体类型和编解码器等。对于开发人员来说,理解这些字段的具体含义是实现SDP协议的关键所在。\n2.2 SDP协议中的会话描述信息\nSDP协议的核心在于其对多媒体会话的详细描述。这些描述信息包含了会话的所有关键要素,使得参与者能够准确地了解会话的各个方面,并据此做出相应的准备。以下是SDP协议中常见的几种会话描述信息:\n媒体类型 :SDP消息中通过m= 字段指定了会话中涉及的媒体类型,如音频(audio)、视频(video)等。这对于确定会话的性质至关重要。\n编解码器 :通过a=rtpmap: 字段,SDP消息详细列出了支持的编解码器及其参数。例如,a=rtpmap:0 PCMU/8000 表示使用PCMU编解码器,采样率为8000Hz。\n连接信息 :c= 字段提供了会话所需的网络连接信息,包括IP地址和端口号。这对于建立正确的网络连接至关重要。\n时间安排 :t= 字段定义了会话开始和结束的时间,确保所有参与者都能按时加入。\n会话名称与信息 :s= 和i= 字段分别描述了会话的名称和详细信息,帮助参与者更好地理解会话的目的和内容。\n这些描述信息共同构成了SDP协议的核心内容,使得多媒体会话的初始化、通知和邀请过程变得更加高效和可靠。无论是对于开发者还是最终用户,掌握这些描述信息的含义和用途都是非常重要的。通过合理运用SDP协议,我们可以轻松实现高质量的多媒体通信体验。\n三、SDP协议的应用场景\n"},{"seeMoreUrl":"https://wenku.csdn.net/column/27fabpa451","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/b82de37ec1bce3d78ae37ebbda5faad6.jpg","snippet":"媒体描述信息交换:各方通过SDP交换自身的媒体描述信息,包括编解码器、媒体格式、网络地址等。 2. 媒体能力协商:根据各方的媒体能力和偏好,选择最优的编解码器和媒体格式,以确保双方兼容。 3.","publishDate":"2024-02-22 08:00:00","title":"WebRTC中媒体协商(SDP)的基本原理解析 - CSDN文库","fullText":" ## 1.2 WebRTC的核心技术和优势 WebRTC的核心技术包括网络传输协议(如UDP、TCP)、多媒体编解码技术(如VP8、H.264)、网络穿透技术(如ICE、STUN、TURN)等。这些技术的结合,使得WebRTC能够实现低延迟、高质量的实时通信。 与传统的插件化方案相比,WebRTC具有更好的跨平台性和跨设备性,无需安装插件或第三方软件即可在支持WebRTC的浏览器上实现实时通信,极大地降低了用户门槛。同时,WebRTC的开放和标准化也使得其具有更广泛的适用性和生态环境。 接下来,我们将深入介绍WebRTC中媒体协商(SDP)的基本原理和流程。 # 2. SDP(会话描述协议)概述 SDP(Session Description Protocol)是一种用于描述多媒体会话的格式,通常用于媒体协商和传输参数协商。在WebRTC中,SDP扮演着重要的角色,用于描述媒体流的特性和参数。 ### 2.1 SDP的基本概念和作用 SDP是一种文本格式的协议,用于描述多媒体会话的信息,包括会话名称、媒体类型、传输协议、编解码器信息、媒体格式等。SDP的作用主要包括描述媒体参数、协商媒体特性、选择合适的媒体传输路径等。 ### 2.2 SDP的格式和结构 SDP采用文本格式进行描述,通常包括会话层描述和媒体层描述两部分。会话层描述包括会话名称、会话连接信息、会话的时间信息等;媒体层描述包括媒体类型、传输协议、端口信息、编解码器信息等。 ### 2.3 SDP在WebRTC中的应用 在WebRTC中,SDP被用于进行媒体协商,包括描述本地媒体参数、处理远端媒体参数、协商媒体参数等。通过SDP,WebRTC可以实现对等连接的建立和媒体传输参数的协商。 希望以上内容符合您的要求。接下来将会按照该章节内容进行详细的文章撰写。 # 3. 媒体协商的基本流程 媒体协商在WebRTC中扮演着至关重要的角色,它负责协调参与会话的各方之间的媒体参数和特性,以确保顺利的多媒体通信。在这一章节中,我们将深入探讨媒体协商的基本流程,包括其定义、重要性以及与SDP的关系。 #### 3.1 媒体协商的定义和重要性 媒体协商指的是通过交换媒体描述信息来协调会话中各方的媒体资源、编解码器、传输协议等参数的过程。在WebRTC中,媒体协商的成功与否直接影响着通信质量和稳定性。 #### 3.2 SDP在媒体协商中的角色 SDP作为会话描述协议,在WebRTC中被用于描述媒体会话的参数和约束条件。在媒体协商过程中,SDP被用于交换各方的媒体描述信息,以便进行协商和达成一致。 #### 3.3 媒体协商的基本流程步骤解析 媒体协商的基本流程通常包括以下步骤: 1. 媒体描述信息交换:各方通过SDP交换自身的媒体描述信息,包括编解码器、媒体格式、网络地址等。 2. 媒体能力协商:根据各方的媒体能力和偏好,选择最优的编解码器和媒体格式,以确保双方兼容。 3. 媒体传输协商:协商传输参数和媒体传输方式,包括传输协议、传输地址、带宽等。 4. 安全性协商:确定媒体通信的加密方式和安全设置,以保障通信的安全性和隐私。 以上是媒体协商的基本流程步骤,通过这些步骤,各方可以就媒体会话的参数达成一致,从而实现稳定、高质量的多媒体通信。 希望这些内容能够对您有所帮助。接下来,我们将继续深入探讨SDP的基本参数解析。 # 4. SDP的基本参数解析 SDP(会话描述协议)在 WebRTC 中扮演着至关重要的角色,它包含了媒体协商所需的各种参数信息。在本章中,我们将深入解析 SDP 中的基本参数,包括媒体描述、媒体属性、连接信息、带宽信息、加密和安全设置等内容,帮助读者更好地理解和应用 SDP。 #### 4.1 SDP中的媒体描述和媒体属性 在 SDP 中,媒体描述部分包含了媒体流的相关信息,如媒体类型(音频、视频等)、传输协议(RTP/UDP、RTP/SAVPF 等)、端口号等。而媒体属性则用于描述媒体流的特性,如编解码器、帧率、分辨率等。通过媒体描述和媒体属性,可以确保媒体数据在双方之间正确传输和解析。 ```python # 示例:SDP中媒体描述和媒体属性示例 m=video 51372 RTP/SAVPF 96 98 a=rtpmap:96 H264/90000 a=rtpmap:98 VP8/90000 a=fmtp:98 max-fs=12288;max-fr=60 ``` 在上面的示例中,我们可以看到媒体描述为视频流(video)的 RTP/SAVPF 协议,端口为 51372,支持 H.264 和 VP8 编解码器。媒体属性中包含了对 VP8 编解码器的参数设置。 #### 4.2 SDP中的连接信息和带宽信息 连接信息描述了媒体流的传输地址和网络类型,通过连接信息可以建立媒体流的传输路径。带宽信息则用于指定媒体流传输的带宽限制,确保传输过程中的稳定性和流畅性。 ```java // 示例:SDP中连接信息和带宽信息示例 c=IN IP4 203.0.113.1 b=AS:512 ``` 上述示例中,连接信息指定了传输地址为 203.0.113.1,IPv4 类型。带宽信息设置了媒体流的平均带宽为 512Kbps。 #### 4.3 SDP中的加密和安全设置 为确保通信安全,SDP 中还包含了加密和安全设置,如指定加密算法、安全密钥等。这些信息对于 WebRTC 中的通信加密至关重要,保障通信数据的机密性和完整性。 ```javascript // 示例:SDP中加密和安全设置示例 a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:7KEOpk2JhIwbgSzRz1vECwzvy3tA1yCxfnRVjFh3 a=fingerprint:SHA-256 8D:8C:1B:F4:B8:D9:BB:D3:83:5E:68:7F:E2:76:24:B5:FC:9A:44:4F:AO ``` 在上面的示例中,我们可以看到加密算法为 AES_CM_128_HMAC_SHA1_80,安全密钥为一串随机的字符串。指纹信息(fingerprint)用于验证通信双方的身份和数据完整性。"},{"seeMoreUrl":"https://segmentfault.com/a/1190000038280660","showName":"segmentfault","image":"https://segmentfault.com/favicon.ico","snippet":"这里提醒读者,为了更好地支持IPv4,在RFC3264的基础上,RFC6157对媒体描述管理进行了更新。因此,如果读者涉及了在IPv6环境中关于SDP中的媒体描述,读者可以查阅RFC 6157-4.1章节的细节。如果读者对SDP协商模式有兴趣的","publishDate":"2020-11-25 08:00:00","title":"完整SIP/SDP媒体协商概论-SDP协商模式详解 - SegmentFault ...","fullText":"这里提醒读者,为了更好地支持IPv4,在RFC3264的基础上,RFC6157对媒体描述管理进行了更新。因此,如果读者涉及了在IPv6环境中关于SDP中的媒体描述,读者可以查阅RFC 6157-4.1章节的细节。如果读者对SDP协商模式有兴趣的"},{"seeMoreUrl":"https://blog.csdn.net/uianster/article/details/125902301","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/e2b190fa70c9504865fd75577b0d98e0.jpg","snippet":"SDP(Session Description Protocol)是一个用来描述多媒体会话的应用层控制协议,它是一个基于文本的协议,用于会话建立过程中的媒体类型和编码方案的协商等.它不属于传输协议,它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子 ...","publishDate":"2023-07-23 08:00:00","title":"流媒体:SDP协议介绍-CSDN博客","fullText":"SDP(Session Description Protocol)是一个用来描述多媒体会话的应用层控制协议,它是一个基于文本的协议,用于会话建立过程中的媒体类型和编码方案的协商等.它不属于传输协议,它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子 ..."},{"seeMoreUrl":"https://blog.csdn.net/szkbsgy/article/details/124930070","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/e2b190fa70c9504865fd75577b0d98e0.jpg","snippet":"完整SIP/SDP媒体协商 概论SDP基础使用要求 完整SIP/SDP媒体协商概论SDP基础会话描述说明 完整 ... 通过SDP,用户代理(如VoIP电话、媒体服务器等)可以协商双方的媒体能力,确保双方都能支持相同的编码、解码方式和传输参数,从而实现顺畅的 总结 ...","publishDate":"2022-05-23 08:00:00","title":"VoIP之SDP说明及媒体协商_invite sdp-CSDN博客","fullText":"完整SIP/SDP媒体协商 概论SDP基础使用要求 完整SIP/SDP媒体协商概论SDP基础会话描述说明 完整 ... 通过SDP,用户代理(如VoIP电话、媒体服务器等)可以协商双方的媒体能力,确保双方都能支持相同的编码、解码方式和传输参数,从而实现顺畅的 总结 ..."},{"seeMoreUrl":"https://blog.csdn.net/qq_39071972/article/details/116604642","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/e2b190fa70c9504865fd75577b0d98e0.jpg","snippet":"Session Description Protocol(简称是SDP)全称是会话描述协议,此协议用来创建一种协商机制,这种协商机制是由呼叫控制协议创建的介于两个呼叫用户之间的会话进行,协商机制支持的四大协商方式主要包括:功能协商性能协商语音和视频的安全设置协商在多媒体会议中的数据协商为了说明SDP的具体内容 ...","publishDate":"2024-11-27 08:00:00","title":"完整SIP/SDP媒体协商概论_完整sip sdp媒体协商概论-CSDN博客","fullText":"Session Description Protocol(简称是SDP)全称是会话描述协议,此协议用来创建一种协商机制,这种协商机制是由呼叫控制协议创建的介于两个呼叫用户之间的会话进行,协商机制支持的四大协商方式主要包括:功能协商性能协商语音和视频的安全设置协商在多媒体会议中的数据协商为了说明SDP的具体内容 ..."},{"seeMoreUrl":"https://segmentfault.com/a/1190000040424017","showName":"segmentfault","image":"https://segmentfault.com/favicon.ico","snippet":"在实际的应用过程中,通信双方可以使用 HTTP、WebSocket、DataChannel 等传输 ... 了协商之后的媒体能力和其他信息(ICE、DTLS fingerprint,SSRC 等),要注意这个过程中只有媒体能力是协商的,也就是发起方和接收方共同支持的媒体能力,例如支持的 ...","publishDate":"2021-07-29 08:00:00","title":"音视频 - 玩转 WebRTC 通信:一文读懂 SDP 协议 - 个人文章 ...","fullText":"在实际的应用过程中,通信双方可以使用 HTTP、WebSocket、DataChannel 等传输 ... 了协商之后的媒体能力和其他信息(ICE、DTLS fingerprint,SSRC 等),要注意这个过程中只有媒体能力是协商的,也就是发起方和接收方共同支持的媒体能力,例如支持的 ..."},{"seeMoreUrl":"https://blog.csdn.net/aflyeaglenku/article/details/52290086","showName":"CSDN","image":"https://picture-search.tiangong.cn/image/thumb/e2b190fa70c9504865fd75577b0d98e0.jpg","snippet":"文章浏览阅读1.3w次。附录F中,对SDP各字段并没有全部说明详细,笔者根据第9章各相关小节,对SDP的字段做一下整理。理解不到位之处,还请读者朋友不吝斧正!回话描述字段:v=0 --sdp协议版本o=64010000002020000001 0 0 IN IP4 172.18.16 ...","publishDate":"2024-12-11 08:00:00","title":"GB28181开流SDP各个字段汇总整理_sdp u字段-CSDN博客","fullText":"文章浏览阅读1.3w次。附录F中,对SDP各字段并没有全部说明详细,笔者根据第9章各相关小节,对SDP的字段做一下整理。理解不到位之处,还请读者朋友不吝斧正!回话描述字段:v=0 --sdp协议版本o=64010000002020000001 0 0 IN IP4 172.18.16 ..."},{"seeMoreUrl":"https://www.cnblogs.com/idignew/p/7249056.html","showName":"博客园","image":"https://picture-search.tiangong.cn/image/thumb/b214339c7ba25629318d8f3e9ffc1af4.jpg","snippet":"一、SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展","publishDate":"2017-07-28 08:00:00","title":"SDP协议介绍 - SimenLiang - 博客园","fullText":"\n一、SDP协议介绍\nSDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息。媒体协商这一块要用RTSP来实现.\n二、SDP协议格式\nSDP描述由许多文本行组成,文本行的格式为=,是一个字母,是结构化的文本串,其格式依而定。\n<type>=[CRLF]\n常见的fields有:\n三、SDP协议例子:\n下面是一个helix 流媒体服务器的RTSP协议中的SDP协议:\nv=0 //SDP version\n// o field定义的源的一些信息。其格式为:o=\no=- 1271659412 1271659412 IN IP4 10.56.136.37 s=\ni= //session的信息\nc=IN IP4 0.0.0.0 //connect 的信息,分别描述了:网络协议,地址的类型,连接地址。\nc=IN IP4 0.0.0.0\nt=0 0 //时间信息,分别表示开始的时间和结束的时间,一般在流媒体的直播的时移中见的比较多。\na=SdpplinVersion:1610641560 //描述性的信息\na=StreamCount:integer;2 //用来描述媒体流的信息,表示有两个媒体流。integer表示信息的格式为整数。\na=control:*\na=DefaultLicenseValue:integer;0 //License信息\na=FileType:string;\"MPEG4\" ////用来描述媒体流的信息说明当前协商的文件是mpeg4格式的文件\na=LicenseKey:string;\"license.Summary.Datatypes.RealMPEG4.Enabled\"\na=range:npt=0-72.080000 //用来表示媒体流的长度\nm=audio 0 RTP/AVP 96 //做为媒体描述信息的重要组成部分描述了媒体信息的详细内容:表示session的audio是通过RTP来格式传送的,其payload值为96传送的端口还没有定。\nb=as:24 //audio 的bitrate\nb=RR:1800\nb=RS:600\na=control:streamid=1 //通过媒体流1来发送音频\na=range:npt=0-72.080000 //说明媒体流的长度。\na=length:npt=72.080000\na=rtpmap:96 MPEG4-GENERIC/32000/2 //rtpmap的信息,表示音频为AAC的其sample为32000\na=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210 //config为AAC的详细格式信息\na=mimetype:string;\"audio/MPEG4-GENERIC\"\na=Helix-Adaptation-Support:1\na=AvgBitRate:integer;48000\na=HasOutOfOrderTS:integer;1\na=MaxBitRate:integer;48000\na=Preroll:integer;1000\na=OpaqueData:buffer;\"A4CAgCIAAAAEgICAFEAVABgAAAC7gAAAu4AFgICAAhKIBoCAgAEC\"\na=StreamName:string;\"Audio Track\"\n下面是video的信息基本和audio的信息相对称,这里就不再说了。\nm=video 0 RTP/AVP 97\nb=as:150\nb=RR:11250\nb=RS:3750\na=control:streamid=2\na=range:npt=0-72.080000\na=length:npt=72.080000\na=rtpmap:97 MP4V-ES/2500\na=fmtp:97 profile-level-id=1;\n"},{"seeMoreUrl":"https://www.cnblogs.com/orange-CC/p/14340181.html","showName":"博客园","image":"https://picture-search.tiangong.cn/image/thumb/b214339c7ba25629318d8f3e9ffc1af4.jpg","snippet":"SDP简介 SDP全称是Session Description Protocol,即会话描述协议,用于会话各方间的媒体协商。 什么是会话? 视频聊天、语音通话、视频会议等等都算会话。 为什么要媒体协商? 参加会话各用户环境、配置不一致,需要协商出兼容最优的解决方案。 SDP长","publishDate":"2021-01-28 08:00:00","title":"WebRTC会话描述协议(SDP)详解 - orange-C - 博客园","fullText":"\n转载:http://ddrv.cn/a/590229\nSDP简介\nSDP全称是Session Description Protocol,即会话描述协议,用于会话各方间的媒体协商。\n什么是会话? 视频聊天、语音通话、视频会议等等都算会话。\n为什么要媒体协商? 参加会话各用户环境、配置不一致,需要协商出兼容最优的解决方案。\nSDP长什么样子? 一段多文本行,每行格式均为=。\n看一下SDP具体是怎样的,复制以下代码到控制台 Enter~\n?\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\nconst PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;\nconst peer = new PeerConnection();\nnavigator.mediaDevices.getUserMedia({ video: true, audio: true })\n .then(stream => {\n stream.getTracks().forEach(track => {\n peer.addTrack(track, stream);\n });\n peer.createOffer().then(e => {\n console.log(e.sdp);\n })\n })\n .catch(e => alert('无法获取摄像头信息'));\n  \nSDP信息详解\n协议版本(v=)\nv=0\nSDP的版本(Protocol version number)。当前规范版本为0\n来源(o=)\no=\n会话所有者有关的参数(Owner/creator and session identifier)。\n 会话发起者的名称。如果不提供则用”-“表示,用户名不能包含空格;\n 主叫方的会话标识符;\n 会话版本号。用0标识的居多;\n 网络类型。IN表示Internet网络类型,目前仅定义该网络类型;\n 地址类型。目前支持IPV4和IPV6两种地址类型;\n 会话发起者的IP地址。\n会话名称(s=)\ns=\n本次会话的标题或会话的名称(Session name)。\n计时(t=)\nt=\n会话的起始时间和结束时间(Time session starts and stops)。\n媒体说明(m=)\nm=/ ...\n媒体行,描述了发送方所支持的媒体类型等信息(Media information)。\n 媒体名称(audio/video)。表示包含音频类型或视频类型;\n/ 流传输端口号。表示在本地端口xxxx上发送音频/视频流;\n 流传输协议。举例说明:\n

下一篇

百度文心一言(如何使用它进行客户服务)

最新动态

百度文心一言(如何使用它进行客户服务)

文心一言是一个聊天机器人,可以用类似人类的回答回答各种问题和提示。百度开发了该工具,并于2023年3月16日向公众免费发布。聊天机器人位于百度的百度-3.5LLM之上,这是一种生成型人工智能技术,其开发人员根据互联网上数十亿页的文本进行训练... ...

相关内容

如何将SIP网络广播音柱接入现有网络广播系统

如何将SIP网络广播音柱接入现有网络广播系统

SIP网络广播音柱是一种融合了先进数字音频处理技术和网络通信技术的智能广播设备。......

最新动态

2025-02-14

SIP电话办理流程中的关键步骤有哪些?

SIP电话办理流程中的关键步骤有哪些?

SIP电话是一种基于会话发起协议(SIP)的通信设备,它利用互联网协议(IP)进......

通信百科

2025-02-08

SIP服务器配置过程中需要注意哪些关键参数?

SIP服务器配置过程中需要注意哪些关键参数?

SIP服务器是IP网络中实现会话初始化协议(SIP)功能的关键设备。它主要负责 ......

最新动态

2025-02-08