SDP简介

article/2025/9/28 12:22:18

1 概述

SDP制订的目的是描述多媒体会话,如会话通知、会话邀请或其他发起多媒体会话的形式。

SDP是纯粹的会话的描述格式而不是一个传输协议。它可以使用不同的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME扩展协议的电子邮件以及超文本传输协议(HTTP),SDP并不描述广播地址的分配,或者详细的消息描述,并且SDP也不是为沟通媒体编解码而设计的。

SDP被设计成一个用于通用目的,它可以广泛的用于网络环境和应用。

2 SDP的使用

SDP是一种多媒体会议的会话描述协议,SDP通常的使用模式为:一个客户机定期的向已知的广播地址和端口广播通知报文(announcement Packet),来通知一个会议的会话(conference session)。这是一种广播通知(Multicast Announcements)的形式。主要使用Session Announcement Protocol (SAP)来承载。

文本静荷(The text payload)是一个SDP会话描述。文本静荷的长度不应该超过1 Kbyte。如果使用SAP的话,一个报文只能承载一个会话通知。

除了使用SAP进行广播性的通知,电子邮件和WWW也可以传送会话描述。对于email 和WWW,MIME类型”application/sdp”是必须要使用的。这使为作为会话参与者的WWW客户端和邮件的读者提供的应用程序可以以一种标准的方式自动运行。

注意的是仅仅通过email和WWW通告的多播会话并不包含会话通知的接收者有能力接收这个会话的属性。因为多播会话可能在范围上受局限,连接到WWW服务器或接收电子邮件有可能超出了这一局限。SAP 通告不会有这样的问题。

3 SDP的内容

SDP的目的是传送多媒体会话中的媒体流的信息,以使会话描述的接收者可以参加会话。所以,SDP应该包含足够的信息来发起会话或使接收者加入会话。

SDP应该包含:

  • l 会话名和会话目的
  • l 会话激活的时间
  • l 会话由何种媒体组成
  • l 接收这些媒体的信息(地址,端口,格式等等)
  • l 会话所用到的带宽信息。
  • l 连接信息

通常情况下,SDP应该传送加入会话的足够的信息 (包含可能的特殊的加密钥匙)并且通知未参与者可能要用到的资源。

3.1 媒体信息 Media Information

SDP包含:

  • l 媒体类型(video, audio, etc)
  • l 传输协议(RTP/UDP/IP, H.320, etc)
  • l 媒体格式(H.261 video, MPEG video, etc)

    对于IP多播会话,应该包含:

  • l 媒体的多播地址和媒体的传输端口

    对于IP单播,需要传输以下信息:

  • l 媒体的目的地址和传输端口

    这里的地址和端口与媒体和传输协议的定义有关。缺省情况下,地址和端口是发端的地址和端口及收端的地址和端口,可是,有些媒体可以定义使用这些来为实际的媒体流建立一个控制通道。

3.2 时间信息 Timing Information

会话可以是有时间限制也可以是无时间限制的,但是不管有无时间限制,他们都只能在有限时间内活动。
SDP可以传送:

  • l 一个任意的会话的起止时间范围的列表
  • l 每一个时间段可以循环的时间范围,如”every Wednesday at 10am for one hour”

    这些时间信息是全局一致的,与本地的时间无关。

3.3 私有会话 Private Sessions

可以创建公共会话,也可以创建私有会话。私有会话主要通过经过加密的会话描述来传输。加密的细节主要与传输SDP的机制有关,可以参考SAP。
如果会话通告是私有的,那么就可以使用这个私有的会话通告来传输会话中的媒体解码所需的密码钥匙。其中包含每一个媒体所使用的加密方案。

3.4 预留 Obtaining Further Information about a Session

会话描述应该传输足够的信息,以使用户决定是否参与会话。SDP可以在Universal Resources Identifiers (URIs)加入额外的标记,以提供会话的更多的信息。

3.5 分类Categorisation

当SAP或其他的通告机制传输几种会话描述,那么应该可以过滤这些通告,决定哪些是感兴趣的,那些不是。SDP支持一种会话的分类机制,这是可以自动完成的。

3.6 国际化 Internationalization

SDP规范推荐使用UTF-8 encoding (RFC 2044)中的ISO 10646 字符集,以使不同的语言都可以表达。可是,为了简洁的表述,SDP也可以使用其它的字符集,如ISO 8859-1,国际化仅仅由free-text fields (会话名和背景信息)使用, 并不是所有的SDP都要使用。

4 SDP格式

SDP会话描述全部是基于文本的,使用UTF-8 encoding制定的ISO 10646 字符集,SDP域的名称和属性的名称只使用UTF-8中的US-ASCII子集, 但文本域和属性值可以使用完整的ISO 10646字符集。

