掌桥专利:专业的专利平台
掌桥专利
首页

数据包恢复方法、装置和系统

文献发布时间:2023-06-19 11:21:00


数据包恢复方法、装置和系统

技术领域

本发明涉及数据传输技术领域,具体而言,涉及一种数据包恢复方法、装置和系统。

背景技术

在网络传输视频流的过程中,由于网络的抖动、延时、丢包、乱序等原因,会引起视频画面的花屏、卡顿等现象,一般可以通过自动请求重传(Automatic Repeat-ReQuest,简称为ARQ)机制对这些情况进行改善,但是此机制在高延时的弱网络环境下作用不大,例如,在高延时的弱网络环境下,需要多次重新传输视频帧等,这样必然会大大降低视频帧的传输效率。

针对上述相关技术中在高延时的弱网络环境下采用自动请求重传机制导致视频帧传输效率低的问题,目前尚未提出有效的解决方案。

发明内容

本发明实施例提供了一种数据包恢复方法、装置和系统,以至少解决相关技术中在高延时的弱网络环境下采用自动请求重传机制导致视频帧传输效率低的技术问题。

根据本发明实施例的一个方面,提供了一种数据包恢复方法,包括:确定待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包;依次将所述分组数据包、所述分组数据包对应的冗余数据包发送给接收端,以使所述接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对所述待传输视频帧中丢失数据包进行恢复。

可选地,确定待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包包括:将待传输视频帧拆分成预定长度的数据包,得到所述待传输视频帧的分组数据包;对所述分组数据包进行冗余处理,得到所述分组数据包对应的冗余数据包。

可选地,对所述分组数据包进行冗余处理,得到所述分组数据包对应的冗余数据包包括:初始化第一冗余参数,其中,所述第一冗余参数包括以下至少之一:冗余度、待冗余分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数;确定待冗余分组数据包的起始位置;依据所述第一冗余参数和所述待冗余分组数据包的起始位置对所述分组数据包进行冗余处理,得到所述分组数据包对应的冗余数据包。

可选地,在依据所述冗余参数和所述待冗余分组数据包的起始位置对所述分组数据包进行冗余处理,得到所述分组数据包对应的冗余数据包之后,还包括:调整所述第一冗余参数。

根据本发明实施例的另一方面,还提供了一种数据包恢复方法,包括:接收发送端发送的待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包;在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对所述待传输视频帧中丢失数据包进行恢复。

可选地,在丢失数据包的数量小于或者等于冗余数据包的数量时,对所述待传输视频帧中丢失数据包进行恢复包括:初始化第二冗余参数,其中,所述第二冗余参数包括以下至少之一:分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数;确定未丢失数据包;依据所述第二冗余参数和所述未丢失数据包对所述待传输视频帧中丢失数据包进行恢复处理。

可选地,在接收发送端发送的待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包之后,还包括:在丢失数据包的数量大于冗余数据包的数量的情况下,重传所述分组数据包和所述分组数据包对应的冗余数据包。

根据本发明实施例的另一方面,还提供了一种数据包恢复装置,包括:确定模块,用于确定待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包;发送模块,用于依次将所述分组数据包、所述分组数据包对应的冗余数据包发送给接收端,以使所述接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对所述待传输视频帧中丢失数据包进行恢复。

根据本发明实施例的另一方面,还提供了一种数据包恢复装置,包括:接收模块,用于接收发送端发送的待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包;恢复模块,用于在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对所述待传输视频帧中丢失数据包进行恢复。

根据本发明实施例的另一方面,还提供了一种数据包恢复系统,所述系统包括:发送端和接收端,其中,所述发送端用于确定待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包,依次将所述分组数据包、所述分组数据包对应的冗余数据包发送给接收端;所述接收端用于接收发送端发送的待传输视频帧的分组数据包和所述分组数据包对应的冗余数据包,并在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对所述待传输视频帧中丢失数据包进行恢复。

