1、发送者报告

RTCP协议处理机根据定义了五种类型的报文:
RR: receiver report
SR: sender report
SDES: source description items.
BYE: indicates end of participation.
APP: application specific functions
它们完成接收、分析、产生和发送控制报文的功能。

发送者报告包由3部分组成,若定义,可能跟随第4个面向协议的扩展部分。

第一部分   头部 8bytes

V:(2bits)版本号,固定值为2

P:(1bit)填充标识,如果设置位1,则在所有的RTCP包后,有一部分填充数据。

RC:(5bits) 该包中所含接收报告块的数目;

PT:(8bits) 包类型;固定值位200

length:(16bits)该RTCP包的长度减1。其单位是32比特字,包括头和任何填充字节。(偏移量1保证零值有效,避免了在扫描RTCP包长度时可能发生的无限循环,同时以32比特为单位避免了对以4为倍数的有效性检测。)

SSRC:(32bits)SR包发送者的同步源标识符;

第二部分  发送者信息 20字节

NTP时间戳:(64bits)   指示了此报告发送时的背景时钟(wallclock)时刻,它可以与从其它接收者返回的接收报告块中的时间标志结合起来,计算往返每个接收者所花的时间。接收者应让NTP时间戳的精度远大于其他时间戳的精度。时间戳测量的不确定性不可知,因此也无需指示。一个系统可能没有背景时钟的概念,而只有系统指定的时钟,如系统时间(system uptime)。在这样的系统中,此时钟可以作为参考计算相对NTP时间戳。选择一个公用的时名是非常重要的。这样多个独立的应用都可以使用相同的时钟。到2036年,相对和绝对NTP时间戳会产生大的差异。到那时,我们希望不再需要相对时钟。一个发送者,如果不用背景时钟时间或逝去时间,可以设置此项为零。

RTP时间戳:(32bits)   与以上的NTP时间标志对应同一时刻。与数据包中的RTP时间戳具有相同的单位和偏移量。这个一致性可以用来让NTP时间标志已经同步的源之间进行媒体内/间同步,还可以让与媒体无关的接收者估计名义RTP时钟频率。注意在大多数情况下此时间戳不等于任何临近的RTP包中的时间戳。RTP时间戳可以由相应的NTP时间戳计算得到。依据的是“RTP时间戳计数器”和“在采样时通过周期性检测背景时钟时间得到的实际时间”两者之间的关系。

 (在RTCP SR包中有NTP时间戳、RTP时间戳,它们可以计算背景时钟和RTP时钟之间的对应关系,通过这个关系,可以由RTP数据包中的RTP时间戳计算也相应的回放时刻。这样就可以进行多个流的同步了。之所以要有NTP时间戳,是因为不同流的RTP时间戳有不同的随机偏移量,无法直接进行同步:笔者注。)

发送的报文数:(32bits)   从开始传输到此SR包产生时该发送者发送的RTP数据包总数。若发送者改变SSRC识别符,该计数器重设。

发送的字节文数:(32bits)   从开始传输到此SR包产生时该发送者在RTP数据包发送的字节总数(不包括头和填充)。若发送者改变SSRC识别符,该计数器重设。此域可以用来估计平均的负载数据发送速率。

第三部分

零到多个接收报告块。块数等于从上一个报告以来该发送者侦听到的其它源(不包括自身)的数目。每个接收报告块传输从某个同步源来的数据包的接收统计信息。若数据源因冲突而改变其SSRC标识符,接收者重新设置统计信息。这些统计信息有:

SSRC_n(同步源标识符):32比特   在此接收报告块中信息所属源的SSRC标识符。

丢包率:8比特   自从前一SR包或RR包发送以来,从SSRC_n传来的RTP数据包的丢失比例。以定点小数的形式表示。该值定义为损失包数/期望接收的包数。若由于包重复而导致包丢失数为负值,丢包率设为零。注意在收到上一个包后,接收者无法知道以后的包是否丢失。如:若在上一个接收报告间隔内从某个源发出的所有数据包都丢失,那么将不为此数据源发送接收报告块。

累计包丢失数:24比特   从开始接收到现在,从源SSRC_n发到本源的RTP数据包的丢包总数。该值定义为:期望接收的包数-实际接收的包数。接收的包括复制的或迟到的。由于迟到的包不算作损失,在发生复制时丢包数可能为负值。期望接收的包数定义为:扩展的上一接收序号(随后定义)减去最初接收序号。

接收到的扩展的最高序列号:32比特   低16比特包含从源SSRC_n来的最高接收序列号,高16比特用相应的序列号周期计数器扩展该序列号。注意在同一会议中的不同接收者,若启动时间明显不同,将产生不同的扩展项。

到达间隔抖动:32比特   RTP数据包到达时刻统计方差的估计值。测量单位同时间戳单位,用无符号整数表达。到达时间抖动定义为一对包中接收者相对发送者的时间间隔差值的平均偏差(平滑后的绝对值)。如以下等式所示,该值等于两个包相对传输时间的差值。相对传输时间是指:包的RTP时间戳和到达时刻接收者时钟时间的差值。若Si是包i中的RTP时间戳,Ri是包i到达时刻(单位为:RTP时间戳单位)。对于两个包i和j,D可以表示为  D(i,j)=(Rj-Sj)-(Ri-Si);

到达时刻抖动可以在收到从源SSRC_n来的每个数据包i后连续计算。利用该包和前一包i-1的偏差D(按到达顺序,而非序号顺序),根据公式J=J+(|D(i-1,i)|-J)/16计算。无论何时发送接收报告,都用当前的J值。

