FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.4,SDP协议分析

SDP在4566 中有详细描述。

SDP 全称是 Session Description Protocol,

翻译过来就是描述会话的协议。

主要用于两个会话实体之间的媒体协商。

什么叫会话呢,比如一次网络电话、一次电话会议、一次视频聊天,这些都可以称之为一次会话。

那为什么要去发这个描述文本呢,主要是为了解决参与会话的各成员之间能力不对等的问题,如果参加本次通话的成员都支持高质量的通话,但是我们没有去进行协议,为了兼容性,使用的都是普通质量的通话格式,这样就很浪费资源了。所以 SDP 的作用还是很有必要的。

SDP(Session Description Protocol) 完全是⼀种会话描述格式 ― 它不属于传输协议 ― 它只使⽤不 同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、 实时流协议(RTSP)、 MIME 扩展协议的电⼦邮件以及超⽂本传输协议(HTTP)。SDP协议是也是基于⽂本的协议,这样就能保 证协议的可扩展性⽐较强,这样就使其具有⼴泛的应⽤范围。SDP 不⽀持会话内容或媒体编码的协商,所 以在流媒体中只⽤来描述媒体信息。媒体协商这⼀块要⽤ RTSP 来实现.

SDP 协议结构 key = value 

key 一般是一个字母,

value 的值由key的啥 对应不同的值

协议中的特殊符号 *

OPTIONAL items are marked with a "*".
在协议中 用 * 表示 是  可选的
如果没有 *,则表示是 必选的

由两大部分组成

会话级别信息

协议版本号(v)(必选)

作用:⼀个会话描述的开始,前⼀个会话结束标志。

        例子:v=0

会话源(o)(必选)

作用:(会话源或者会话⽣成者,以及会话标识符)

        格式如下
        o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
        
        其中 username、session-id、nettype、addrtype、unicast-address ⼀起,唯⼀标识⼀
个会话
各字段含义如下:
username:发起者的⽤户名,不允许存在空格,如果应⽤不⽀持⽤户名,则为 -
sess-id:会话id,由应⽤⾃⾏定义,规范的建议是NTP(Network Time Protocol)时间戳。
sess-version:会话版本,⽤途由应⽤⾃⾏定义,只要会话数据发⽣变化时(⽐如编码),sess
version随着递增就⾏。同样的,规范的建议是NTP时间戳。
nettype:⽹络类型,⽐如 IN 表示 Internet
addrtype:地址类型,⽐如 IP4 IV6
unicast-address:域名,或者IP地址。
        例子: o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
        

会话名称(s)(必选)

        (会话名称)这个字段是个⽂本字符串,可以显示给会话参与者。

        s=SDP Seminar

        s=No Name

时间描述(t)(必选)
        (会话时间)这个字段指明会话开始时间与结束时间。
例子
       t=2873397496 2873404696
        t=0 0

属性(a)(可选)一般都会有值

可选字段中,连接信息字段是特别与条件相关的。因为该字段定义了数据应发送到的⽹络地址,所以必须 被包含进会话描述中的某个地⽅。
        例子
                a=tool:libavformat 60.3.100

会话信息(i)(可选)

(会话信息)对字段的⽂本描述,提供了⽐会话名称更多的信息。该字段既可以⽤于会话级也可以⽤ 于媒体级。

例子

i=A Seminar on the session description protocol

URI(u)(可选)

(描述的URI地址)URI信息,通过这个地址可以获取更多会话相关信息。例如,⼀个会议可能公布 在WEB⻚⾯上,所以需要该WEB的URI。每个会话只能提供⼀个URI
例子

u=http://www.example.com/seminars/sdp.pdf

E-mail地址(e)(可选)

E=(E-mail地址)负责会话个体的E-mail地址,可以有多个。只能⽤于会话级别。
例子
e=j.doe@example.com (Jane Doe)

电话号码(p)(可选)

可以有多个,会话级别。
例子:
p=+1 617 555-6011
这里没有查到在国内应该怎么写电话号码,在协议中的例子 有 +,有 -,从例子中可以看到,不止是数字,应该+和-也能用

连接信息(c)(可选)

(连接信息)该字段提供连接数据,包括连接类型、⽹络类型和连接地址。可应⽤于会话级也可以⽤ 于媒体级
在会话级时:   c=IN IP4 224.2.17.12/127
在媒体级时:  

带宽信息(b)(可选)

(带宽信息)指明带宽需求,单位 kbit/s , 可⽤于两个级别
b=<bwtype>:<bandwidth>

重复信息(r)(可选)

r=(重复次数)如果是有规律的⽇程安排活动,这个字段⽤来指明会话重复频次和时间。
r=<repeat interval> <active duration> <offsets from start-time>
重复间隔
活动持续时间
与开始时间的偏移
r=7d 1h 0 25h
d - days (86400 seconds)
h - hours (3600 seconds)
m - minutes (60 seconds)
s - seconds (allowed for completeness)

