RTP协议简介

介绍

RTP,real-time transport protocol,实时传输协议,用于传输具有实时属性的数据。RTP提供端到端的网络传输功能,适用于通过组播或单播网络服务传输实时数据(如音频、视频或仿真数据)的应用。

RTP协议层有两个子协议:RTP和RTCP。RTP负责传输音视频数据流,RTCP是RTP的控制协议,用于监控服务质量并传递正在进行的会话中参与者的信息。

RTP依赖于底层协议来提供RTP数据和RTCP控制流的传输。由于传输的数据具有实时性,通常使用UDP协议传输。RTP使用偶数作为端口号,对应的RTCP流使用下一个更高的(奇数)作为端口号。

RTP会话

一组会议的参与者之间如果要实现视频通话,需要在RTP协议层建立RTP会话。参与者通过使用不同的目标传输地址对,接收不同的会话来区分多个RTP会话,传输地址对包括一个目标IP地址加上RTP和RTCP的一对端口。

一个RTP会话中,不只有单独的RTP报文,还有RTP配合使用的单独的RTCP报文。RTP会话的显著特征是每个会话都维护一个完整的、独立的SSRC标识符,它是RTP报头里的字段:同步源标识符,它是RTP数据包的来源。

每个参与者在会议中都有一个唯一的区别与他人的SSRC。

对于多方会议而言,有两种方式实现多个参与者的会话。

一种是和网络的组播类似,所有的参与者加入同一个会话中,它们有共同的目标传输地址对:目标IP地址是组播地址,各自的RTP端口和RTCP端口相同。本质上它们加入了同一个组播,RTP使用同一个组播地址作为目的IP地址,各自的RTP端口号和RTCP端口号相同。

另一种是和网络的单播类似,所有的参与者点对点通信,创建独立的RTP会话,使用的目的IP地址是目的主机的IP,在单播情况下,一个参与者可以使用同一对端口接收会话中所有其他参与者的消息,也可以为每个参与者使用不同的一对端口。

RTP报文格式

RTP报头的格式如下:

RTP首部

前12个字节出现在每个RTP数据包中,而CSRC标识符列表只有在混合器插入时才出现。

  • version (V): 2 bits

该字段表示RTP的版本,rfc 3550规范定义RTP的版本号为2。

  • padding §: 1 bit

填充位。如果该位设置,表示RTP报文需要填充一个或多个字节,这些填充字节不属于负载的一部分。某些具有固定块大小的加密算法或在较低层协议数据单元中携带多个RTP数据包可能需要填充。

  • extension (X): 1 bit

扩展位。如果设置了扩展位,固定报头必须紧跟着一个报头扩展位。

  • CSRC count (CC): 4 bits

CSRC数量表示固定报头后面的CSRC标识符数量。

  • marker (M): 1 bit

标记位。它的目的是允许在数据包流中标记诸如帧边界之类的重要事件。它的解释由profile文件定义。

  • payload type (PT): 7 bits

该字段表示RTP payload的格式。

  • sequence number: 16 bits

每发送一个RTP数据包,序列号加1,接收方可以用它来检测数据包丢失和恢复数据包序列。序列号的初始值应该是随机的(不可预测的)。

  • timestamp: 32 bits

时间戳反映了RTP数据包中第一个字节的采样时间。采样瞬间必须来源于一个时钟,该时钟随时间单调线性递增,以允许同步和抖动计算。

  • SSRC: 32 bits

SSRC字段表示同步源。这个标识符应该随机选择,目的是在同一个RTP会话中避免两个同步源具有相同的SSRC标识符。

  • CSRC list: 0到15条,每条32 bits

CSRC列表列举出此RTP包中包含的有效负载的贡献源。CSRC列表的数量由CC字段给出。如果有超过15个贡献来源,只有15个可以被识别。CSRC标识符由混合器插入,使用贡献源的SSRC标识符。

  • RTP payload:

通过RTP传输的数据包中的数据,如音频样本或压缩视频数据。

音视频以哪种格式编码成数据流,不是由RTP协议层实现的。应用层把音视频编码成数据流后,交给RTP传输。

RTP控制协议:RTCP

