SDP协议是什么,详解SDP协议

news2024/11/26 10:38:16

一、SDP协议简介

 

SDP(Session Description Protocol)是一种会话描述协议,用于描述多媒体会话的参数。它是一种文本协议,通常用于VoIP(Voice over Internet Protocol)和视频会议等应用中。SDP协议定义了一种标准的格式,用于描述会话的各种参数,包括媒体类型、媒体格式、媒体地址等。

SDP协议最初由IETF(Internet Engineering Task Force)在RFC 2327中定义,后来又在RFC 4566中进行了更新和扩展。SDP协议的主要作用是在会话开始前,将会话的参数信息传递给参与者,以便他们能够正确地配置和连接到会话。

二、SDP协议格式

SDP协议的格式由一系列的行组成,每行以一个字母开头,表示该行的类型。SDP协议定义了一些标准的行类型,包括v、o、s、c、t、m等。下面是一个简单的SDP协议格式示例:

v=0
o=- 123456 7890 IN IP4 192.168.1.1
s=My Session
c=IN IP4 192.168.1.1
t=0 0
m=audio 5004 RTP/AVP 0 8 18

在上面的示例中,v表示协议版本,o表示会话的起始者和会话ID,s表示会话名称,c表示连接信息,t表示会话的时间信息,m表示媒体信息。

三、会话描述参数

SDP协议定义了一系列的会话描述参数,用于描述会话的各种属性和参数。下面是一些常用的会话描述参数:

1.Version(必选)

Version参数用于指定SDP协议的版本号,当前版本为0。

2、origion(必选)

Origin参数用于指定会话的起始者和会话ID。它包括用户名、会话ID、版本号、网络类型和地址类型等信息。

3.Session Name(必选)

Session Name参数用于指定会话的名称,通常是一个简短的字符串。

4.Connection Data(可选)

Connection Data参数用于指定媒体流的连接信息,包括网络类型、地址类型和地址等信息。

5.Bandwidth(可选)

Bandwidth参数用于指定媒体流的带宽,通常以bps为单位。

6.Times(必选)

Times参数用于指定会话的时间信息,包括会话的起始时间和结束时间。

7.Media Announcements (必选)

Media Announcements参数用于指定媒体流的类型、格式和地址等信息。

8.rtpmap(可选)

rtpmap参数用于指定媒体流的编码格式和参数,通常以RTP(Real-time Transport Protocol)为基础。

四、SDP示例

下面是一些常见的SDP示例,用于描述不同类型的会话和媒体流。

1.媒体级会话VLC播放264视频的sdp文件

v=0
o=- 0 0 IN IP4 127.0.0.1
s=VLC media player
c=IN IP4 127.0.0.1
t=0 0
a=tool:vlc 2.2.4
m=video 5004 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001F;sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM48gA==
a=control:streamid=0

2.媒体级会话VLC播放g711音频的sdp文件

v=0
o=- 0 0 IN IP4 127.0.0.1
s=VLC media player
c=IN IP4 127.0.0.1
t=0 0
a=tool:vlc 2.2.4
m=audio 5004 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=control:streamid=0

3.点播mp4文件,MS_H返回给终端的sdp信息

v=0
o=- 0 0 IN IP4 127.0.0.1
s=Session streamed by "MS_H"
i=sample.mp4
c=IN IP4 0.0.0.0
t=0 0
a=tool:libavformat 57.56.101
m=video 0 RTP/AVP 96
b=AS:1000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001F;sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM48gA==
a=control:trackID=1
m=audio 0 RTP/AVP 97
b=AS:128
a=rtpmap:97 MPEG4-GENERIC/44100/2
a=fmtp:97 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210
a=control:trackID=2

4.直播