时区调整(z)(可选)

(时区调整)⽤于按⽇程安排的有规律活动会话。会话可能会夸时区,避免时区变更造成的混乱。
z=<adjustment time> <offset> <adjustment time> <offset> ....
z=2882844526 -1h 2898848070 0

加密密钥(k)(可选)

(加密密钥)为了对媒体加密、解密,该字段提供了⼀个加密密钥或者规定了⼀个获取密钥的机制。 可⽤于两个级别。
k=<method>
k=<method>:<encryption key>
k=clear:<encryption key>
k=base64:<encoded encryption key>
k=uri:<URI to obtain key>
k=prompt

媒体级别信息

媒体描述(m)

m=(媒体) 该字段⽤来指明媒体类型、数据应该发送到的传输端⼝,传输协议(例如 RTP )以及媒体 格式(例如 RTP 负载格式)
格式: m=(媒体)(端⼝)(传送层)(格式列表)
媒体类型:⾳频( audio ),视频( video ),应⽤,数据和控制
端⼝:媒体传送层端⼝
传送层:ip4上⼤多基于rtp/udp上传送 (RTP/AVP) IETF RTP协议,在udp上传输
格式列表 : 对应对应的⾳频负载类型(PT)
m=video 0 RTP/AVP 96

媒体信息(i)(可选)

连接信息(c)(会话级进⾏了规定,这⾥可选)

带宽信息(b)(可选)

加密密钥(k)(可选)

属性(a)(可选)

例子

    Session Description Protocol
        Session Description Protocol Version (v): 0
        Owner/Creator, Session Id (o): - 0 0 IN IP4 127.0.0.1
        Session Name (s): No Name
        Connection Information (c): IN IP4 192.168.245.130
        Time Description, active time (t): 0 0
        Session Attribute (a): tool:libavformat 60.3.100
        Media Description, name and address (m): video 0 RTP/AVP 96
        Media Attribute (a): rtpmap:96 H264/90000
        Media Attribute (a): fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAKKzZQHgGWwFqAgICgAAAAwCAAAAYB4wYyw==,aOvjyyLA; profile-level-id=640028
        Media Attribute (a): control:streamid=0
        Media Description, name and address (m): audio 0 RTP/AVP 97
        Bandwidth Information (b): AS:128
        Media Attribute (a): rtpmap:97 MPEG4-GENERIC/44100/2
        Media Attribute (a): fmtp:97 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=121056E500
        Media Attribute (a): control:streamid=1

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Go】:Sentinel 动态数据源配置指南

前言 在现代微服务架构中&#xff0c;流量控制是确保系统高可用性和稳定性的关键。Sentinel 是一款由阿里巴巴开源的流量控制组件&#xff0c;它不仅支持熔断降级和流量整形&#xff0c;还能通过动态数据源&#xff08;如本地文件或 Nacos&#xff09;加载规则&#xff0c;从而…

VM虚拟机配置ubuntu网络

目录 桥接模式 NAT模式 桥接模式 特点&#xff1a;ubuntu的IP地址与主机IP的ip地址不同 第一部分&#xff1a;VM虚拟机给ubuntu的网络适配器&#xff0c;调为桥接模式 第二部分&#xff1a;保证所桥接的网络可以上网 第三部分&#xff1a;ubuntu使用DHCP&#xff08;默认&…

贝叶斯分类——数学模型

贝叶斯分类是一类分类算法的总称&#xff0c;这类算法均以贝叶斯定理为基础&#xff0c;故统称为贝叶斯分类。 贝叶斯分类是一类利用概率统计知识进行分类的算法&#xff0c;其分类原理是贝叶斯定理。贝叶斯定理是由18世纪概率论和决策论的早期研究者Thomas Bayes发明的&#…

爬虫与反爬虫实现全流程

我选取的网页爬取的是ppt nba版 需要的工具:pycharm,浏览器 爬虫需要观察它的网页信息,然后开始首先爬取它的html,可以看到有人气,标题,日期,咨询 可以看到用get方法 import requests url"https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlhttps%3A%2…

云计算学习架构篇之HTTP协议、Nginx常用模块与Nginx服务实战

一.HTTP协议讲解 1.1rsync服务重构 bash 部署服务端: 1.安装服务 [rootbackup ~]# yum -y install rsync 2.配置服务 [rootbackup ~]# vim /etc/rsyncd.conf uid rsync gid rsync port 873 fake super yes use chroot no max connections 200 timeout 600 ignore erro…

【210】成绩管理系统

--基于springboot毕业设计成绩管理系统 主要功能: 个人中心 管理员管理 毕业论文管理 答辩秘书管理 基础数据管理 公告信息管理 公告信息管理 评阅教师管理 用户管理 指导教师管理 开发技术栈: 开发语言 : Java 开发软件 : Eclipse/MyEclipse/IDEA JDK版本 : JDK8…

Delphi历史版本对照及主要版本特性