选择文本编码形式是基于简便,以便使用不同的传输方式,允许更好的柔韧性和使用基于文本的工具来产生和处理会话描述。 因为给所有的SAP通告的整个带宽的分配是有严格限制的,所以编码尽量做得紧凑。又因为通告可能会通过一些不可靠的传输途径 (如: email)或者被一些中间的缓存服务器损坏,编码就必须被设计成有严格的顺序和格式,这样大多数的错误就会更容易被检测和丢弃。这也可以让没有密码钥匙的用户快速的监测和丢弃有密码保护的通告。

一个会话描述由一个会话级描述(session-level description,整个会话和所有媒体流都接受的细节)和几个媒体级描述(media-level descriptions单个媒体流接受的细节)组成。

一个通告由一个会话级部分(session-level section)和0个或几个媒体级部分(media-level sections)组成。会话级部分由一个‘v=’行开始,后面跟随第一个媒体级部分。媒体描述由‘m=’行开始,后面跟随下一个媒体描述,或者是整个会话描述的结尾。通常情况下,会话级的值是所有媒体的缺省值,除非被媒体级的相同的值覆盖。

当SDP被SAP传输,每个包只允许一个会话描述。当SDP 被其他形式运载,几个SDP会话描述有可能会被组装到一起,(‘v=’行是上一个会话描述的结束,和新的会话描述的开始)。在每一个描述中,一些行是必需的,一些是可选的,但所有的必须按照下面的顺序出现(固定的顺序可以极大地提高错误检测并可以使用简单的解析器),可选行由‘*’标识。

SDP会话描述有以下三部分内容:会话描述、媒体描述、时间描述。
会话描述:
v= (协议版本protocol version)
o= (所有者和会话标识符owner/creator and session identifier).
s= (会话名session name)
i=* (会话信息session information)
u=* (URI的描述 URI of description)
e=* (邮件地址email address)
p=* (电话号码phone number)
c=* (连接信息connection information - not required if included in all media)
b=* (带宽信息bandwidth information)
One or more time descriptions (see below)
z=* (地区时间调整time zone adjustments)
k=* (加密钥匙encryption key)
a=* (0或多个会话属性行zero or more session attribute lines)
Zero or more media descriptions (see below)
时间描述:
t= (会话激活的时间time the session is active)
r=* (0或多个重复时间zero or more repeat times)
媒体描述:
m= (媒体名和传输地址media name and transport address)
i=* (媒体标题media title)
c=* (连接信息connection information - optional if included at session-level)
b=* (带宽信息bandwidth information)
k=* (加密钥匙encryption key)
a=* (0或多个媒体属性行zero or more media attribute lines)
更详细的说明请参考Rfc2327。

下面是国标对SDP协议的描述:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述


http://chatgpt.dhexx.cn/article/koXqktUP.shtml

相关文章

MDK5/KeiluVsion5安装报错“Download of PDSC index file failed”

一、原因一分析: 1.先从字面分析:Download of PDSC index file failed中文意思是PDSC这个索引文件下载错误。首先我们要知道,刚开始安装软件或当你进入Pack Installer界面时,软件会从Keil官网更新下载keil软件所需要的一些芯片包…

Keil5 “Loading PDSC Debug Description Failed for STMicroelectronics STM32Hxxxxxxx”解决办法

最近在学习STM32H750,但是在创建工程的时候就发现了一个问题,如图所示: 虽然不清楚这个问题是否会影响后面编译和烧录,但是感觉有这种警告还是不爽的,所以这里记录一下。 按照这个路径,找到这个pdsc后缀的…

打开Keil.STM32F4xx_DFP.2.13.0提示Cannot copy PDSC file to Download

打开Keil.STM32F4xx_DFP.2.13.0提示Cannot copy PDSC file to “Download” folder 一、问题: keil5安装好后直接安装添加.pack时提示Cannot copy PDSC file to “Download” folder。以为是版本问题或者keil4等在同一个盘中,下了好几个版本又分盘安装&…

sdp详解

SDP文件解析 一、SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协…

STM32烧录错误【PDSC: Sequence Execution failed error-Debug access failed - cannot read address 0xE00FFFE】

背景:一开始可以正常烧录,由于写了个文件的代码,编译正常,但是load的时候突然报错……后来换成了本来可以正常烧录的工程发现依然没办法烧录,遂明白自己把板子搞坏了…… 错误提示: Sequence : DebugDevic…

STM32踩坑:Keil 安装好后创建项目 Loading PDSC Debug Description failed for...

Keil 安装好后创建项目警告 Loading PDSC Debug Description failed for… 昨天重新装了一下系统,重新安装了一次 Keil,新建项目的时候报了一个错,如下图: 点击确定后,在下方输出框中可见下图: 按照第一…

STM32Cube安装固件库出现 invalid zip file or missing expected pdsc file within pack root directory

