发明内容
本发明提供一种速率控制方法以解决上述问题。
本发明提供一种速率控制方法,包括以下步骤。发送端以预设速率通过服务器发送数据包到接收端,所述接收端缓存所述数据包并当开始播放所述数据包后,所述接收端比较所述缓存的数据包个数与接收端缓冲区预警值的大小。当所述接收端缓存的数据包个数小于或等于所述缓冲区预警值时,所述接收端获取数据包网络延迟时间并发送给服务器。所述服务器比较所述数据包网络延迟时间及单个数据包播放时间,当所述数据包网络延迟时间大于单个数据包播放时间时,所述服务器根据传输速率、单个数据包播放时间及数据包网络延迟时间计算发送速率并发送通知给发送端,所述发送端根据所述通知调整发送速率。
本发明提供一种速率控制系统,包括发送端、服务器及接收端,所述发送端通过所述服务器连接所述接收端。所述发送端,用于以预设速率通过服务器发送数据包到所述接收端,还用于根据所述服务器的通知调整发送速率。所述服务器,用于比较数据包网络延迟时间及单个数据包播放时间,当所述数据包网络延迟时间大于单个数据包播放时间时,所述服务器根据传输速率、单个数据包播放时间及数据包网络延迟时间计算发送速率并发送通知给发送端。所述接收端,用于缓存数据包并当开始播放所述数据包后,比较所述缓存的数据包个数与接收端缓冲区预警值的大小,还用于当所述接收端缓存的数据包个数小于或等于所述缓冲区预警值时,获取数据包网络延迟时间并发送给服务器。
相较于先前技术,根据本发明提供的速率控制方法,发送端以预设速率通过服务器发送数据包到接收端,接收端开始播放数据包后,比较接收后缓存的数据包个数与接收端缓冲区预警值的大小。通过对接收端设置缓冲区预警值,可有效监控接收端的数据包个数。当接收端缓存的数据包大小小于或等于缓冲区预警值时,所述接收端获取数据包网络延迟时间并发送给服务器,当服务器比较所述数据包网络延迟时间大于单个数据包播放时间时,所述服务器根据传输速率、单个数据包播放时间及数据包网络延迟时间计算发送速率并发送通知给发送端,所述发送端根据所述通知调整发送速率。如此,发送端根据服务器的计算结果控制发送速率,保证了音视频数据的连续播放。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1所示为根据本发明的较佳实施例提供的速率控制方法。如图1所示,本发明的较佳实施例提供的速率控制方法包括步骤101~103。
步骤101:发送端以预设速率通过服务器发送数据包到接收端,所述接收端缓存所述数据包并当开始播放所述数据包后,所述接收端比较所述缓存的数据包个数与接收端缓冲区预警值的大小。
具体而言,接收端于接收发送端发送的数据前预设自身的缓冲区大小,且接收端设置缓冲区播放值,所述缓冲区播放值小于或等于缓冲区大小。当接收端缓存的数据包个数第一次达到缓冲区播放值时,接收端开始播放所述数据包。于此,所述缓冲区播放值仅在数据包第一次开始播放前起限定作用,并不影响数据包之后的连续播放。所述接收端开始播放缓存的数据包后,将所述已播放的数据包从接收端的缓存中删除。于本实施例中,所述速率单位为个/秒,缓冲区计量单位为数据包个数。
此外,接收端存储缓冲区预警值对照表,所述对照表包括单个数据包播放时间、数据包网络延迟时间及缓冲区预警值。所述接收端根据数据包网络延迟时间确定缓冲区预警值。所述缓冲区预警值对照表格式例如下表所示。
在本实施例中,接收端第一次获取数据包网络延迟时间的方式为,所述接收端根据接收到的第一个数据包及第二个数据包的时间戳确定所述第一次的数据包网络延迟时间,所述接收端根据第一次获取的数据包网络延迟时间确定第一次缓冲区预警值。
步骤102:当所述接收端缓存的数据包个数小于或等于所述缓冲区预警值时,所述接收端获取数据包网络延迟时间并发送给服务器。
具体而言,按照步骤101,当接收端缓存的数据包个数第一次达到缓冲区播放值时,接收端开始播放所述数据包。当接收端监控到本地缓存的数据包个数小于或者等于所述缓冲区预警值时,接收端根据缓存的最近一次接收的数据包及后续接收的首个数据包的时间戳获取所述数据包网络延迟时间。若接收端没有缓存的数据包,所述接收端根据后续接收的连续两个数据包的时间戳获取所述数据包网络延迟时间,且所述接收端将获取的数据包网络延迟时间发送给服务器。
步骤103:所述服务器比较所述数据包网络延迟时间及单个数据包播放时间,当所述数据包网络延迟时间大于单个数据包播放时间时,所述服务器根据传输速率、单个数据包播放时间及数据包网络延迟时间计算发送速率并发送通知给发送端,所述发送端根据所述通知调整发送速率。
具体而言,所述单个数据包播放时间可以由发送端或接收端获取后通知所述服务器。其中发送端获取单个数据包播放时间的方式为,所述发送端本地待发送数据包中包括单个数据包播放时间信息,所述发送端解析本地待发送数据包后获得所述单个数据包播放时间后通知所述服务器。所述接收端获取单个数据包播放时间的方式为,所述发送端向所述接收端发送的数据包中携带单个数据包播放时间信息,所述接收端接收并解析所述数据包后获得所述单个数据包播放时间并通知服务器,或者当发送端向接收端开始发送数据包后,所述接收端播放单个数据包后获取单个数据包播放时间并通知服务器。当服务器比较数据包网络延迟时间大于单个数据包播放时间时,所述服务器计算发送速率的方式为:若以n表示数据包传输速率,所述传输速率可以为数据包网络延迟时间为零时发送端的发送速率,并由发送端预设,或者为数据包网络延迟时间为零时接收端的播放速率,并由接收端预设;T表示单个数据包播放时间,t表示数据包网络延迟时间,则(n-T*n/t)表示数据包传输存在网络延迟时,播放完缓冲数据期间网络能够传送的数据包个数。n+(n-T*n/t)表示在预设速率上加了修正后的发送数据包速率,来修正网络延时变化时少发送的数据包个数,即服务器计算的发送速率V=n+(n-T*n/t)。
于此,当服务器比较数据包网络延迟时间小于或等于单个数据包播放时间时,所述服务器通知发送端按所述预设速率发送所述数据包。
举例而言,若发送端在T1时刻以5个/秒的预设速率开始向接收端发送数据包,接收端接收并播放单个数据包后,获取单个数据包播放时间为200ms并通知服务器,且所述接收端根据接收到的第一个数据包及第二个数据包的时间戳确定第一次的数据包网络延迟时间为50ms。根据步骤101中的对照表,接收端确定缓冲区预警值为1个数据包。若接收端设定缓冲区播放值为5个数据包,当接收端缓存的数据包达到5个后,接收端开始播放数据包。
若T2时刻接收端监控到缓存的数据包个数小于缓冲区预警值(1个),且所述接收端该时刻无缓存的数据包。则所述接收端根据T2时刻起后续接收的连续两个数据包的时间戳,获取数据包网络延迟时间为500ms并发送给服务器,且接收端按照所述对照表将缓冲区预警值调整为3个数据包。于此,服务器比较接收到的数据包网络延迟时间(500ms)大于单个数据包播放时间(200ms),则服务器计算发送速率为5+(5-200*5/500)=8并发送通知给发送端,发送端根据所述通知将发送速率调整为8个/秒。接下来在T3时刻,接收端监控到缓存的数据包大小达到缓冲区预警值(3个数据包),所述接收端根据缓存的最近一次接收的数据包及后续接收的首个数据包的时间戳,获取数据包网络延迟时间为100ms并发送给服务器,且所述接收端按照所述对照表调整缓冲区预警值为1个数据包。于此,服务器比较接收到的数据包网络延迟时间(100ms)小于单个数据包播放时间(200ms),则服务器通知发送端按预设速率(5个/秒)发送所述数据包。
图2所示为根据本发明的较佳实施例提供的速率控制系统的示意图。如图2所示,本发明较佳实施例提供的速率控制系统包括发送端201、服务器202及接收端203,所述发送端201通过所述服务器202连接所述接收端203。所述发送端201,用于以预设速率通过服务器202发送数据包到所述接收端203,还用于根据所述服务器202的通知调整发送速率。所述服务器202,用于比较数据包网络延迟时间及单个数据包播放时间,当所述数据包网络延迟时间大于单个数据包播放时间时,所述服务器202根据传输速率、单个数据包播放时间及数据包网络延迟时间计算发送速率并发送通知给发送端201。所述接收端203,用于缓存数据包并当开始播放所述数据包后,比较所述缓存的数据包个数与接收端203缓冲区预警值的大小,还用于当所述接收端203缓存的数据包个数小于或等于所述缓冲区预警值时,获取数据包网络延迟时间并发送给服务器202。关于上述系统的操作流程同上述方法所述,故于此不再赘述。
综上所述,根据本发明的较佳实施例提供的速率控制方法,发送端以预设速率通过服务器发送数据包到接收端,接收端开始播放数据包后,比较接收后缓存的数据包个数与接收端缓冲区预警值的大小。通过对接收端设置缓冲区预警值,可有效监控接收端的数据包个数。当接收端缓存的数据包大小小于或等于缓冲区预警值时,所述接收端获取数据包网络延迟时间并发送给服务器,当所述数据包网络延迟时间大于单个数据包播放时间时,所述服务器根据传输速率、单个数据包播放时间及数据包网络延迟时间计算发送速率并发送通知给发送端,所述发送端根据所述通知调整发送速率。如此,发送端根据服务器的计算结果控制发送速率,保证了音视频数据的连续播放。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。