rtcp字段计算方法
2015-12-05 07:10
555 查看
RTCP包括五种数据包类型(RFC3550 Page69):
abbrev. name value(该值RTCP头格式中的PT类型字段)
SR sender report 200
RR receiver report 201
SDES source description 202
BYE goodbye 203
APP application-defined 204
RTCP报文格式如下(RFC3550 Page35):
下面解释几个难懂的字段
Ntp高位=整数部分N+2208988800UL (其中2208988800UL表示自1900.1.1到1970.1.1的秒数)
Ntp低位=小数部分X* 4294967296 (其中4294967296为2^32)
从rtp时间戳换算成ms的公式为:
rtp时间戳*1000/samplerate。
两个rtp包中rtp时间戳间隔为:(Sj - Si)
则该次jitter为D(i,j) = (Rj - Ri) - (Sj - Si)
总的jitter值取平均,计算公式为:J(i) = J(i-1) + (|D(i-1,i)| - J(i-1))/16
rtcp中jitter值以sample为单位,换算成ms的公式为:jitter*1000/samplerate
ntp_msw&0xffff + ntp_lsw>>16 (取ntp_msw的低16位和ntp_lsw的高16位)
根据LSR和DLSR计算RTT
设接收到该报告块的时间为A,A的计算公式同NTP,并取msw的低16位和lsw的高16位。
RTT=(A-LSR-DLSR)>>16
该公式计算出的RTT以秒为单位
abbrev. name value(该值RTCP头格式中的PT类型字段)
SR sender report 200
RR receiver report 201
SDES source description 202
BYE goodbye 203
APP application-defined 204
RTCP报文格式如下(RFC3550 Page35):
下面解释几个难懂的字段
NTP
Ntp把当前时间(自1970.1.1以来的秒数)分为整数部分N和小数部分XNtp高位=整数部分N+2208988800UL (其中2208988800UL表示自1900.1.1到1970.1.1的秒数)
Ntp低位=小数部分X* 4294967296 (其中4294967296为2^32)
RTP时间戳
以sample为单位,如音频8000HZ,一个packet为20ms,则两个rtp时间戳的间隔为160.从rtp时间戳换算成ms的公式为:
rtp时间戳*1000/samplerate。
Jitter
设接收到两个rtp包的时间间隔,换算成以sample为单位。(Rj - Ri)两个rtp包中rtp时间戳间隔为:(Sj - Si)
则该次jitter为D(i,j) = (Rj - Ri) - (Sj - Si)
总的jitter值取平均,计算公式为:J(i) = J(i-1) + (|D(i-1,i)| - J(i-1))/16
rtcp中jitter值以sample为单位,换算成ms的公式为:jitter*1000/samplerate
LSR
取自上一个接收到的SR包中的ntp值,取值公式为:ntp_msw&0xffff + ntp_lsw>>16 (取ntp_msw的低16位和ntp_lsw的高16位)
DLSR
从接收到上一个SR包到发送此接收报告块之间的延时,以1/65536秒为单位.根据LSR和DLSR计算RTT
设接收到该报告块的时间为A,A的计算公式同NTP,并取msw的低16位和lsw的高16位。
RTT=(A-LSR-DLSR)>>16
该公式计算出的RTT以秒为单位
相关文章推荐
- 我的网络层是这么设计的
- ios 9 http
- 关于keystone的一些问题:stop:unknow instance或unable to establish connection to http://controller:35357/v2.0/
- java通过网络获取从下位机获得的字节流进行包头判断遇到的问题
- 使用Volley+OkHttp+Gson加速Android网络开发
- 第二十二天-linux系统网络基础知识及配置实战
- ubuntu 14 网络配置
- git remote add Mycat https://github.com/MyCATApache/Mycat-Server.git
- TCP选项详解
- iOS 网络与多线程--7.Performselector消息处理方法
- 1.1安装CentOS6.5和网络配置
- JAVA中Socket编程(一)---通过TCP协议实现通信
- HDU 1532 Drainage Ditches 网络流模板题(Dinic)
- 41.网络编程(Get 同步 异步block)
- centos6.5安装mysql-udf-http日记
- 网络流问题
- Ubuntu中启用关闭Network-manager网络设置问题!
- JAVA HTTP POST参数为一个对象或数组
- JAVA HTTP POST参数为一个对象或数组
- iOS 网络与多线程--6.下载并保存网络图片