意思是压缩包无效或者缺少pdsc文件 再下一次压缩包,是否压缩包出现问题 还是这样就看看这里 看这里软件可安装固件库版本,假设我要安装 1.27.0版本就会出现 invalid zip file or missing expected pdsc file within pack root directory 这里需要更新…

PDSCH 相关

1 PDSCH信道处理过程 见PDSCH 处理流程整理https://blog.csdn.net/fanzy_edu/article/details/122469006 在5GNR中,MAC层最多向物理层传输2个TB传输块,且2个TB块只适用于空分复用超过4层的情况。若当前空分复用不超过4层(含4层)&…

打开Keil.STM32F4xx_DFP.2.13.0提示Cannot copy PDSC file to “Download“

打开Keil.STM32F4xx_DFP.2.13.0提示Cannot copy PDSC file to “Download” folder 一、问题: keil5安装好后直接安装添加.pack时提示Cannot copy PDSC file to “Download” folder。以为是版本问题或者keil4等在同一个盘中,下了好几个版本又分盘安装…

KEIL出现Loading PDSC Debug Description failed解决办法

症状 解决办法 一、找到对应库路径 二、取消PDSC文件只读属性 三、查找“Message(2,“Not a genuine ST Device! Abort connection”);”并删除,保存 四、恢复只读属性 完~~~

问题记录:MDK提示 Loading PDSC Debug Descriptionfailed 解决方法

在使用野火STM32F429挑战者_V2开发板时,,使用MDK打开工程后,每次打开都会弹出错误提示。 在浏览网上资料后,在这位兄弟的博文中找到了解决方法。 在Keil ARM的安装目录下找到D:\Keil_v5\ARM\Pack\Keil\STM32F4xx_DFP\2.14.0此路径…

keil报错解决:Loading PDSC Debug Description failed for STMicroelectronics STM32Fxxxxxxx

一、错误现象: 每次打开相应工程都会出现如下错误提示框: Loading PDSC Debug Description failed for STMicroelectronics STM32F072C8Tx Disabling usage of PDSC Debug Description. See Build Output for details. 二、错误分析: Fil…

Keil升级ARM支持包后Loading PDSC Debug Description failed for XXX问题

Loading PDSC Debug Description failed for XXX问题解决方案 Keil 5升级ARM支持包后每次打开都会出现如下图字样的提示,同时在BuildOutput窗口出现文字提示,可按如下方案解决: File : D:\Keil_v5\ARM\PACK\Keil\STM32F1xx_DFP\2.3.0\Keil.…

Loading PDSC Debug Descriptionfailed 解决方法

Loading PDSC Debug Description failed 解决方法 初次使用STM32F4系列器件,在Keil ARM软件会弹出错误提示。 在KEIL ARM安装目录下找到对应的文件夹下的文件Keil.STM32F4xx_DFP.pdsc。 去掉该文件的只读属性,根据Keil的报错找到对应的行,…

报错解决:Loading PDSC Debug Description Failed

前言: 在打开由STM32Cubemx生成的工程之后,给我弹出了一个错误,这里上网搜了一下解决办法,填上这个小坑 正篇开始: 当我们下载了STM32G4系列的包之后,Keil ARM会给我们弹出一个错误提示,Loadin…

(6)Software Pack:生成MDK软件包(包内容介绍和PDSC文件介绍)

1、一个Software Pack里面包含以下内容: .h头文件、.c源文件、PDSC文件、gen_pack脚本、PACK.xsd、PackChk、LICENSE、README.md其中(1)需要修改的 .h头文件、.c源文件是需要封装成库的文件 PDSC文件描述了库里面文件的依赖关系;…

Loading PDSC Debug Description failed for ......

当我们第一次打开一个新的工程文件时,往往MDK5会报一个如下错误 如下图: 直接关掉也行,但是对于有强迫症的朋友来说就比较恶心了,那么该如何消除的错误呢? 一、找到提示中的文件,如图: 二、打开…

Beeline命令行操作

通过上一小节对Hive-Cli的一些操作,可以掌握基本的Hive的语法了,本小节需要讲解一下Beeline客户端的一些操作,其实Beeline的语法和Hive客户端的基本一致,但是Hive自身的客户端只能自己用,别人连不上去,要想…

Linux通过beeline连接远程Hive

Linux需要连接远程Hive,可以使用beeline。 一、确保服务器已经安装配置了java环境; 二、下载hadoop和hive相关的包 wget https://archive.apache.org/dist/hadoop/core/hadoop-2.7.3/hadoop-2.7.3.tar.gz wget https://archive.apache.org/dist/hive/…

由“Beeline连接HiveServer2后如何使用指定的队列(Yarn)运行Hive SQL语句”引发的一系列思考

背景 我们使用的HiveServer2的版本为0.13.1-cdh5.3.2,目前的任务使用Hive SQL构建,分为两种类型:手动任务(临时分析需求)、调度任务(常规分析需求),两者均通过我们的Web系统进行提交…