在本发明实施例中,采用确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包;依次将分组数据包、分组数据包对应的冗余数据包发送给接收端,以使接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复,通过依次将待传输视频帧的分组数据包和该分组数据包对应的冗余数据包发送给接收端,使得接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复,达到了避免重传待传输视频帧的目的,从而实现了提高在高延时弱网络环境下的视频帧传输效率的技术效果,进而解决了相关技术中在高延时的弱网络环境下采用自动请求重传机制导致视频帧传输效率低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种数据包恢复方法的流程图;

图2是根据本发明实施例的另一种数据包恢复方法的流程图;

图3是根据本发明实施例的一种数据包恢复装置的示意图;

图4是根据本发明实施例的另一种数据包恢复装置的示意图;

图5是根据本发明可选实施例的数据包恢复系统的示意图;

图6是根据本发明可选实施例的发送端处理流程的示意图;

图7是根据本发明可选实施例的接收端处理流程的示意图;

图8是根据本发明可选实施例的视频帧对应的VFEC组的示意图;

图9是根据本发明可选实施例的VFEC进行丢包恢复的原理图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种数据包恢复方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的一种数据包恢复方法的流程图,如图1所示,该数据包恢复方法可以应用于发送端,具体包括如下步骤:

步骤S102,确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包;

步骤S104,依次将分组数据包、分组数据包对应的冗余数据包发送给接收端,以使接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

上述待传输视频帧包括至少一组分组数据包。在具体实施过程中,上述待传输视频帧中分组数据包的数量可以根据应用场景而定,例如,待传输视频帧可以包括:第一分组数据包和第二分组数据包,其中,第一分组数据包和第一分组数据包对应的冗余数据包为第一组数据,第二分组数据包和第二分组数据包对应的冗余数据包为第二组数据。需要说明的是,接收端在对待传输视频帧中丢失数据包进行恢复时,可以利用丢失数据包所在组的未丢失数据包对丢失数据包进行恢复。

在一种可选的实施方式中,依次将待传输视频帧的分组数据包以及该分组数据包对应的冗余数据包发送给接收端,接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,直接对待传输视频帧中丢失数据包进行恢复;另外,接收端在丢失数据包的数量大于冗余数据包的数量的情况下,就会重新接收待传输视频帧的分组数据包以及该分组数据包对应的冗余数据包,也即是,重新依次将待传输视频帧的分组数据包以及该分组数据包对应的冗余数据包发送给接收端。

上述丢失数据包可以是在传输过程中丢失的分组数据包和/或分组数据包对应的冗余数据包。

在依次将分组数据包、分组数据包对应的冗余数据包发送给接收端的过程中,上述接收端可以记录丢失数据包的数量、冗余数据包的数量等。

通过上述步骤,可以实现通过依次将待传输视频帧的分组数据包和该分组数据包对应的冗余数据包发送给接收端,使得接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复,达到了避免重传待传输视频帧的目的,从而实现了提高在高延时弱网络环境下的视频帧传输效率的技术效果,进而解决了相关技术中在高延时的弱网络环境下采用自动请求重传机制导致视频帧传输效率低的技术问题。

可选地,确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包包括:将待传输视频帧拆分成预定长度的数据包,得到待传输视频帧的分组数据包;对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包。

在一种可选的实施方式中,需要将待传输视频帧拆分成预定长度的数据包,生成至少一个分组数据包,在具体实施过程中,对于待传输视频帧的分组数据的数量不做任何限定,例如,待传输视频帧拆分后可以包括一个分组数据包,也可以包括多个分组数据包。进一步地,再对待传输视频帧的分组数据包进行冗余处理,生成该分组数据包对应的冗余数据包。上述分组数据包对应的冗余数据包可以是对待传输视频帧的分组数据包进行冗余运算得到的。通过上述实施方式可以得到待传输视频帧的分组数据包和分组数据包对应的冗余数据,以便于后续利用待传输视频帧的分组数据包和分组数据包对应的冗余数据对待传输视频帧中丢失数据包进行恢复。