此处描述的抖动计算允许与协议独立的监视器对来自不同实现的报告进行有效的解释。

上一SR报文   (LSR):32比特   接收到的来自源SSRC_n的最新RTCP发送者报告(SR)的64位NTP时间标志的中间32位。若还没有接收到SR,该域值为零。

自上一SR的时间(DLSR):32比特   是从收到来自SSRC_n的SR包到发送此接收报告块之间的延时,以1/65536秒为单位。若还未收到来自SSRC_n的SR包,该域值为零。

假设SSRC_r为发出此接收报告块的接收者。源SSRC_n可以通过记录收到此接收报告块的时刻A来计算到SSRC_r的环路传输时延。可以利用最新的SR时间标志(LSR)计算整个环路时间A-LSR,然后减去此DLSR域得到环路传输的时延。

 如下图所示。

2、接受者报告

转载于:https://www.cnblogs.com/frkang/p/3347606.html

RTP/RTCP/RTSP协议分析(2)相关推荐

  1. RTP/RTCP/RTSP协议初探

    From:http://apps.hi.baidu.com/share/detail/24794429 一.产生的背景 随着互连网的发展,人们已经不满足于传统的HTTP,FTP和电子邮件等文本信息和服 ...

  2. RTP/RTCP/RTSP协议

                            描述:协议关系图 图片: 一.产生的背景 随着互连网的发展,人们已经不满足于传统的HTTP,FTP和电子邮件等文本信息和服务,而对内容丰富多彩的多媒体信 ...

  3. 智能终端会议系统(20)---网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系

    网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系 RTP/RTCP/RTSP/SIP/SDP 关系 1. RTP Real-time Transport Protocol,是用 ...

  4. 网络流媒体协议的联系与区别(RTP RTCP RTSP RTMP HLS)

    简结">三句话简结 RTP RTCP RTSP RTMP HLS区别与联系 RTP传输流媒体数据.RTCP对RTP进行控制,同步.RTSP发起/终止流媒体 RTP和RTCP互为姐妹关系 ...

  5. RTSP再学习 -- RTSP协议分析(转载)

    最近一直在看 RTSP,但是RTSP协议是个啥?还没有搞清楚. 首先流媒体百度百科上有这样一段,从基本的名字上或多或少可以理解一下这些传输协议的区别.这很重要!! 传输协议 1.RSVP:资源预留协议 ...

  6. RTP/RTCP/RTSP/SIP/SDP 关系(直接看总结)

    RTP/RTCP/RTSP/SIP/SDP 关系   RTP(实时传输协议,传输层) Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议 ...

  7. RTSP 协议分析 (一)

    原文地址为: RTSP 协议分析 (一) RTSP 协议分析 1.概述:  RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协 ...

  8. WebRTC学习进阶之路 --- 五、WebRTC网络知识详解(三)(最全流媒体协议(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL)/SDP)

    WebRTC学习进阶之路系列总目录:https://blog.csdn.net/xiaomucgwlmx/article/details/103204274 RTP:实时传输协议(Real-time ...

  9. 最全流媒体协议详细总结介绍(RTP/RTCP/RTSP/RTMP/MMS/HLS/HTTP/ HTTP-FLV(HDL) /SDP)

    RTP:实时传输协议(Real-time Transport Protocol)          RTP是一种基于包的传输协议,它用来传输实时数据.在网络上传输数据包的延迟和误差是不可避免的,对此R ...

最新文章

  1. 放弃MyBatis!我选择 JDBCTemplate!
  2. mac pro下安装gdb和delve调试器
  3. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
  4. Scala集合List的常用方法:take/flatMap/filter/zip/union/intersect/diff及WordCount集合实现
  5. MacOs High Sierra 升级失败解决办法
  6. Dell poweredge r210进BIOS修改磁盘控制器(SATA Controller)接口模式
  7. matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图
  8. 信息学奥赛一本通C++语言——1063:最大跨度值
  9. Java设计模式1:设计模式概论
  10. 编译原理教程_4 语法分析
  11. 500 内部服务器错误php,如何解决php 500内部服务器错误问题
  12. [JNI] 开发实例(2) 编译libwebsocket,封装jni函数,搭建IM通信基础服务
  13. 演化博弈论----gyy参考总结
  14. 【梳理】离散数学 第15章 欧拉图与哈密顿图 15.1 欧拉图 15.2 哈密顿图
  15. selenium弹窗处理,包括Javascript弹窗、HTML弹出层和Windows弹窗
  16. AM、PM是上午和下午的英文缩写、英文缩写(英语星期月份等)
  17. React 优化:懒惰加载(lazy loading)
  18. FMI飞马网 |【线上直播】持续集成在京东研发的落地及应用
  19. 基于Java毕业设计写手管理平台源码+系统+mysql+lw文档+部署软件
  20. 设计模式六大原则——合成/聚合复用原则(CARP)

热门文章

  1. 深入浅出无人机姿态,欧拉角,四元数,指数表示及数据转换与程序实现
  2. 2020-08-22 cuowu
  3. C++ code:string stream(string流)学习大全
  4. Ubuntu 必装软件及安装教程
  5. php server 域名,php 关于如何获取域名或者IP地址的$_SERVER['']
  6. react 判断图片是否加载完成_如何判断图片(img)是否已经加载成功--基于react...
  7. 应用服务器与数据库之间是长连接,要接收多个 tcp 长连接不断发送的数据并存储,哪些数据库或数据存储方案比较合适?...
  8. 瑞斯康达nms_瑞斯康达iTN产品资料
  9. 迅为I.MX6Q开发板配不同分辨率不同尺寸液晶屏幕
  10. Linq 读取Xml 数据