RTCP (control protocol)是基于周期性地向会话的所有参与者发送控制报文的协议,采用与数据包相同的分发机制。

  1. RTCP的主要功能是接收方向发送方提供音视频质量的报告。它是RTP协议的子协议。

  2. 如果RTP源发现同步源冲突或程序发生重启,SSRC可能会更改。接收方需要持续跟踪每个参与者,RTCP为RTP源携带一个持久的传输级标识符,称为规范名称或CNAME,接收方就根据CNAME跟踪每个参与者。


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现自动关键词提取

随着互联网的发展,越来越多的人喜欢在网络上阅读小说。本文将通过详细示例,向您介绍如何使用Python编写爬虫程序来获取网络小说,并利用自然语言处理技术实现自动文摘和关键词提取功能。 1. 网络小说数据抓取 首先,请确保已安装必…

Docker部署gogs仓库

Docker部署gogs Git仓库 拉取镜像 docker pull gogs/gogs查看本地镜像 docker images启动gogs仓库服务 创建数据挂在目录 我在/root目录下创建gogs挂在目录 mkdir gogs启动gogs docker run --namegogs -d -p 10022:22 -p 10880:3000 -v /root/gogs:/data gogs/gogs10022…

vue使用命令npm install 报错 cb() never called!

一.错误说明,npm本身下载就慢,有可能是网络的问题。 二.解决方案,把npm设置成淘宝镜像后,再重新npm install npm config set registry https://registry.npm.taobao.org 三.还是不行,还会出现同样的问题,那接下来先清理一下npm缓存 npm cache…

MATLAB实现AHP层次分析法——以情人节选取礼物为例

问题背景: 情人节来临之际,广大直男(女)同胞在给异性朋友选购礼物时会遇到难题——什么才是礼物好坏最重要的标准?基于层次分析法AHP进行计算,得出最高权重的指标,给出各位朋友选购礼物的一种思…

mysql 间隙锁原理深度详解

目录 一、前言 二、mysql之mvcc 2.1 什么是mvcc 2.2 mvcc组成 2.2.1 Undo log 多版本链 2.2.2 ReadView 2.2.3 快照读与当前读 三、RR级别下的事务问题 3.1 RR隔离级别解决的问题 3.1.1 幻读问题 3.2 幻读效果演示 3.2.1 准备测试表和数据 3.2.2 修改事务级别 3.…

修改linux中tomcat的端口

随便修改一个 以8055为例子 开放8081端口 firewall-cmd --permanent --add-port8081/tcp firewall-cmd --reload firewall-cmd --list-all

java基础-----第三篇

系列文章目录 文章目录 系列文章目录前言一、final二、String、StringBuffer、StringBuilder前言 一、final 最终的 修饰类:表示类不可被继承 修饰方法:表示方法不可被子类覆盖,但是可以重载 修饰变量:表示变量一旦被赋值就不可以更改它的值。 (1)修饰成员变量 如果fina…

CleanMyMac最新版4.14Mac清理软件下载安装使用教程

苹果电脑是很多人喜欢使用的一种电脑,它有着优美的外观,流畅的操作系统,丰富的应用程序和高效的性能。但是,随着时间的推移,苹果电脑也会产生一些不必要的文件和数据,这些文件和数据就是我们常说的垃圾。那…

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有: 错误日志,一般查询日志&…

2023年天府杯——C 题:码头停靠问题

问题背景: 某个港口有多个不同类型的码头,可以停靠不同种类的船只。每 艘船只需要一定的时间来完成装卸货物等任务,并且每个码头有容量 限制和停靠时间限制。港口需要在保证收益的情况下,尽可能地提高 运营效率和降低成本。同…

海关发布限制日本水产品进口,占据我国进口多少?

在福岛发生核电站事故后,我国就已经暂停进口包括福岛、宫城和长野等在内的10个县的所有食品,以及10个县以外的蔬菜等。而在日本宣布排放核污水并且已经实施之后,海关在24日发布全面暂停进口原产地为日本的水产品(含食用水生动物&a…

Springboot+mybatis-plus+dynamic-datasource+Druid 多数据源 分布式事务

Springbootmybatis-plusdynamic-datasourceDruid 多数据源事务,分布式事务 文章目录 Springbootmybatis-plusdynamic-datasourceDruid 多数据源事务,分布式事务0.前言1. 基础介绍ConnectionFactoryAbstractRoutingDataSource 动态路由数据源的抽象类 Dyn…