v=0
o=- 0 0 IN IP4 127.0.0.1
s=Live Stream
c=IN IP4 0.0.0.0
t=0 0
a=tool:libavformat 57.56.101
m=video 0 RTP/AVP 96
b=AS:1000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001F;sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM48gA==
a=control:trackID=1
m=audio 0 RTP/AVP 97
b=AS:128
a=rtpmap:97 MPEG4-GENERIC/44100/2
a=fmtp:97 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210
a=control:trackID=2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/662714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自监督论文阅读 1】SimCLR

文章目录 一、摘要二、引言三、方法3.1 主要框架3.2 训练一个大的batchsize 四、数据增强4.1 实验一 数据增强的组合对学习好的特征表达非常重要4.2 对比学习需要更多的数据增强 五、一些实验证明5.1 大模型更有利于无监督对比学习5.2 非线性层的预测头增加了特征表示5.3可调节…

使用vtkWindow报错Debug Assertion Failed ... mfc140d.dll

环境:VS2022VTK7.1.1,还使用了MFC 报错信息 Debug Assertion Failed! Program: C:\WINDOWS SYSTEM32 mfc140d.dll File. D: a work 1 s src vctools VC7Libs ship ATLMFCnclude afxwin1.inLine: 21 For information on how your program can cause an a…

2023年智能优化算法之——能量谷优化器 Energy valley optimizer(EVO),附MATLAB代码和文献

能量谷优化器(EVO)是一种新的元启发式算法,它的算法是受到了关于稳定性和不同粒子衰变模式的先进物理原理的启发。在文献中,作者与CEC函数中最先进的算法进行了比较,并且证明该算法确实很强劲。算法原理大家请参考文献。 [1] Azizi M , Aic…

考研算法第27天:直接插入排序 【插入排序】

插入排序算法介绍 老规矩我们来模拟一遍样例: 其思想简单来说就是将旧数组的每个数放入到新数组中 但是每次放入都要遵守下面的原则:如果前面有比当前数大的数便把它放到当前数的后面去。 过程如下面这张图 https://ts1.cn.mm.bing.net/th/id/R-C.1d…

GPT-4满分通过MIT本科数学考试!这套提示词火了

量子位 | 公众号 QbitAI 万万想不到啊,MIT数学考试,被GPT-4攻破了?! 突然有人在最新论文工作中高调宣布: GPT-4在MIT的数学和EECS(电气工程和计算机科学系)本科学位考试中,表现出…

电商超卖,从业务到设计

编辑导语:超卖这一概念的定义可以从不同层面进行阐述,比如平台层面、渠道层面、仓库层面等。而假设因超卖导致订单难以履行,则容易让用户体验“打折”。为什么有时电商超卖的现象会发生?可以从哪些角度来降低超卖导致的风险&#…

Stable diffusion WebUI LoRA使用教学

在Stable Diffusion网络中,通常会下载社区中的LoRA模型,并对CLIP模型和Unet的CrossAttention的线性层进行微调。相应的被微调的层会有 lora_up 和 lora_down 两组参数,分别对应上述的 A 和 B 矩阵。参考高手的代码,只需根据LoRA保…

【Unity Shader】从入门到感慨万千(1)基本概念:什么是网格?什么是材质和Shader?

文章目录 一、什么是网格(Mesh)?二、什么是MeshFilter(网格过滤器)?三、什么是MeshRenderer(网格渲染器)?四、什么是材质(Material)?五、什么是Shader(着色器)?一、什么是网格(Mesh)? 如上图,模型的三角形面就叫做网格(Mesh),它的本质是一堆顶点数据的规则…

ShowMeBug与极狐(GitLab)战略合作,推动DevOps人才高效甄选

近日,ShowMeBug与领先的开放式一体化安全DevOps平台提供商极狐(GitLab)达成深度合作协议,双方将致力于共同打造具有行业强认可度以及高实用性的DevOps岗位题型,助力企业通过更为专业、标准的技术笔试题型,提升DevOps岗位人才筛选效…

关于智能指针的补充1(share_ptr、weak_ptr 相互配合使用)

