一种数据处理方法及装置的制造方法

文档序号:9306641阅读:218来源:国知局
一种数据处理方法及装置的制造方法
【技术领域】
[0001]本发明涉及互联网技术领域,尤其涉及一种数据处理方法及装置。
【背景技术】
[0002]移动客户端的网络数据传输具有移动性和不稳定性,故在移动客户端上进行高质量的语音、视频等数据传输时,经常会发生网络抖动、丢包和乱序等问题。
[0003]网络抖动,是指发送方均匀发送的数据包,接收端无法均匀接收到;而是在一段较长的时间内接收端未接收到数据包,在一段较短的时间内又集中接收到大量数据包。
[0004]丢包,是指发送方发送的数据包因为网络原因而丢失。
[0005]乱序,是指接收方未能按照发送方的发送顺序接收到接收方发送的数据包,发送方先发送的包接收方反而后收到。
[0006]由于网络抖动、丢包和乱序的发生,会给语音、视频等业务的进行带来不良影响,如发生卡顿、中断等问题。目前,如何在发生网络抖动、丢包和乱序的情况下,规避其对业务所带来的不良影响就成为目前亟需解决的问题。

【发明内容】

[0007]本发明要解决的技术问题是提供一种数据处理方法及装置,能够减轻在发生网络抖动时对所进行的业务带来的不良影响。
[0008]为解决上述技术问题,本申请的一种数据处理方法,包括:
[0009]接收数据包,将接收到的数据包缓存到缓冲器中;
[0010]从所述缓冲器中读取数据包,读取数据包后确定当前的网络抖动级别;
[0011]根据所述网络抖动级别为所述缓冲器确定预缓冲值,判断所述缓冲器是否为空,如果是,则按照所述预缓冲值在所述缓冲器中缓存相应数量的接收到的数据包,在缓存数据包的过程中禁止从所述缓冲器中读取数据包,在缓存相应数量的数据包后允许从所述缓冲器中读取数据包。
[0012]进一步地,所述确定当前的网络抖动级别,包括:
[0013]确定本次读取数据包与前次读取数据包之间的瞬时抖动级别;
[0014]计算得到的连续多个瞬时抖动级别的平均值,将计算得到的平均值作为当前的网络抖动级别。
[0015]进一步地,所述确定本次读取数据包与前次读取数据包之间的瞬时抖动级别,包括:
[0016]将本次读取数据包与前次读取数据包之间接收到的数据包的数量作为所述瞬时抖动级别。
[0017]进一步地,其特征在于,所述根据所述网络抖动级别为所述缓冲器确定预缓冲值,包括:
[0018]根据预缓冲值=网络抖动级别*调整阈值,计算所述预缓冲值。
[0019]进一步地,还包括:
[0020]如果判断所述缓冲器不为空,则还判断所述网络抖动级别的值是否小于数据包数量阈值,如果是,则丢弃缓冲器中的首个数据包。
[0021]进一步地,还包括:
[0022]在从所述缓冲器中读取数据包时,如果当前要读取的数据包尚未被接收并缓存在缓冲器中,还判断缓冲器中是否缓存有标号更大数据包,如果是,则根据当前要读取的数据包的前一个数据包模拟出当前要读取的数据包。
[0023]进一步地,一种数据处理装置,包括:接收单元、读取单元和预缓冲单元,其中:
[0024]所述接收单元,用于接收数据包,将接收到的数据包缓存到缓冲器中;
[0025]所述读取单元,用于从所述缓冲器中读取数据包,读取数据包后确定当前的网络抖动级别;
[0026]所述预缓冲单元,用于根据所述网络抖动级别为所述缓冲器确定预缓冲值,判断所述缓冲器是否为空,如果是,则按照所述预缓冲值在所述缓冲器中缓存相应数量的接收到的数据包,在缓存数据包的过程中禁止从所述缓冲器中读取数据包,在缓存相应数量的数据包后允许从所述缓冲器中读取数据包。
[0027]进一步地,所述读取单元确定当前的网络抖动级别,包括:
[0028]确定本次读取数据包与前次读取数据包之间的瞬时抖动级别;
[0029]计算得到的连续多个瞬时抖动级别的平均值,将计算得到的平均值作为当前的网络抖动级别;
[0030]其中,将本次读取数据包与前次读取数据包之间接收到的数据包的数量作为所述瞬时抖动级别。
[0031]进一步地,所述预缓冲单元,还用于如果判断所述缓冲器不为空,则还判断所述网络抖动级别的值是否小于数据包数量阈值,如果是,则丢弃缓冲器中的首个数据包。
[0032]进一步地,还包括数据包模拟单元,其中:
[0033]所述数据包模拟单元,用于在所述读取单元从所述缓冲器中读取数据包时,如果当前要读取的数据包尚未被接收并缓存在缓冲器中,判断缓冲器中是否缓存有标号更大数据包,如果是,则根据当前要读取的数据包的前一个数据包模拟出当前要读取的数据包。
[0034]综上所述,本申请的能够减轻网络问题对所进行的业务带来的不良影响,最大程度的在不稳定的网络条件下提供舒适可靠的业务服务。
【附图说明】
[0035]图1为本申请的数据处理方法的流程图;
[0036]图2为本申请的数据处理装置的架构图。
【具体实施方式】
[0037]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0038]如图1所示,本申请的数据处理方法,包括:
[0039]步骤101:接收数据包,将接收到的数据包缓存到缓冲器中;
[0040]本申请的数据处理方法可以应用到任何通过网络开展的业务中,如语音通话业务、视频业务等。
[0041]客户端会不断的从网络侧接收数据包,并将接收到的数据包缓存到本地的缓冲器中,以供后续取用。例如,接收单元在接收到数据包之后就会将数据包存入本地的缓冲器(buffer)中,针对语音通话业务,如果在网络正常的情况下,每隔40ms接收单元就会收到一个语音数据包,但是由于存在网络的抖动不一定能均匀的接收每个数据包。
[0042]步骤102:从缓冲器中读取数据包,读取数据包后确定当前的网络抖动级别;
[0043]在进行业务的过程中,客户端需要不断的从缓冲器中读取数据包进行如语音播放、视频播放等操作。例如,针对语音通话业务,客户端的放音单元,每隔40ms会从buffer中读取一帧数据。
[0044]本申请中确定当前的网络抖动级别可以包括:
[0045](I)确定本次读取数据包与前次读取数据包之间的瞬时抖动级别;
[0046](2)计算得到的连续多个瞬时抖动级别的平均值,将计算得到的平均值作为当前的网络抖动级别。
[0047]由于客户端存在网络抖动,在读取数据包后需要首先判断当前的网络抖动级别(即网络抖动的严重程度),根据网络抖动级别来拉大和收缩缓冲buffer的大小,以保证更舒适的播放效果。
[0048]瞬时抖动级别是两次读取数据包之间的网络抖动情况,可以将本次读取数据包与前次读取数据包之间接收到的数据包的数量作为瞬时抖动级别。针对语音通话业务每40ms就会得到一个瞬时抖动级别。
[0049]当前的网络抖动级别是取多个瞬时抖动级别的平均值,例如,取最近25次的瞬时抖动级别的平均值作为当前的网络抖动级别。
[0050]步骤103:根据网络抖动级别为缓冲器确定预缓冲值;
[0051]预缓冲值是指在buffer为空时,需要缓冲的数据包的数量,在缓冲数据包的过程中禁止从buffer中读取数据包,在缓冲预缓冲值数量的数据包后才允许再次从buffer中读取数据包。
[0052]本申请中的缓冲器的预缓冲值可以是根据预缓冲值=网络抖动级别*调整阈值进行计算。调整值是对预缓冲造成的延迟进行调整的权值,可以更好的控制用户体验。调整值可以根据实际情况或实际测试进行选择、调节。例如,本申请中可以采用预缓冲值=网络抖动级别*1.5计算得到预缓冲值。
[0053]步骤104:判断缓冲器是否为空,如果是,则按照预缓冲值在缓冲器中缓存相应数量的接收到的数据包,在缓存数据包的过程中禁止从缓冲器中读取数据包,在缓存相应数量的数据包后允许从所述缓冲器中读取数据包。
[0054]本申请中在计算得到预缓冲值后,判断缓冲器当前是否为空,如果缓冲器为空,则开始在缓冲器中缓存预缓冲值数量的接收数据包,并且,在缓存数据包的过程中禁止从缓冲器中读取数据包,直到缓存的数据包的数量达到预缓冲值后,才解除对数据包读取的禁止,允许从缓冲器中读取数据包。
[0055]在本申请的步骤104中如果判断缓冲器不为空,则还判断网络抖动级别的值是否小于数据包数量阈值,如果是,则丢弃缓冲器中的首个数据包。当网络
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1