Delphi编程的关键特性包括&#xff1a; 可视化开发&#xff1a;Delphi以其独特的开发方法而闻名&#xff0c;它允许开发者通过直观的表单设计器来创建用户界面。这种快速应用程序开发&#xff08;RAD&#xff09;的方法大大简化并加速了图形用户界面&#xff08;GUI&#xff09…

嵌入式系统 第九讲 设备驱动程序设计基础

• 9.1 Linux设备驱动程序简介 • 系统调用&#xff1a;是操作系统内核&#xff08;Linux系统内核&#xff09;和应用程序之间 的接口。 • 设备驱动程序&#xff1a;是操作系统内核&#xff08;Linux系统内核&#xff09;和机器硬件 之间的接口&#xff0c;设备驱动程序为应用…

算法学习(19)—— 队列与 BFS

关于bfs bfs又称宽搜&#xff0c;全称是“宽度优先遍历”&#xff0c;然后就是关于bfs的三个说法&#xff1a;“宽度优先搜索”&#xff0c;“宽度优先遍历”&#xff0c;“层序遍历”&#xff0c;这三个都是同一个东西&#xff0c;前面我们介绍了大量的深度优先遍历的题目已经…

cellphoneDB进行CCI以及可视化

除了cellchat&#xff0c;在单细胞转录组或者空间组的分析中&#xff0c;cellphoneDB也是一个常用的细胞通讯软件&#xff0c;这个数据库更注重配受体关系&#xff0c;对于有明确先验知识的配受体研究比较友好。 但值得注意的是&#xff0c;它的数据库只包括人的基因名称信息&…

003 字节码

字节码的位置 当我们讨论到字节码&#xff0c;我们需要清楚它在整个学习框架中的位置 如图&#xff0c;字节码是我们写的代码编译之后的结果&#xff0c;与虚拟机很近。 字节码是Java能实现跨平台的基础。 字节码基本知识体系 我们需要关注的点在于class文件的构成上。 字节…

基本算法——回归

本节将通过分析能源效率数据集&#xff08;Tsanas和Xifara&#xff0c;2012&#xff09;学习基本的回归算法。我们将基 于建筑的结构特点&#xff08;比如表面、墙体与屋顶面积、高度、紧凑度&#xff09;研究它们的加热与冷却负载要 求。研究者使用一个模拟器设计了12种不…

U盘文件剪切丢失的全方位解析与恢复指南

一、U盘文件剪切丢失现象描述 在日常使用U盘的过程中&#xff0c;我们时常会遇到需要将文件从一个位置移动到另一个位置的情况&#xff0c;而剪切加粘贴便是最常用的操作之一。然而&#xff0c;有时在剪切文件后&#xff0c;却意外发现目标位置并没有出现这些文件&#xff0c;…

洛谷 P1075 [NOIP2012 普及组] 质因数分解 C语言

题目&#xff1a; P1075 [NOIP2012 普及组] 质因数分解 - 洛谷 | 计算机科学教育新生态 题目描述 已知正整数 n 是两个不同的质数的乘积&#xff0c;试求出两者中较大的那个质数。 输入格式 输入一个正整数 n。 输出格式 输出一个正整数 p&#xff0c;即较大的那个质数。…

Lecture 17

10’s Complement Representation 主要内容&#xff1a; 1. 10’s 补码表示: • 10’s 补码表示法需要指定表示的数字位数&#xff08;用 n 表示&#xff09;。 • 表示的数字取决于 n 的位数&#xff0c;这会影响具体数值的解释。 2. 举例: • 如果采用 3 位补码&…

电子电器架构 --- 智能座舱HUD技术革新

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…

零基础微信小程序开发——全局配置之tabBar(保姆级教程+超详细)

&#x1f3a5; 作者简介&#xff1a; CSDN\阿里云\腾讯云\华为云开发社区优质创作者&#xff0c;专注分享大数据、Python、数据库、人工智能等领域的优质内容 &#x1f338;个人主页&#xff1a; 长风清留杨的博客 &#x1f343;形式准则&#xff1a; 无论成就大小&#xff0c;…

docker redis安装

一.镜像拉取 docker pull redis:5.0新建文件 touch /home/redis/redis.conf touch /home/redis/redis_6379.pid # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepali…

0基础跟德姆(dom)一起学AI 自然语言处理08-认识RNN模型

1 什么是RNN模型 RNN(Recurrent Neural Network), 中文称作循环神经网络, 它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出. 一般单层神经网络结构: RNN单层网络结构: 以时间步对RNN进行展开后的单层网络结构: RNN的…

Xilinx PCIe高速接口入门实战(三)

引言&#xff1a;为保证FPGA设备可以连接并被系统识别&#xff0c;本节讨论了PCIe基础规范和PCIe板卡电气规范的对FPGA配置时间具体要求。 1. 配置访问时间 在PCIe的标准系统中&#xff0c;当系统通电时&#xff0c;处理器上运行的配置软件开始扫描PCIe总线以发现机器拓扑。…