关于智能指针的补充1 1.share_ptr存在的问题2.weak_ptr2.1介绍2.2weak_ptr 核心代码逻辑 1.share_ptr存在的问题 先看这样一段代码 #define _CRT_SECURE_NO_WARNINGS using namespace std; #include"smartptr.h" struct ListNode {GXPYY::shared_ptr<ListNode&g…

Unity核心3——2D物理系统

一、刚体 Rigid Body 2D ​ 刚体是物理系统中用于帮助我们进行模拟物理碰撞中力的效果的 ​ 2D 物理系统中的刚体和 3D 中的刚体基本是一样的&#xff0c;最大的区别是对象只会在 XY 平面中移动&#xff0c;并且只在垂直于该平面的轴上旋转 ​ 不同于 3D 刚体&#xff0c;2D…

【Vue2】PaginationSelect 带分页和搜索功能的下拉列表组件

1. 效果图 2. 组件完整代码 <template><div class"pagination-select"><el-selectv-model"selectedValue":style"{ width: width || 100% }"v-bind"attrs":remote-method"remoteMethod":loading"loadi…

【好书精读】网络是怎样连接的 向 DNS 服务器查询 Web 服务器的 IP 地址

&#xff08;该图由AI制作 学习AI绘图 联系我&#xff09; 目录 IP 地址的基本知识 实际的 IP 地址 域名和 IP 地址并用的理由 Socket 库提供查询 IP 地址的功能 通过解析器向 DNS 服务器发出查询 解析器的内部原理 IP 地址的基本知识 生成 HTTP 消息 根据域名查询 …

(嵌入式)TMS5700432BPZQQ1R、SPC58EC80E5QMC1X微控制器IC中文数据

TMS5700432BPZQQ1R 32位RISC闪存微控制器是设计用于安全系统的高性能汽车级微控制器。其采用的安全架构包括锁步中的双CPU、CPU和内存内置自检 (BIST) 逻辑、闪存和数据SRAM上的ECC、外设存储器上的奇偶校验以及外设I/O上的回路功能。TMS570LS0432/0332器件集成了ARM Cortex-R4…

孤立森林详解

基本概念 孤立森林&#xff08;Isolation Forest&#xff09;是一种基于异常检测的机器学习算法&#xff0c;用于识别数据集中的异常点。孤立森林算法在异常检测、网络入侵检测、金融欺诈检测等领域有广泛应用&#xff0c;并且在处理大规模数据和高维数据时表现出色。孤立森林…

了解不一样的Sui NFT标准

Sui的设计赋予非同质化Token&#xff08;NFT&#xff09;在灵活性、组合性和可交易性方面独特的属性&#xff0c;使NFT不仅仅代表指向图像的数字记录&#xff0c;还可以成为图像本身。这些NFT可以被修改或与其他NFT合并&#xff0c;以创造出可扩展的艺术作品。同时&#xff0c;…

分布式事务解决方案Seata谁建议你用的?

一、名词解释&#xff1a; TC (Transaction Coordinator) - 事务协调者 维护全局/分支事务的状态&#xff0c;驱动全局事务的提交与回滚 TM (Transaction Manager) - 事务管理器 定义全局事务的范围&#xff1a;开启、提交、回滚全局事务 RM (Resource Manager) - 资源管理…

云原生之深入解析如何使用Prometheus扩展Kubernetes调度器

一、kubernetes 调度配置 ① Scheduler Configuration kube-scheduler 提供了配置文件的资源&#xff0c;作为给 kube-scheduler 的配置文件&#xff0c;启动时通过 --config 来指定文件。目前各个 kubernetes 版本中使用的 KubeSchedulerConfiguration 为&#xff1a; 1.21 …

面试专题:spring

涉及到spring的问题都离不开IOC和AOP.AOP实现原理、动态代理和静态代理、Spring IOC的初始化过程、IOC原理、自己怎么实现一个IOC容器&#xff1f; 这些东西都是经常会被问到的。 IOC是什么&#xff1a; Ioc即控制反转&#xff0c;把原来的代码里需要实现的对象创建&#xff…