RTCP相关

来源:互联网 发布:如何下载encode数据 编辑:程序博客网 时间:2024/06/07 22:19

转:

能够在会话参与者之间进行周期性的控制信息交换,主要目的是提供质量

  相关的反馈。通过使用RTCP和IP多播机制,可以进行第三方的监视和检测。
  RTCP定义了5种不同类型的RTCP包:
  1.Sender Report(SR)用来中继发送和接收统计;
  2.Receiver Report(RR)只接收而不发送媒体流的参与者发送的接收统计;
  3.Source Description(SDES)包含某一特定会话参与者的一个或多个描述。必须包含一个唯一的canonical name(CNAME)用于标识会话的参与者,它不同于SSRC,因为当主机reset后SSRC的值可能会发生改变。再者,如果在一个给定的会话中,发送者同时发送音频和视频的两路RTP流,则这两种媒体流有不同的SSRC值但是却有相同的CNAME;
  4.BYE 表示一个会话中的参与中止;
  5.APP 用于调查特定的媒体类型和应用信息,不过RTCP没有明确APP包的详细内容。
  
  事实上,总是两个或多个RTCP包被捆绑成一个混合包发送出去的。所有的RTCP包都必须以一个SR或RR开始,都必须包含至少一个SDES,即使在SDES之间加上一个空的SR或RR。
  Compound Packet举例:(发送者离开此次会话)
  H:Header D:Data
   -----------------------------------------------
  | SR H | SR D | SDES H | SDES D | BYE H | BYE D |
   -----------------------------------------------
  
  RTCP Sender Report(SR)
  由三部分组成:header,sender information和多个Report Block
  1.header:
  RC域,表示含有多少个receiption report blocks,5bit,一个SR之后最多可以跟31个RR blocks。当RR多于31个时只需在最后一个RR后再跟一个SR即可;
  Payload Type(TP)的值为200;
  
  2.Sender info:
  SSRC of sender 发送者的SSRC;
  NTP Timestamp 两个字,第一个表示整数部分,第二个表示小数部分,以1900年1月1日00:00时为参照时间,单位是秒,小数部分精确到200皮秒,此版本的网络时间协议2036年到期,在此之间应该会有新的版本,此时间戳信息来自于一个时间服务器,这个服务器通过NTP协议在网络上传播计时信息;
  RTP Timestamp 同时包含RTP和NTP时间戳是为了使接收方更好的于发送方保持同步;
  Sender's packet count 记录从会话开始到此RTCP包发出这之间所传输的RTP包的总数,只有当发送者的SSRC值改变时此项才重置;
  Sender's octet count 记录从会话开始到此RTCP包发出这之间所传输的载荷字节的总数,只有当发送者的SSRC值改变时此项才重置;
  
  3.RR Blocks:(RR用于反馈RTP包的接收情况)
SSRC_n 表示与此RR块相关的会话参与者的源标识;
Fractioin lost (8bit)表示包的丢失率是多少,即丢失的包的数量除以期望的包的数量,丢失的包的数量可以通过每次检查RTP包头中的Sequence Nmuber统计出来;
Cumulative number of packets lost (24bit)从会话开始至今丢失的包的总数;
Extended highest sequence number receirved (32bit)低16位表示最近收到的RTP包的序列号,一般情况下高16位全为0,但如果收到的某一个发送源的序列号出现循环,则在它的相应RR段中此高16位值表示已循环的次数;
Interarrival jitter 对RTP包到达不一致性的估计;
Last SR Timestamp(LSR) 表示所接收到的此RR块对应的SSRC发送的最后一个SR中64-bit NTP时间戳的中间32位,以告知它所发送的SR是否已经被收到;
Delay Since Last SR (DLSR)从收到最后一个SR到此RR块被发出经历的时间,精确到1/65536秒。

RR包包括header,发送者SSRC以及Report Blocks,基本与SR相同,只是header中的PT值为201。

RTCP Source Description Packet (SDES)相关
必须存在于每一个RTCP混合包中,由一个header和0个或多个chunk组成,header中的PT值为202,SC的值表示chunk的个数;
每个chunk包括一个SSRC或CSRC值,之后是一些SDES项,比如email地址、电话号码、姓名等等,但是有一个项是必需的,即CNAME,它的形式为user@host。

RTCP BYE Packet
PT值为203,SC表示SSRC或CSRC的数量,在这之后有个length域表示文本字符串的字节数,length域之后是以文本字符储存的离开会话的原因。

Application-Defined RTCP Packet略


转:RFC3550中文版.pdf

可以再网上搜索“RFC3550中文版.pdf”


也可在网上找rtp的开源库,如jrtplib等,当然还有一些人自己封装的rtp和rtcp库,具体可以用来参考;

可以通过Wireshark捕获,查看相关协议是否真确;

0 0