可选地,对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包包括:初始化第一冗余参数,其中,第一冗余参数包括以下至少之一:冗余度、待冗余分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数;确定待冗余分组数据包的起始位置;依据第一冗余参数和待冗余分组数据包的起始位置对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包。

上述初始化第一冗余参数也就是设置第一冗余参数,例如,可以对冗余度、待冗余分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数等任意一个第一冗余参数进行设置。上述确定待冗余分组数据包的起始位置也就是从分组数据包指定的后续要进行冗余处理的第一个分组数据包。在具体实施过程中,可以根据待冗余分组数据包的起始位置和待冗余分组数据包的数量,确定分组数据包需要进行冗余处理的分组数据包。

在一种可选的实施方式中,可以首先初始化第一冗余参数以及确定待冗余分组数据包的起始位置,然后再根据第一冗余参数和待冗余分组数据包的起始位置对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包。

需要说明的是,上述第一冗余参数包括但不限于冗余度、待冗余分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数。

可选地,在依据冗余参数和待冗余分组数据包的起始位置对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包之后,还包括:调整第一冗余参数。

在一种可选的实施方式中,可以基于在传输过程中丢失数据包的情况,动态调整第一冗余参数,例如,可以根据传输过程中丢失数据包的数量调整冗余度、待冗余分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数等任意一个或者多个第一冗余参数。通过上述实施方式可以有效降低丢包率。同时,为了避免频繁调整第一冗余参数影响性能,可以基于冗余度与丢包率的关系,确定调整第一冗余参数中的冗余度。

实施例2

根据本发明实施例,提供了另一种数据包恢复方法的实施例,图2是根据本发明实施例的另一种数据包恢复方法的流程图,如图2所示,该数据包恢复方法可以应用于接收端,具体包括如下步骤:

步骤S202,接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包;

步骤S204,在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

上述待传输视频帧包括至少一组分组数据包。在具体实施过程中,上述待传输视频帧中分组数据包的数量可以根据应用场景而定,例如,待传输视频帧可以包括:第一分组数据包和第二分组数据包,其中,第一分组数据包和第一分组数据包对应的冗余数据包为第一组数据,第二分组数据包和第二分组数据包对应的冗余数据包为第二组数据。需要说明的是,在对待传输视频帧中丢失数据包进行恢复时,可以利用丢失数据包所在组的未丢失数据包对丢失数据包进行恢复。

在一种可选的实施方式中,可以依次接收发送端发送的待传输视频帧的分组数据包以及该分组数据包对应的冗余数据包,在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,直接对待传输视频帧中丢失数据包进行恢复;另外,在丢失数据包的数量大于冗余数据包的数量的情况下,就会重新接收待传输视频帧的分组数据包以及该分组数据包对应的冗余数据包。

上述丢失数据包可以是在传输过程中丢失的分组数据包和/或分组数据包对应的冗余数据包。

在接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包的过程中,可以记录丢失数据包的数量、冗余数据包的数量等。

通过上述步骤,可以实现通过接收发送端发送的待传输视频帧的分组数据包和该分组数据包对应的冗余数据包,在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复,达到了避免重传待传输视频帧的目的,从而实现了提高在高延时弱网络环境下的视频帧传输效率的技术效果,进而解决了相关技术中在高延时的弱网络环境下采用自动请求重传机制导致视频帧传输效率低的技术问题。

可选地,在丢失数据包的数量小于或者等于冗余数据包的数量时,对待传输视频帧中丢失数据包进行恢复包括:初始化第二冗余参数,其中,第二冗余参数包括以下至少之一:分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数;确定未丢失数据包;依据第二冗余参数和未丢失数据包对待传输视频帧中丢失数据包进行恢复处理。

