实时报文丢包恢复方法、系统及接收端单元的制作方法

文档序号:7687062阅读:144来源:国知局

专利名称::实时报文丢包恢复方法、系统及接收端单元的制作方法
技术领域
:本发明涉及媒体传输
技术领域
,具体涉及媒体流传输中的实时报文丢包恢复方法、系统及接收端单元。
背景技术
:实时媒体流传输已经应用在各个领域如视频会议系统、监控系统、IP电视(IPTV)等。当前的实时媒体流传输都使用实时传输协议(RTP,Real-timeTransportProtocol),RTP是一种不支持任何形式的可靠性保证、不支持任何定义拥塞控制的协议。因此,在实时媒体流传输中RTP本身无法对丢包进行恢复。网络丟包会造成音频停顿、视频花屏及音、视频停止等现象。目前,接收端在发现视频丟包时,直接向发送端请求I巾贞刷新,同时对丢包的视频数据进行停止解码处理,或者直接解码处理。这种方式的缺点是,少量的网络丢包也会引发大量的I帧数据传送,浪费网络带宽,且容易引起网络拥塞,从而导致丢包加剧,使得丢包恢复的效率得不到保证;同时,在某些存在固定数量丟包的网络中还易发生I帧丟包,导致整个I帧失效,从而引起再次i帧刷新,更加重了网络的负担。
发明内容本发明提供实时报文丢包恢复方法、系统及接收端单元,以提高实时报文的丢包恢复效率。本发明的技术方案是这样实现的一种实时报文丟包恢复方法,接收端统计包重传所消耗的时长即重传消耗,并把将一个非重传包放入组帧緩沖到将该包送往解码器所消耗的时长作为重传时间窗口,包括接收端发现丢包,若确定重传消耗不大于重传时间窗口,则向发送端发送重传请求,同时确定当前时刻为重传时间窗口开始时刻;在重传时间窗口结束时刻前收到发送端发来的重传数据,将该重传数据插入组帧緩沖中。一种实时报文丢包恢复方法,接收端统计包重传所消耗的时长即重传消耗,并把将一个非重传包放入组帧緩沖到将该包送往解码器所消耗的时长作为重传时间窗口,包^^:发送端将数据打包成实时报文发送给接收端,同时保存数据;接收端发现丢包,若确定重传消耗不大于重传时间窗口,则向发送端发送重传请求,同时确定当前时刻为重传时间窗口开始时刻,发送端将保存的需重传的数据打包成报文发送给接收端;接收端在重传时间窗口结束时刻前收到发送端发来的重传数据,将该重传数据插入组帧緩沖中。一种实时报文丟包恢复系统,包括发送端单元,将数据打包成实时报文发送给接收端单元,同时保存数据;接收到重传请求,将保存的需重传的数据打包成报文发送给接收端单元;接收端单元,统计包重传所消耗的时长即重传消耗,把将一个非重传包放入组帧緩沖到将该包送往解码器所消耗的时长作为重传时间窗口,当发现丢包时,若确定重传消耗不大于重传时间窗口,则向发送端单元发送重传请求,同时确定当前时刻为重传时间窗口开始时刻;在重传时间窗口结束时刻前收到发送端单元发来的重传数据,将该重传数据插入组帧緩冲中c一种接收端单元,包括接收模块,接收发送端单元发来的重传数据,将重传数据插入组帧緩冲;丢包发现模块,统计包重传所消耗的时长即重传消耗,把将一个非重传包放入组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口;检测到发生丢包,且确定重传消耗不大于重传时间窗口,向重传请求模块发送重传指示,该指示中携带需重传的数据信息;组帧緩冲,接收接收模块插入的数据;重传请求模块,接收丢包发现模块发来的重传指示,将该指示中的需重传的数据信息携带在重传请求中发送给发送端单元。与现有技术相比,本发明中,接收端预先统计包重传所消耗的时长即重传消耗,把将一个非重传包放入组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口;发送端发送数据的同时,保存数据;接收端发现丢包,若确定重传消耗不大于重传时间窗口,则向发送端发送重传请求,同时确定当前时刻为重传时间窗口开始时刻;发送端将保存的需重传的数据打包成报文发送给接收端;接收端在重传时间窗口结束时刻前收到发送端发来的重传数据,将该重传数据插入组帧緩冲中。本发明在保证数据传输实时性的前提下,避免了网络拥塞,提高了实时报文的丢包恢复效率。另外,本发明在重传消耗大于重传时间窗口时,直接进行I帧刷新或将数据直接解码,进一步保证了丢包的恢复,提高了丢包恢复的网络适应能力。图1为本发明实施例提供的在实时媒体流传输中恢复丟包的流程图;图2为本发明实施例一提供的在实时媒体流传输中恢复丢包的流程图;图3为本发明实施例二提供的在实时媒体流传输中恢复丢包的流程图;图4为本发明实施例三提供的在实时媒体流传输中恢复丢包的流程图;图5为本发明实施例提供的在实时媒体流传输中,进行丢包恢复的发送端单元的结构示意图;图6为本发明实施例一提供的在实时媒体流传输中,进行丢包恢复的接收端单元的结构示意图;图7为本发明实施例三提供的在实时媒体流传输中,进行丢包恢复的接收端单元的结构示意图。具体实施方式下面结合附图及具体实施例对本发明再作进一步详细的说明。首先对本发明实施例中提到的"重传消耗"和"重传时间窗口"的物理意义进行说明重传消耗指的是,从接收端发现丟包起、到接收端向发送端发起重传请求、再到接收端收到发送端发来的重传包、并将该包插入緩沖区中的相应位置止,这其间的时长。重传时间窗口指的是,从将一个非重传包放入组帧緩冲,到将该包送往解码器所消耗的时长作为重传时间窗口的长度。可见,重传时间窗口的大小与接收端的组帧緩沖的长度对应。组帧緩冲的长度越长,重传时间窗口所代表的时长越大;组帧緩冲的长度越短,重传时间窗口所代表的时长越小。图1为本发明实施例提供的在实时媒体流传输中恢复丟包的流程图,如图1所示,其具体步骤如下步骤101:接收端预先设定重传消耗和重传时间窗口。本发明实施例中,重传消耗可通过如下方式得到接收端发送一个测试信令给发送端,并等待发送端返回的响应,则将从接收端发送测试信令到收到响应之间的时长,作为重传消耗。接收端可每隔一段时间更新一次重传;肖耗,以使得重传消耗更能适应网络状况的变化。步骤102:发送端将编码后的数据放入发送緩冲中,确定要发送发送緩冲中的数据,将数据打包成RTP报文,将RTP报文发送出去,同时将RTP参数和数据对应保存一份在保留緩冲中,以备重传。RTP参数包括RTP报文头中的时间戳、包序列号等。当数据和RTP参数溢出保留緩冲时,该数据和RTP参数即删除。步骤103:接收端发现丢包,判断重传消耗是否不大于重传时间窗口,若是,执行步骤104;否则,执行步骤108。由于丟包发现时机会影响到音、视频数据的播放延时,因此,本发明实施例中,丢包发现时机可以在对接收数据的去抖动、乱序后。具体地,接收端可以预先设置一个容许抖动时长,若接收端在容许抖动时长内未接收到数据,则确定产生丟包。步骤104:接收端确定当前时刻为重传时间窗口开始时刻,向发送端发送重传请求,该请求中携带需重传的数据类型、起始重传包的序列号、需重传的包的连续个数、每个包重传的次数。可以看出,重传时间窗口开始时刻即发现丢包并确定重传该包时刻。步骤104中的重传请求针对的是丢包连续的情况,若丢包不连续,则可为每个丢包发送一个重传请求,或者,也可将各不连续的丢包的序列号携带在同一个重传请求中。这里,对于每个包重传的次数,一般来说,如果需要保证高可靠性的情况下,在网络带宽允许的范围内,可以设定每个包重传的次数自2次起计数,并可以根据实际的网络情况适当地调整该每个包重传的次数。需重传的数据类型包括视频、音频等类型。步骤105:发送端收到重传请求,根据该请求中的需重传的数据类型及起始重传包的序列号、需重传的包的连续个数,从对应数据类型的保留緩冲中找到需重传的数据及RTP参数,将需重传的数据及RTP参数保存到重传缓沖;依次从重传緩冲取出需重传的数据及RTP参数并打包成RTP报文,并将报文头中的载荷类型字段设定为特定的值,通过复用RTP通道、并采用最高IP优先级将RTP报文发送出去。RTP报文的格式如表1所示:<table>tableseeoriginaldocumentpage11</column></row><table>Contributionsource(CSRC:variable0-15items,2octetseach)_可使用RFC标准中未定义的载荷类型值来作为本步骤中的RTP报文头中的载荷类型值。例如若重传数据类型为音频,则载荷类型值可为67;若重传数据类型为视频,则载荷类型值可为68。将栽荷类型值定义为特定的值,这样,接收端在进行抖动计算时,就不会将该RTP报文的延时计算在内,从而不会产生抖动计算误差。同时,通过复用RTP通道重传数据包,就可以避免发送端、接收端新打开端口,减少端口浪费。对于重传请求中携带的每个包重传的次数,发送端根据该次数,将每个包含重传数据的RTP报文重复发送。步骤106:接收端收到RTP报文,根据报文头中的载荷类型值,确定报文中的数据为重传数据,则对报文中的数据进行去抖动、乱序处理后,插入到组帧緩沖中。当所有丢包都重传成功后,则对数据进行解码,将解码后的数据输出,本流程结束。步骤107:接收端检测到重传时间窗口结束时刻到来,判断是否所有丢包都已重传成功,若是,本流程结束;否则,执行步骤108。重传时间窗口结束时刻即应该将丢包对应的重传包送往解码器的时刻。步骤108:接收端向发送端发送I帧刷新请求或直接对该不完整数据进行解码。若本实施例针对的是视频数据,则步骤108为接收端向发送端发送I帧刷新请求;若本实施例针对的是音频数据,则由于音频数据重传中没有I帧刷新这一步骤,则步骤108为接收端直接对该不完整数据进行解码。从图l所示实施例可以看出,当接收端发现丢包时,若重传消耗不大于重传时间窗口,则只向发送端请求重传丢包;若重传消耗大于重传时间窗口,则向发送端请求I帧刷新或者直接进行解码。这样,可以在保证实时性的前提下,提高了网络适应能力,并提高了实时数据传输完整性,同时大大减少了视频数据恢复所占用的网络带宽。由于在实时媒体流传输中,在有些场合下,对实时性要求较强;而在另夕l、一些情况下,对音、视频的播放连续性要求较强。本发明实施例通过对重传时间窗口的不同设置,来满足实时性、播放连续性的不同需求。实施例一、在丟包恢复中满足播放连续性要求。图2为本发明实施例一提供的在实时媒体流传输中恢复丢包的流程图,如图2所示,其具体步骤如下步骤201:接收端预先设定重传消耗,并根据组帧緩沖长度确定重传时间窗口。步骤202与步骤102相同。步骤203:接收端发现丢包,判断重传消耗是否不大于重传时间窗口,若是,执行步骤204;否则,执行步骤210。步骤204205与步骤104~105相同。步骤206:接收端接收到RTP报文,根据报文头中的载荷类型值,判断该报文中的数据是否为重传数据,若是,执行步骤208;否则,执行步骤207。步骤207:接收端对报文进行去抖动处理,根据报文中的包序列号,将报文中的数据插入到组帧緩冲中,本流程结束。步骤208:接收端根据报文中的包序列号,将报文中的重传数据插入到组帧緩冲中。步骤209:接收端在重传时间窗口结束时刻前接收到所有丢包对应的重传包,则将组帧緩冲中的数椐送往解码器,解码器对该数据解码后,将解码后的数据输出,本流程结束。若重传时间窗口结束时刻已到但仍有丢包未重传成功,则接收端向发送端发送1帧刷新请求,或者直接将组帧緩冲中的数据发往解码器。步骤210:接收端向发送端发送1帧刷新请求,或者直接将组帧緩沖中的数据发往解码器。从图2所示实施例可以看出,当发生丢包时,由于组帧緩冲会等待丢包都重传成功后,才将完整的数据送往解码器,因此,会造成播放时延。实施例二、在丢包恢复中满足实时性要求。图3为本发明实施例二提供的在实时媒体流传输中恢复丢包的流程图,如图3所示,其具体步骤如下步骤301:接收端预先设定重传消耗,并根据组帧緩沖的长度确定重传时间窗口。步骤302与步骤102相同。步骤303:接收端发现丟包,判断重传消耗是否不大于重传时间窗口,若是,执行步骤304;否则,执行步骤310。步骤304:接收端确定当前时刻为重传时间窗口开始时刻,并向发送端发送重传请求,该请求中携带需重传的数据类型、起始重传包的序列号、需重传的包的连续个数、每个包重传的次数;同时,停止组帧緩冲向解码器输出数据,即停止解码。步骤305与步骤105相同。步骤306:接收端接收到RTP报文,根据报文头中的载荷类型值,判断该报文中的数据是否为重传数据,若是,执行步骤308;否则,执行步骤307。步骤307:接收端对报文进行去抖动处理,根据报文中的包序列号,将报文中的数据插入到组帧緩冲中,本流程结束。步骤308:接收端根据报文中的包序列号,将报文中的数据插入到组帧緩沖中。步骤309:接收端在重传时间窗口结束时刻前接收到所有丢包对应的重传包,则恢复向解码器输出数据,即恢复解码,解码器对组帧緩沖输出的数掂进行快进解码,并在所有数据都解码完毕后,再输出解码后数据,本流程结束。解码器进行快进解码是为了减少播放时延,保证输出的图像或声音延时为固定的组帧緩冲造成的延时,在进行快进解码时不进行输出是因为此时输出会造成快进播放的效果。若重传时间窗口结束时刻已到但仍有丢包未重传成功,则接收端向发送端发送I帧刷新请求或直接将组帧緩冲中的数据输出到解码器开始解码。步骤310:接收端向发送端发送I帧刷新请求,或者直接将组帧緩沖中的数据发往解码器。另外,为了使得重传时间窗口更能适应网络状况的变化,以在保证重传成功的前提下减少时延,可以在接收端连续m(m21)次检测到丢包重传失败即重传时间窗口结束时刻已到、但仍有丢包未重传成功后,增大重传时间窗口的大小即增加组帧緩沖的长度,并可增加每个包的重传次数;并在接收端连续n(n^l)次丢包重传成功即在重传时间窗口结束时刻前所有丢包都已重传成功后,减少重传时间窗口的大小即减少组帧緩冲的长度,并可减小每个包的重传次数。这是因为若接收端连续m(m>_l)次检测到丢包重传失败,则说明网络情况变差,导致重传消耗增大、重传包传输成功率降低等,此时增大组帧缓沖长度,可增加丢包重传的成功率;若接收端连续n(r^l)次丢包重传成功,则说明网络情况变好,这会导致重传消耗减少,重传包更易传输成功,此时可减少组帧緩冲长度,以减少播放延迟。在本发明实施例中,重传消耗也会每隔一段时间更新一次,这里重传时间窗口也会随实际网络情况进行调整,这样,就会使得重传消耗和重传时间窗口更能适应实际的网络情况,提高了媒体流的播放质量。从图3所示实施例可以看出,当接收端发现丢包后,立刻停止解码,并在所有丢包都已重传成功后,才恢复解码,这样,会造成播放停止,但能保证恢复播放时播放的为最新的音、视频数据。实施例三、在丢包恢复中,平衡满足实时性要求和播放连续性要求。图4为本发明实施例三提供的在实时媒体流传输中恢复丢包的流程图,如图4所示,其具体步骤如下步骤401:接收端预先设定重传消耗,并根据一级组帧緩冲的长度确定重传时间窗口1、根据二级组帧緩沖的长度确定重传时间窗口2。重传时间窗口1为将一个非重传包放入一级组帧緩沖到将该包送往二级组帧緩沖所消耗的时长。重传时间窗口2为将一个非重传包从一级组帧緩沖放入二级组帧緩冲到将该包送往解码器所消耗的时长。根据图2、3所示实施例可知一级组帧緩沖长度越长实时性越差,二级組帧緩沖长度越长,播放连续性越差;因此,若对实时性要求较强,可将一级组帧緩冲长度设置得较小,同时将二级组帧緩冲的长度设置得较长;若对播放连续性要求较强,可将二级组帧緩冲长度设置得较小,同时将一级组帧緩沖长度设置得较长。无论如何设置,都要保证重传时间窗口1+重传时间窗口2&重传消耗。步骤402与步骤102相同。步骤403:接收端发现丢包,判断重传消耗是否不大于(重传时间窗口l+重传时间窗口2),若是,执行步骤404;否则,执行步骤413。步骤404:接收端确定当前时刻为重传时间窗口1开始时刻,同时向发送端发送重传请求,该请求中携带需重传的数据类型、起始重传包的序列号、需重传的包的连续个数、每个包重传的次数。步骤405与步骤105相同。步骤406:接收端接收到RTP报文,根据报文头中的载荷类型值,判断该报文中的数据是否为重传数据,若是,执行步骤408;否则,执行步骤407。步骤407:接收端对报文进行去抖动处理,根据报文中的包序列号,将报文中的数据插入到一级组帧緩沖中,本流程结束。只要一级组帧緩沖得到完整帧,就将该完整数据输出到二级组帧緩冲。步骤408:接收端根据报文中的包序列号,将报文中的数据插入到一级组帧緩沖或二级组帧緩冲中。步骤409:接收端检测到重传时间窗口l结束时刻已到,判断是否所有丢包都已重传成功,若是,执行步骤410;否则,执行步骤411。步骤410:接收端将一级组帧緩冲中的数据输出到二级组帧緩沖,本流程结束。步骤411:接收端停止二级组帧緩冲向解码器输出数据,同时确定重传时间窗口2开始时刻到来,并将一级组帧緩沖中的不完整数据输出到二级组帧緩冲。步骤412:接收端在重传时间窗口2结束时刻前接收到所有丢包对应的重传包,恢复向解码器输出数据;解码器对数据进行快进解码,并在对所有数据解码成功后,再输出解码后的数据,本流程结束。当重传时间窗口2结束时刻已到但仍有丢包未重传成功时,若数据为视频数据,则接收端向发送端发送I帧刷新请求;若数据为音频数据,则接收端直接将二级组帧緩冲中的数据输出到解码器。步骤413:接收端向发送端发送I帧刷新请求,或者直接将组帧緩冲中的数据发往解码器。另外,若接收端连续m(m21)次检测到重传时间窗口1+重传时间窗口2结束时刻已到而重传仍未成功,则接收端增大重传时间窗口2的大小,并可增大包重传的次数;若接收端连续n(r^1)次检测到在重传时间窗口1+重传时间窗口2结束时刻前所有丢包就已重传成功,则接收端减少重传时间窗口2的大小,并可减少包重传的次^:。以下给出本发明实施例提供的丢包恢复系统,该系统包括发送端单元和接收端单元,其中发送端单元用于将数据打包成实时传输协议RTP报文发送给接收端单元,同时保存数据和RTP参数;接收到重传请求,将保存的需重传的数据和RTP参数打包成RTP报文发送给接收端单元。接收端单元用于统计包重传所消耗的时长即重传消耗,把将一个非重传包放入组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口,当发现丟包时,若确定重传消耗不大于重传时间窗口,则向发送端单元发送重传请求,同时确定当前时刻为重传时间窗口开始时刻;在重传时间窗口结束时刻前收到发送端单元发来的重传数据,将该重传数据插入组帧緩冲中。图5为本发明实施例提供的实时媒体流传输中的发送端单元的结构示意图,如图5所示,其主要包括编码模块51、发送緩沖52、发送模块53、保留緩沖54、重传模块55、重传緩冲56和I帧刷新模块57,其中编码模块51:用于对数据进行编码,将编码后的数据输出到发送緩冲52。发送緩冲52:接收并緩存编码模块51输入的数据。发送模块53:确定要发送数据,从发送緩沖52中取出数据,将数据打包成RTP报文,将RTP报文发送给接收端单元,同时将RTP参数和数据对应保存一份到保留緩冲54。保留緩冲54:对应保存已发送的数据和RTP参数,以备重传。重传模块55:接收接收端单元发来的重传请求,根据请求中携带的重传数据类型、起始重传包序列号、需重传的包的连续个数、每个包重传的次数,从保留緩冲54中取出重传数据和RTP参数,将重传数据和RTP参数放入重传緩沖56等待重传;依次从重传緩沖56取出数据和RTP参数打包成RTP报文,将RTP报文头中的载荷类型值设置为特定值,将RTP报文通过复用RTP通道、并采用最高IP优先级发送给接收端单元。重传緩冲56:对应保存待重传的数据和RTP参数。I帧刷新模块57:接收接收端单元发来的I帧刷新请求,根据该请求从编码模块51获取数据。图6为本发明实施例一提供的实时媒体流传输中的接收端单元的结构示意图,如图6所示,其主要包括接收模块61、丟包发现模块62、排序缓冲63、组帧緩沖64、重传请求模块65、解码模块66和I帧刷新模块67,其中接收模块61:接收发送端单元发来的RTP报文,根据报文中的载荷类型值判断报文中携带的数据是否为重传数据,若是,直接根据报文中的包序列号,将报文中的重传数据插入组帧緩沖64中;否则,根据报文中的包序列号,将报文中的数据插入排序緩沖63中。丢包发现模块62:统计包重传所消耗的时长即重传消耗,把将一个非重传包放入组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口,每检测到排序緩沖中的预定范围内的数据完成去抖动、乱序处理时,判断一次是否发生丢包,若发生,判断重传消耗是否不大于重传时间窗口,若不大于,确定当前时刻为重传时间窗口开始时刻,同时向重传请求模块65发送重传指示,该指示中携带需重传的数据类型、起始重传包的序列号、需重传的包的连续个数、每个包重传的次数;若小于,向I帧刷新模块67发送I帧刷新指示,或者向组帧缓冲64发送解码指示。当检测到重传时间窗口结束时刻已到,但组帧緩沖64中仍有丢包未重传成功,则向I帧刷新模块67发送I帧刷新指示,该指示中携带需刷新的帧标识或条带标识,或者向组帧緩冲64发送解码指示。排序緩冲63:对接收模块61发来的数据进行去抖动、乱序处理,将去抖动、乱序后的数据送入组帧緩冲64。组帧緩冲64:对排序緩冲63发来的数据进行組帧处理,组帧成功后,将数据发往解码模块66;接收丢包发现模块62发来的解码指示,将数据发往解码模块66。重传请求模块65:接收丢包发现模块62发来的重传指示,将该指示中的需重传的数据类型及需重传的包序列号携带在重传请求中发送给发送端单元。解码模块66:对组帕缓沖64发来的帧进行解码,将解码后的数据输出。I帧刷新模块67:接收丢包发现模块62发来的I帧刷新请求,向发送端单元发送I帧刷新请求。若图6所示接收端针对的是音频数据,则不包含I帧刷新模块67。以下给出本发明实施例二提供的实时媒体流传输中的接收端单元的结构示意图,该实施例中的接收端单元的组成部分与图6所示接收端单元的组成部分相同,且该实施例中的接收端单元的接收模块01、丢包发现模块02、排序緩沖03、I帧刷新模块07与图6中的接收端单元的接收模块61、丟包发现模块62、排序緩冲63、I帧刷新模块67分别相同,区别在于组帧緩冲04:用于对排序緩沖03发来的数据进行组帧处理,得到一个完整帧后,将数据发往解码模块06;当接收到丢包发现模块02发来的丢包指示时,停止向解码模块06输出数据,接受接收模块Ol插入的重传数椐,当检测到所有丢包都重传成功时,恢复向解码模块06输出数据,并向解码模块06发送不输出指示;接收丢包发现模块02发来的解码指示,将数据发往解码模块06。重传请求模块05:接收丢包发现模块02发来重传指示,将该指示中的需重传的数据类型及需重传的包序列号携带在重传请求中发送给发送端单元。解码模块06:对组帧緩冲04发来的帧进行解码,将解码后的数据输出。当接收到组帧緩冲04发来的数据,并接收到不输出指示时,对组帧緩沖04发来的数据进行快进解码,并在对所有数据都解码完毕后,将解码后的数据输出。图7为本发明实施例三提供的接收端单元的结构示意图,如图7所示,其主要包括接收模块71、丢包发现模块72、排序緩冲73、一级组帧緩沖741、二级组帧緩沖742、重传请求模块75、解码模块76和I帧刷新模块77,其中I帧刷新模块77与图6中的I帧刷新模块67相同。接收模块71:接收发送端单元发来的RTP报文,根据报文中的载荷类型值判断报文中携带的数据是否为重传数据,若是,直接根据报文中的包序列号,将报文中的重传数据插入一级组帧緩冲741或二级组帧緩沖742中;否则,根据报文中的包序列号,将报文中的数据插入排序缓沖73中。丢包发现模块72:统计包重传所消耗的时长即重传消耗,把将一个非重传包放入一级組帧緩冲到将该包送往二级组帧緩沖所消耗的时长作为重传时间窗口1,把将一个非重传包从一级组帧緩冲放入二级组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口2,每检测到排序緩冲中的预定范围内的数据完成去抖动、乱序处理时,判断一次是否发生丢包,若发生,判断重传消耗是否不大于重传时间窗口1+重传时间窗口2,若不大于,确定当前时刻为重传时间窗口l开始时刻,同时向重传请求模块75发送重传指示,该指示中携带需重传的数据类型及需重传的包的序列号;若小于,向I帧刷新模块77发送I帧刷新指示,或者向二级组帧緩冲742发送解码指示。当检测到重传时间窗口1结束时刻已到,但一级组帧緩沖741中仍有丢包未重传成功时,则向一级组帧緩沖741发送输出指示,同时向二级组帧緩冲742发送停止输出指示,同时确定重传时间窗口2开始时刻到来;当检测到重传时间窗口2结束时刻已到,但二级组帧緩冲742中仍有丢包未重传成功时,则向I帧刷新模块77发送I帧刷新指示,该指示中携带需刷新的帧标识或条带标识,或者向二级组帧緩沖742发送解码指示。排序緩冲73:对接收模块71发来的数据进行去抖动、乱序处理,将去抖动、乱序后的数据送入一级组帧緩冲741。一级组帧緩冲741:对排序緩冲73发来的数据进行组帧处理,组帧成功后将数据发送到二级组帧緩冲742;接收丢包发现模块72发来的输出指示,将本緩沖中的不完整数据输出到二级组帧缓冲742。二级組帧緩冲742:对一级組帧緩冲741发来的数据进行组帧处理,将数据发送到解码模块76;当收到丢包发现模块72发来的停止输出指示时,停止向解码模块76输出数据,并接收一级组帧緩冲741发来的数据,接受接收模块71插入的重传数据,当检测到所有丢包都已重传成功时,恢复向解码模块76输出数据,并向解码模块76发送不输出指示;接收丢包发现模块72发来的解码指示,将数据发往解码模块76。重传请求模块75:接收丢包发现模块72发来重传指示,将该指示中的需重传的数据类型及需重传的包序列号携带在重传请求中发送给发送端单元。解码模块76:对二级组帧緩冲742发来的数据进行解码,将解码后的数据输出。当接收到二级组帧緩沖742发来的数据,并接收到不输出指示时,对二级组帧緩冲742发来的数据进行快进解码,并在对所有数据都解码完毕后,将解码后的数据输出。以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1、一种实时报文丢包恢复方法,其特征在于,接收端统计包重传所消耗的时长即重传消耗,并把将一个非重传包放入组帧缓冲到将该包送往解码器所消耗的时长作为重传时间窗口,包括接收端发现丢包,若确定重传消耗不大于重传时间窗口,则向发送端发送重传请求,同时确定当前时刻为重传时间窗口开始时刻;在重传时间窗口结束时刻前收到发送端发来的重传数据,将该重传数据插入组帧缓冲中。2、如权利要求l所述的方法,其特征在于,所述接收端统计包重传所消耗的时长即重传消耗包括接收端每隔预定时间统计并更新一次重传消耗。3、如权利要求l所述的方法,其特征在于,所述接收端发现丢包进一步包括停止组顿緩冲向解码器输出数据;且,所述将重传数据插入组帧緩沖中之后进一步包括确定所有丢包都已重传成功,恢复组帧緩冲向解码器输出数据。4、如权利要求3所述的方法,其特征在于,所述恢复组帧緩沖向解码器输出数据进一步包括解码器对数据进行快进解码,并在对组帧緩冲输出的所有数据都解码成功后,将解码后的数据输出。5、如权利要求l所述的方法,其特征在于,所述组帧緩冲包括一级组帧緩沖和二级组帧緩沖,把将一个非重传包放入一级组帧緩冲到将该包送往二级组帧緩沖所消耗的时长作为重传时间窗口1,把将一个非重传包从一级组帧緩冲放入二级组顿緩冲到将该包送往解码器所消耗的时长作为重传时间窗口2;所述确定当前时刻为重传时间窗口开始时刻为确定当前时刻为重传时间窗口1开始时刻,所述接收端在重传时间窗口结束时刻前收到发送端发来的重传数据为接收端在重传时间窗口1结束时刻前收到发送端发来的重传数据;所述将该重传数据插入组帧緩冲中包括根据重传数据的序列号,将重传数据插入一级组帧緩冲或二级组帧緩冲;所述将该重传数据插入组帧緩冲中进一步包括检测到重传时间窗口l结束时刻已到但仍有丢包未重传成功,则停止二级组帧緩冲向解码器输出数据,同时确定重传时间窗口2开始时刻到来,在所有丟包都重传成功后,恢复二级组帧緩沖向解码器输出数据。6、如权利要求5所述的方法,其特征在于,所述恢复二级组帧緩冲向解码器输出数据进一步包括解码器对二级组帧緩沖输出的数据进行快进解码,并在对所有数据都解码完毕后,将解码后的数据输出。7、如权利要求1至6任一所述的方法,其特征在于,所述方法进一步包括接收端连续预定次数检测到重传时间窗口结束时刻已到、但丟包仍未重传成功,则增大组帧緩沖长度,和/或,通知发送端增加丢包的重传次数。8、如权利要求1至6任一所述的方法,其特征在于,所述方法进一步包括接收端连续预定次数检测到在重传时间窗口结束时刻前,.丢包就已重传成功,则减少组帕緩冲的长度,和/或,通知发送端减少丢包的重传次数。9、如权利要求5或6所述的方法,其特征在于,所述方法进一步包括检测到用户对播放连续性的要求大于对实时性的要求,则将一级组帧缓冲的长度设置得长于二级组帧緩冲的长度。10、如权利要求5或6所述的方法,其特征在于,所述方法进一步包括检测到用户对实时性的要求大于对播放连续性的要求,则将二级组帧緩沖的长度设置得长于一级组帧緩冲的长度。11、如权利要求1至6任一所述的方法,其特征在于,所述接收端发现丢包包括接收端在预定的容许抖动时长内未接收到来自发送端的数据,则确定发生丟包。12、如权利要求1至6任一所述的方法,其特征在于,所述丢包为视频数据,所述方法进一步包括重传时间窗口结束时刻已到,接收端仍有丢包未重传成功,则接收端向发送端请求I帧刷新,或者直接将组帧緩沖中的数据输出到解码器。13、如权利要求1至6任一所述的方法,其特征在于,所述丟包为音频数据,所述方法进一步包括重传时间窗口结束时刻已到,接收端丟包仍未重传成功,则接收端直接将组帧緩冲中的数据输出到解码器。.14、一种实时报文丢包恢复方法,其特征在于,接收端统计包重传所消耗的时长即重传消耗,并把将一个非重传包放入组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口,包括发送端将数据打包成实时报文发送给接收端,同时保存数据;接收端发现丢包,若确定重传消耗不大于重传时间窗口,则向发送端发送重传请求,同时确定当前时刻为重传时间窗口开始时刻,发送端将保存的需重传的数据打包成报文发送给接收端;接收端在重传时间窗口结束时刻前收到发送端发来的重传数据,将该重传数据插入组帧緩沖中。15、如权利要求14所述的方法,其特征在于,所述发送端将报文发送给接收端包括发送端将报文通过已有的实时报文通道发送给接收端。16、如权利要求14或15所述的方法,其特征在于,所述发送端将报文发送给接收端包括发送端将报文采用最高IP优先级发送给接收端。17、如权利要求14或15所述的方法,其特征在于,所述发送端将保存的需重传的数据打包成报文发送给接收端进一步包括将报文中的载荷类型值被设定为RFC标准中未定义的值,以表示该报文中的数据为重传数据。18、一种实时报文丢包恢复系统,其特征在于,包括发送端单元,将数据打包成实时报文发送给接收端单元,同时保存数据;接收到重传请求,将保存的需重传的数据打包成报文发送给接收端单元;接收端单元,统计包重传所消耗的时长即重传消耗,把将一个非重传包放入組帧緩沖到将该包送往解码器所消耗的时长作为重传时间窗口,当发现丢包时,若确定重传消耗不大于重传时间窗口,则向发送端单元发送重传请求,同时确定当前时刻为重传时间窗口开始时刻;在重传时间窗口结束时刻前收到发送端单元发来的重传数据,将该重传数据插入组帧緩冲中。19、如权利要求18所述的系统,其特征在于,所述发送端单元包括发送緩冲,緩存待发送数据;发送模块,从发送緩沖取出数据,将数据打包成实时报文,将报文发送给接收端单元,同时将数据保存到保留緩冲;保留緩冲,緩存已发送数据;重传模块,接收接收端单元发来的重传请求,根据请求中携带的重传数据信息,从保留緩沖中取出重传数椐放入重传緩冲,从重传緩冲依次取出数据并打包成报文发送给接收端单元;重传緩冲,緩存待重传的数据。20、一种接收端单元,其特征在于,包括接收模块,接收发送端单元发来的重传数据,将重传数据插入组帧緩沖;丢包发现模块,统计包重传所消耗的时长即重传消耗,把将一个非重传包放入组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口;检测到发生丢包,且确定重传消耗不大于重传时间窗口,向重传请求模块发送重传指示,该指示中携带需重传的数据信息;组帧緩冲,接收接收模块插入的数据;重传请求模块,接收丢包发现模块发来的重传指示,将该指示中的需重传的数据信息携带在重传请求中发送给发送端单元。21、如权利要求20所述的接收端单元,其特征在于,该接收端单元进一步包括排序緩沖,用于对接收模块发来的数据包进行去抖动、乱序处理,将去抖动、乱序后的数据送入组帧緩冲,且,所述接收模块进一步用于,接收到发送端单元发来的非重传包,将该包放入排序緩沖。22、如权利要求20所述的接收端单元,其特征在于,所述组帧緩冲进一步用于,当接收到丢包发现模块发来的丟包指示时,停止向解码模块输出数据,当检测到所有丢包都重传成功时,恢复向解码模块输出数据,并向解码模块发送不输出指示;解码模块,当接收到组帧緩沖发来的数据,并接收到不输出指示时,对组帧緩冲发来的数据进行快进解码,并在对所有数据都解码完毕后,将解码后的数据输出。23、如权利要求20所述的接收端单元,其特征在于,所述组帧緩冲包括一级组帧緩冲和二级组帧緩沖,且所述接收端单元进一步包括解码模块,其中一级组帧缓冲,当接收到输出指示时,将本緩冲中的不完整数据输出到二级组帧緩沖;二级组帧緩沖,当接收到停止输出指示时,停止向解码模块输出数据,同时确定重传时间窗口2开始时刻到来,当在重传时间窗口2结束时刻前接收到所有丢包对应的重传包时,恢复向解码模块输出数据;解码模块,对二级组帧緩沖发来的数据进行解码,将解码后的数据输出;且,所述丢包发现模块进一步用于,把将一个非重传包放入一级组帧緩冲到将该包送往二级组帧緩沖所消耗的时长作为重传时间窗口],把将一个非重传包从一级组帧緩冲放入二级组帧緩冲到将该包送往解码器所消耗的时长作为重传时间窗口2;当向重传请求模块发送重传指示的同时,确定当前时刻为重传时间窗口1开始时刻,若检测到重传时间窗口1结束时刻已到但一级组帧緩冲中仍有丢包未重传成功,则确定重传时间窗口2开始时刻到来,并向一级组帧緩沖发送输出指示,向二级组帧緩沖发送停止输出指示。24、如权利要求23所述的接收端单元,其特征在于,所述解码模块进一步用于,当接收到不输出指示时,对二级组帧緩沖发来的数据进行快进解码,并在对所有数据都解码完毕后,将解码后的数据输出;且,所述二级组帧緩冲在恢复向解码模块输出数据的同时,向解码模块发送不输出指示。全文摘要本发明公开了实时报文丢包恢复方法、系统及接收端单元。方法包括接收端统计包重传所消耗的时长即重传消耗,把将一个非重传包放入组帧缓冲到将该包送往解码器所消耗的时长作为重传时间窗口;发送端将数据打包成实时报文发送给接收端,同时保存数据;接收端发现丢包,若确定重传消耗不大于重传时间窗口,则向发送端发送重传请求,同时确定当前时刻为重传时间窗口开始时刻,发送端将保存的需重传的数据打包成报文发送给接收端;接收端在重传时间窗口结束时刻前收到发送端发来的重传数据,将该重传数据插入组帧缓冲中。本发明在保证数据传输实时性的前提下,减少了恢复丢包所占用的网络带宽。文档编号H04L1/18GK101222311SQ20081005706公开日2008年7月16日申请日期2008年1月29日优先权日2008年1月29日发明者余恒乐,罗奇勇申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1