关于JRTPLIB的RTCP包问题
楼主,用jrtplib发送数据给谁?我做的是发送数据给rtp包发给VLC,问下楼主是不是VLC也会自动回发rtcp包?这是我手上的一点资料希望对楼主有用在一个典型的应用场合下,发送媒体流的应用程序将周期性地产生发送端报告,该RTCP数据报含有不同媒体流间的同步信息以及已经发送的数据包和字节的数,接收端根据这些信息可以估计出实际的数据传输速率。另一方面,接收端会所有已知的发送端发送接收端报告RR,该报告包含有己接收数据包的最大序列、丢失的数据包数目、延时抖动和时间戳等重要信息,发送端应用根据这些信息以估计出往返时延,并且可以根据数据包丢失概率和时延抖动情况动态调整发送率,以改善网络拥塞状况〔26]。为实现系统基于RTCP的自适应网络传输,首先需要进行网络带宽的动态探测评估,然后采用合适的调整策略来整合码流。网络状态的评估中,质量因素可以丢包率、时延等参数。事实上,本文采用简单的做法,只采用某段时间内数据包失率作为拥塞状态的反馈信息。RTP包头携带了时间戮和序列号,SMAX为接收到RTP包中的最大序列号,SBASE为RTP包的起始序列号;RTCP(SR)包头中携带了间戳和到目前为止发送的RTP包的个数。丢包数(Lostt,时刻t之前的丢包数):Stt=Sendt一Receivet=SMAX一SBASE+l一Receive:,Receive、为t时刻实际接收到的包的数目,Send,为t时刻己经发送的RTP包的数目,丢包率(LRatek.t,t时刻k时刻之间发生的丢包率):LRatek.t=(Lostt一Lostk)/(Sendt一Sendk)(5一1)接收用户终端不断测量丢包率LRatek.t,并通过RTCP的接收方报告(RR)反馈给端,实现数据传输服务质量的反馈。发送端通过丢包率与规定的闭值进行比较,断网络属于哪种状态,以确定发送码率。设置两个闭值Plthreahold和hreahold,分别表示丢包率下限和上限,它们的值可以根据具体应用要求进行。设置最大传输速率为uRate,最小传输速率为LRate,线性增量步长为Step,减小因子为a。反馈控制算法如下:if(LRatek,t》Puthreahold){//网络拥塞RateCurrent=max{a*RateCurrent),LRate}:}elseif(LRatek.,《Plthreahold){//网络空闲RateCurrent=min{(RateCurrent+Step),URate}:}e1SeRateCurrent=RateCurrent://网络负载均衡适中该控制算法调整输出码率RateCurrent使丢包率LRatek.、门限控制在硕士学位论文MASTER’5THESISreahold和Puthreahold之间。网络空闲时,使用加性增长传输来逐渐适应网带宽,因为乘性增长容易带来大的源端码流而导致更多的包丢失。网络发生拥塞,如果缓慢减少速率可能使网络状况在相当长的时间内得不到改善,使用乘性减码流传输就可以迅速减少码源流量从而避免网络阻塞时间过长造成数据包丢失重和视频回放质量下降。设计出算法后,需要知道编码器如何改变输出速率。通常,可以通过改变编码的量化参数得到。MPEG一4视频编码器是将每个视频的对象独立编码,这种对不同象的编码,其独立性给自适应速率设计带来了很大的灵活性,我们可以在程序设时通过控制、修改XviD编码器源码相关函数的参数进行。另外改变输出速率还以调整摄像头的采样帧率,以使得编码后的码率也随之动态调整,从而适应网络宽的变化。 顺便再问一下,楼主jrtplib如何接受RTCP包,调用哪个方法?
jrtplib中怎么实现rtcp传输,怎么提取rtcp信息
对于rtp包都可以通过GetPayLoadData()和GetPayLoadLength()函数来获取数据和长度,不知rtcp是不是也有类似函数可以实现呢。哪位大哥知道的麻烦指点一下啦。------解决方案--------------------------------------------------------[千里]jrtplib对RTCP包发送时间间隔的计算,是按照RFC3550 6.3.1上面的算法实现的,可以看RTCPScheduler的代码:RTCPScheduler::CalculateDeterministicInterval()RTCPScheduler::CalculateTransmissionInterval()[千里]RTCP包有类似函数GetPacketData()和GetPacketLength().不过想获取RR包的信息,不需要用这个自己解码,RTCPRRPacket已经解好并提供接口给你:RTCPRRPacket::GetSenderSSRC()RTCPRRPacket::GetReceptionReportCount()RTCPRRPacket::GetSSRC()
RTP+ES流方式 jrtplib如何设置视频和音频的两个timestamp
1随便设置一个。主要是再打包时候要同时打时间戳和payload就可以了。2和上一个问题的回答一样。不要用增量方式调用。用绝对值方式调用。注意要同时设置payload和timestamp