上述第二冗余参数包括但不限于分组数据包的数量、冗余数据包的大小、第一矩阵参数。上述未丢失数据包可以是在传输过程中没有丢失的分组数据包和/或分组数据包对应的冗余数据包。在具体实施过程中,可以首先初始化第二冗余参数以及确定未丢失数据包,再根据第二冗余参数和未丢失数据包对待传输视频帧中丢失数据包进行恢复处理。

可选地,在接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包之后,还包括:在丢失数据包的数量大于冗余数据包的数量的情况下,重传分组数据包和分组数据包对应的冗余数据包。

在接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据以后,如果丢失数据包的数量大于冗余数据包的数量,则重传分组数据包和分组数据包对应的冗余数据包,此时就会重新接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包。

实施例3

根据本发明实施例的另一方面,还提供了一种数据包恢复装置,图3是根据本发明实施例的一种数据包恢复装置的示意图,如图3所示,该数据包恢复装置包括:确定模块32和发送模块34。下面对该数据包恢复装置进行详细说明。

确定模块32,用于确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包;发送模块34,连接至上述确定模块32,用于依次将分组数据包、分组数据包对应的冗余数据包发送给接收端,以使接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

在上述实施例中,该数据包恢复装置可以通过依次将待传输视频帧的分组数据包和该分组数据包对应的冗余数据包发送给接收端,使得接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复,达到了避免重传待传输视频帧的目的,从而实现了提高在高延时弱网络环境下的视频帧传输效率的技术效果,进而解决了相关技术中在高延时的弱网络环境下采用自动请求重传机制导致视频帧传输效率低的技术问题。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;和/或,上述各个模块以任意组合的方式位于不同的处理器中。

此处需要说明的是,上述确定模块32和发送模块34对应于实施例1中的步骤S102至S104,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。

可选地,上述确定模块32包括:第一处理单元,用于将待传输视频帧拆分成预定长度的数据包,得到待传输视频帧的分组数据包;第二处理单元,用于对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包。

可选地,上述第二处理单元包括:初始化子单元,用于初始化第一冗余参数,其中,第一冗余参数包括以下至少之一:冗余度、待冗余分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数;第一确定子单元,用于确定待冗余分组数据包的起始位置;处理子单元,用于依据第一冗余参数和待冗余分组数据包的起始位置对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包。

可选地,上述装置还包括:调整模块,该调整模块用于在依据冗余参数和待冗余分组数据包的起始位置对分组数据包进行冗余处理,得到分组数据包对应的冗余数据包之后,调整第一冗余参数。

实施例4

根据本发明实施例的另一方面,还提供了另一种数据包恢复装置,图4是根据本发明实施例的另一种数据包恢复装置的示意图,如图4所示,该数据包恢复装置包括:接收模块42和恢复模块44。下面对该数据包恢复装置进行详细说明。

接收模块42,用于接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包;恢复模块44,连接至上述接收模块42,用于在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

在上述实施例中,该数据包恢复装置可以通过接收发送端发送的待传输视频帧的分组数据包和该分组数据包对应的冗余数据包,在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复,达到了避免重传待传输视频帧的目的,从而实现了提高在高延时弱网络环境下的视频帧传输效率的技术效果,进而解决了相关技术中在高延时的弱网络环境下采用自动请求重传机制导致视频帧传输效率低的技术问题。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;和/或,上述各个模块以任意组合的方式位于不同的处理器中。

此处需要说明的是,上述接收模块42和恢复模块44对应于实施例2中的步骤S202至S204,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例2所公开的内容。

可选地,上述恢复模块44包括:初始化单元,用于初始化第二冗余参数,其中,第二冗余参数包括以下至少之一:分组数据包的数量、冗余数据包的大小、第一矩阵参数、第二矩阵参数;确定单元,用于确定未丢失数据包;恢复单元,用于依据第二冗余参数和未丢失数据包对待传输视频帧中丢失数据包进行恢复处理。

可选地,上述装置还包括:重传模块,其中,该重传模块用于在接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包之后,在丢失数据包的数量大于冗余数据包的数量的情况下,重传分组数据包和分组数据包对应的冗余数据包。

实施例5

根据本发明实施例的另一方面,还提供了一种数据包恢复系统,该系统包括:发送端和接收端,其中,发送端用于确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包,依次将分组数据包、分组数据包对应的冗余数据包发送给接收端;接收端用于接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包,并在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

需要说明的是,上述数据包恢复系统中的发送端和接收端之间相互通信,其中,发送端可以执行实施例1中所实施的数据包恢复方法,接收端可以执行实施例2中所实施的数据包恢复方法。

下面对本发明一种可选的实施方式进行详细说明。

图5是根据本发明可选实施例的数据包恢复系统的示意图,如图5所示,为了增加灵活性,将万像前向纠错(Vanxum Forward Error Correction,简称为VFEC)作为一个库。该库可用于发送端和接收端,其中,在发送端实现加冗余,在接收端恢复丢包。

需要说明的是:VFEC作为万像媒体传输层(Vanxum Media Transport Layer,简称为VMTL)中的一个可选子模块。输入和输出都是经过VMTL拆分过的小于最大传输单元适用于网络传输的视频帧。

可选地,发送端或接收端都可以选择打开和关闭VFEC功能,其中,上述系统有四种工作模式,分别是:发送端(on)-接收端(on);发送端(on)-接收端(off);发送端(off)-接收端(on);发送端(off)-接收端(off)。VMTL增加VFEC后也可以兼容原来没有加VFEC的情况。

另外,VFEC是基于伽罗华域矩阵运算的VFEC丢包恢复算法,简要来说就是把数据包拆分成定长分组,然后分别把分组在冗余包进行异或运算,因此最终的恢复能力和冗余度有关,具体来说就是满足以下条件:

数据包数n、冗余包数k,当丢包数lost(含数据包和冗余包丢包)<=k时,就可以恢复丢失的数据包。

图6是根据本发明可选实施例的发送端处理流程的示意图,如图6所示,发送端的主要处理流程如下:

步骤601、发送端初始化VFEC(初始化内容主要包括:指定冗余度r,数据包数n,冗余包大小s,矩阵参数w和g);

步骤602、发送端指定要进行冗余的起始数据包序号,比如图中的包0;

步骤603、发送端在发送数据包时,同时把数据包传给VFEC进行冗余运算;

步骤604、发送端发送并冗余运算n个数据包后,从VFEC模块取出冗余包,在第n个数据包后一并发送;

其中,冗余包的数量为k=(r*n/100);冗余包和数据包采用一套序号。

步骤605、发送端发送取出的k个冗余包,那么n个数据包和k个冗余包被称为一个VFEC组,那么当接收端发现的丢失的数据包在这一组时,可以通过这一组其他包来恢复丢失的数据包;

步骤606、为了节省冗余包的带宽占用,VFEC根据网络丢包情况动态的对冗余度r进行调整。

需要说明的是,如果不调整冗余度r,数据包数n,冗余包大小s,矩阵参数w和g等参数,循环602-605步骤;如果调整冗余度r,数据包数n,冗余包大小s,矩阵参数w和g等参数中的任何一个,循环601-605步骤。

例如,冗余度为5,则表示数据包为100的情况下,冗余包的个数为5。理论上,一个VFEC组的105个包(数据包100,冗余包5)任意丢5个包,即使5个包都是数据包,接收端都可以通过该组的其他100个包来恢复,而无需重传。也就是说,在冗余度为5,数据包为100的情况下,VFEC算法可以抵抗5/(5+100)≈4.7%的丢包。

为了避免VFEC频繁调整影响性能,冗余度r与丢包率的关系如下:

r=0:即VFEC关闭,丢包率0-1%;

r=5:丢包率1%-5%;

r=10:丢包率5%-10%;

r=15:丢包率10%以上。

丢包率15%以上网络环境过于恶劣不予考虑处理。

图7是根据本发明可选实施例的接收端处理流程的示意图,如图7所示,在接收端由于多了冗余包,需要对组帧处理逻辑进行相应修改。正常情况下,如果发现视频帧丢失的数据包在这一个VFEC组中,直接调用VFEC恢复即可。

图8是根据本发明可选实施例的视频帧对应的VFEC组的示意图,如图8所示,一个I帧的数据可能在多个VFEC组中,比如VFEC组0和组1(VFEC组是没有序号的,这里加序号为了说明方便),也有可能是一个VFEC,组中有I帧和P帧的数据。

一个VFEC组可能由于丢包太多,无法满足丢包恢复的条件,比如VFEC组1;一个帧的丢包可能出现在上面的任何一个VFEC组中,一个帧也有可能出现多个连续或不连续的丢包。图9是根据本发明可选实施例的VFEC进行丢包恢复的原理图,如图9所示,正常的组帧逻辑不变,但是接收端要新增一个VFEC管理模块,其处理流程如下:

步骤901、当收包队列收到数据包时,通知VFEC根据包中携带的冗余度信息创建一个VFEC组管理对象,并初始化相关信息,如设置k、n和该组已经收到的包数(packet_count);

步骤902、VFEC组管理对象如果满足丢包恢复条件,则恢复数据包给收包队列,然后本身销毁;如果不满足丢包恢复条件,则启动重传逻辑;

步骤903、收包队列收到包后,通知VFEC管理模块相应的VFEC组更新packet_count,继续步骤902;

步骤904、组帧模块删除一个帧时(输出完整帧或丢弃一个不完整的帧),如果VFEC管理模块中不含该帧数据包的VFEC组,则删除数据包,如果含有该帧数据包的VFEC组,就判断该帧的最大数据包序号是否为VFEC组的最大序号,如果是,则可以删除数据包,并删除VFEC组,否则不能删除,因为可能影响到后续帧的恢复处理。

进一步地,如果一个VFEC组满足恢复条件,则过程如下:

步骤9021、VFEC初始化(根据数据包中携带的数据包数n,冗余包大小s,矩阵参数w和g信息);

步骤9022、VFEC增加其它未丢失的包(剩余的冗余包和其它数据包);

步骤9023、VFEC恢复处理;

步骤9024、从VFEC中取出恢复的数据包;

以上四个步骤,每次使用的时候循环调用。

根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述中任意一项的数据包恢复方法。

可选地,在本实施例中,上述计算机可读存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,和/或位于移动终端群中的任意一个移动终端中,上述计算机可读存储介质包括存储的程序。

可选地,在程序运行时控制计算机可读存储介质所在设备执行以下功能:确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包;依次将分组数据包、分组数据包对应的冗余数据包发送给接收端,以使接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复;或者,接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包;在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

根据本发明实施例的另一方面,还提供了一种处理器,该处理器用于运行程序,其中,程序运行时执行上述中任意一项的数据包恢复方法。

本发明实施例提供了一种设备,该设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包;依次将分组数据包、分组数据包对应的冗余数据包发送给接收端,以使接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复;或者,接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包;在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

本发明还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:确定待传输视频帧的分组数据包和分组数据包对应的冗余数据包;依次将分组数据包、分组数据包对应的冗余数据包发送给接收端,以使接收端在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复;或者,接收发送端发送的待传输视频帧的分组数据包和分组数据包对应的冗余数据包;在丢失数据包的数量小于或者等于冗余数据包的数量的情况下,对待传输视频帧中丢失数据包进行恢复。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 数据包恢复方法、装置和系统
  • 数据传输系统及其接收端、数据包恢复方法
技术分类

06120112895209