CN107257265A - 实时传输数据流前向纠错方法、设备及存储介质 - Google Patents
实时传输数据流前向纠错方法、设备及存储介质 Download PDFInfo
- Publication number
- CN107257265A CN107257265A CN201710290296.9A CN201710290296A CN107257265A CN 107257265 A CN107257265 A CN 107257265A CN 201710290296 A CN201710290296 A CN 201710290296A CN 107257265 A CN107257265 A CN 107257265A
- Authority
- CN
- China
- Prior art keywords
- packet
- real
- data stream
- transmission data
- time transmission
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location
- H04L1/0086—Unequal error protection
- H04L1/0089—Unequal error protection in payload
Abstract
本发明公开了一种实时传输数据流前向纠错方法、系统、装置以及计算机可读存储介质。包括:在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端;在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;当检测到丢包时,根据所述第二类数据包第二类冗余包,通过预置解码器解码生成恢复包。本发明方案,实现了在不兼容系统间进行网络通信数据流传输时,前向纠错机制仍然适用,保证了异构实时通信系统间的通信质量。
Description
技术领域
本发明涉及网络通信数据流的差错控制领域,尤其涉及实时传输数据流前向纠错方法、设备及计算机可读存储介质。
背景技术
在网络通信数据流传输中,丢包是一个普遍存在的问题。在对实时性要求较高的场景,目前普遍使用用户数据报协议(UDP)传输数据。为了克服UDP传输中的丢包问题,大多数实时应用都采用前向纠错(Forward Error Correction,FEC)来恢复丢失的数据包。但是,在实际应用中,不同系统间FEC机制普遍不兼容,从而导致FEC功能完全失灵,从而无法降低或消除丢包问题。
发明内容
本发明的主要目的在于提供一种实时传输数据流前向纠错方法、设备及存储介质,旨在解决现有技术中不兼容系统间FEC难以兼容互通的技术问题。
为实现上述目的,本发明提供一种实时传输数据流前向纠错方法,包括:
在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;
根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端;
在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;
当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包。
优选地,所述当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包之后包括:
将所述恢复包送往所述接收端。
优选地,所述在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包包括:
在发送端发送的实时传输数据流中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置编码器;
当接收到当前成功编码数据包的反馈信息时,筛选出与当前成功编码数据包源IP、源端口、目的IP、目的端口、信源相同的第一类数据包。
优选地,所述根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端包括:
检测当前是否接收到预置解码器反馈的丢包率;
若当前接收到预置解码器反馈的丢包率,则检测当前线路传输带宽,根据所述丢包率以及传输带宽计算并更新第一类数据包数量同冗余包数量的比例;
检测当前是否存在已编码组的单组编码耗时信息;
若当前存在已编码组的单组编码耗时信息,根据预设的时延最大值以及所述单组编码耗时信息,确定当前编码组的分组大小;
按照所述分组大小对所述第一类数据包进行分组后,通过预置编码器根据所述第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
将所述冗余包送往接收端。
优选地,所述根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端还包括:
若当前没有接收到预置解码器反馈的丢包率且当前不存在已编码组的单组编码耗时信息;
根据预设分组大小对所述第一类数据包进行分组后,通过预置编码器根据预设第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
将所述冗余包送往接收端。
优选地,所述在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包包括:
在送往接收端的实时传输数据流以及所述冗余包中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置解码器;
当接收到当前成功解码数据包的反馈信息时,筛选出与当前成功解码数据包源IP、源端口、目的IP、目的端口、信源相同的第二类数据包以及第二类冗余包。
优选地,所述实时传输数据流前向纠错方法还包括:
当在预设时间内,未筛选到满足预置第一条件的第一类数据包和/或预置第二条件的第二类数据包以及第二类冗余包时,将所述第一类数据包和/或第二类数据包以及第二类冗余包的筛选条件恢复至初始状态。
此外,为实现上述目的,本发明还提供一种实时传输数据流前向纠错系统,包括:
筛选器,用于在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;
所述筛选器还用于在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;
冗余包生成器,用于根据所述第一类数据包,通过预置编码器编码生成冗余包;
恢复包生成器,用于当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包。
此外,为实现上述目的,本发明还提供一种实时传输数据流前向纠错装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的实时传输数据流前向纠错程序,所述实时传输数据流前向纠错程序被所述处理器执行时实现如上述所述的实时传输数据流前向纠错方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有实时传输数据流前向纠错程序,所述实时传输数据流前向纠错程序被处理器执行时实现如上述所述的实时传输数据流前向纠错方法的步骤。
本发明通过在发送端发送的实时传输数据流中对数据包进行筛选,将所筛选的数据包通过预置编码器生成冗余包,将冗余包送往接收端,在送往接收端的实时传输数据流以及冗余包中对数据包再次进行筛选,根据当前的丢包情况,将筛选到的数据包以及冗余包解码生成恢复包。本发明方案,实现了在不兼容系统间进行网络通信数据流传输时,前向纠错机制任然适用,保证了不兼容系统间的通信质量。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的终端\装置结构示意图;
图2为本发明实时传输数据流前向纠错方法第一实施例的流程示意图;
图3为实时传输数据流前向纠错装置一实施例的结构示意图;
图4为本发明实时传输数据流前向纠错方法第一实施例的场景示意图;
图5为本发明实时传输数据流前向纠错方法第二实施例的场景示意图;
图6为本发明筛选满足预置条件的数据包一实施例的流程示意图;
图7为冗余包一实施例的结构图;
图8为本发明实时传输数据流前向纠错方法第二实施例的流程示意图;
图9为图2中步骤S10的细化流程示意图;
图10为图2中步骤S20第一实施例的细化流程示意图;
图11为图2中步骤S20第二实施例的细化流程示意图;
图12为图2中步骤S30的细化流程示意图;
图13为本发明实时传输数据流前向纠错系统第一实施例的结构示意图;
图14为本发明实时传输数据流前向纠错系统第二实施例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
由于现有技术中,不兼容系统间FEC(前向纠错Forward Error Correction)机制普遍不兼容,导致FEC功能完全失灵,从而无法降低或消除丢包问题。
本发明通过在发送端发送的实时传输数据流中对数据包进行筛选,将筛选出来的数据包通过预置编码器生成冗余包,将冗余包送往接收端,在送往接收端的实时传输数据流以及冗余包中对数据包再次进行筛选,根据当前的丢包情况,根据未丢失的源包以及筛选出的冗余包(第二类数据包以及第二类冗余包)生成恢复包。本发明方案,实现了在异构实时通信系统间进行网络通信数据流传输时,前向纠错机制任然适用,保证了异构实时通信系统间的通信质量。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是PC、便携计算机等终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及实时传输数据流前向纠错程序。
在图1所示的终端中,处理器1001可以用于调用存储器1005中存储的实时传输数据流前向纠错程序,并执行以下操作:
在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;
根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端;
在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;
当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包。
进一步地,处理器1001可以调用存储器1005中存储的实时传输数据流前向纠错程序,还执行以下操作:
将所述恢复包送往所述接收端。
进一步地,处理器1001可以调用存储器1005中存储的实时传输数据流前向纠错程序,还执行以下操作:
在发送端发送的实时传输数据流中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置编码器;
当接收到当前成功编码数据包的反馈信息时,筛选出与当前成功编码数据包源IP、源端口、目的IP、目的端口、信源相同的第一类数据包。
进一步地,处理器1001可以调用存储器1005中存储的实时传输数据流前向纠错程序,还执行以下操作:
检测当前是否接收到预置解码器反馈的丢包率;
若当前接收到预置解码器反馈的丢包率,则检测当前线路传输带宽,根据所述丢包率以及传输带宽计算并更新第一类数据包数量同冗余包数量的比例;
检测当前是否存在已编码组的单组编码耗时信息;
若当前存在已编码组的单组编码耗时信息,根据预设的时延最大值以及所述单组编码耗时信息,确定当前编码组的分组大小;
按照所述分组大小对所述第一类数据包进行分组后,通过预置编码器根据所述第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
将所述冗余包送往接收端。
进一步地,处理器1001可以调用存储器1005中存储的实时传输数据流前向纠错程序,还执行以下操作:
若当前没有接收到预置解码器反馈的丢包率且当前不存在已编码组的单组编码耗时信息;
根据预设分组大小对所述第一类数据包进行分组后,通过预置编码器根据预设第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
将所述冗余包送往接收端。
进一步地,处理器1001可以调用存储器1005中存储的实时传输数据流前向纠错程序,还执行以下操作:
在送往接收端的实时传输数据流以及所述冗余包中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置解码器;
当接收到当前成功解码数据包的反馈信息时,筛选出与当前成功解码数据包源IP、源端口、目的IP、目的端口、信源相同的第二类数据包以及第二类冗余包。
进一步地,处理器1001可以调用存储器1005中存储的实时传输数据流前向纠错程序,还执行以下操作:
当在预设时间内,未筛选到满足预置第一条件的第一类数据包和/或预置第二条件的第二类数据包以及第二类冗余包时,将所述第一类数据包和/或第二类数据包以及第二类冗余包的筛选条件恢复至初始状态。
参照图2,图2为本发明实时传输数据流前向纠错方法第一实施例的流程示意图。
在本实施例中,实时传输数据流前向纠错方法包括:
步骤S10,在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;
在本实施例中,如图3所示,图3为实时传输数据流前向纠错装置一实施例的结构示意图。如图3所示的实时传输数据流前向纠错装置包括一对网络通信物理接口,用于连接已有网络线路,实时传输数据流前向纠错装置包括:存储器、处理器及存储在存储器上并可在处理器上运行的实时传输数据流前向纠错方法程序。在运行该程序时,对流入的实时传输数据流进行丢包恢复(生成恢复包),对流出的实时传输数据流进行FEC保护(生成冗余包)。
如图4所示,图4为本发明实时传输数据流前向纠错方法第一实施例的场景示意图。如图5所示,图5为本发明独立自适应的实时传输数据流前向纠错方法第二实施例的场景示意图。
在本实施例中,在数据发送端附近监视网络数据并筛选流出的实时传输数据包,得到第一类数据包,并根据这些第一类数据包通过预置编码器编码生成目的地一致的冗余包;在数据接收端附近监视网络数据并筛选流入的实时传输数据包,得到第二类数据包和第二类冗余包,根据当前的丢包情况根据第二类数据包以及第二类冗余包通过解码器解码生成恢复包,将恢复包送往接收端。
在本实施例中,对于预置的筛选条件不作限制,例如:筛选大小满足RTP实时传输协议最小长度要求的实时传输数据包,还可以进一步限制筛选条件,例如根据源IP、源端口、目的IP、目的端口等对实时传输数据包进行筛选,在此不作限制,具体根据实际需要进行设置。如图6所示,图6为本发明筛选满足预置条件的数据包一实施例的流程示意图。在本实施例中,可以是监视所有或限定的实时传输数据流;对于获取的一个数据包,首先判断该数据包的大小是否满足实时传输协议最小长度要求,若不满足,则忽略该包,否则进行下一步处理;接下来,将源IP、源端口、目的IP、目的端口完全相同的数据包分为一组,称为地址组;在地址组内根据SSRC ID(同步信源标识符)进一步分组,将SSRC相同的数据包分到一组,称为SSRC组;接下来判断同一地址组内SSRC组的数目是否超过预设阈值(该数值可以根据实际情况自由设置),若超过,且该地址组未被标记为信任,则整个地址组被标记为不可用(即对该地址组内的数据包不进行处理);若没有超过,则判断当前数据包主要字段是否满足RTP规定特性(即该数据包格式满足实时传输协议的规定),若不满足,如果当前该数据包对应的SSRC被标记为信任,则忽略该包(对该SSRC组的其他数据包仍处理),否则置该数据包对应的SSRC组以及该SSRC组对应的地址组为不可用(对该地址组内的数据包不进行处理);若满足,则将该包送往该数据包对应的SSRC组对应的FEC(前向纠错)编码器,若成功编码,则置信当前数据包对应的SSRC组以及地址组(即筛选该SSRC组内的数据包作为第一类数据包),否则忽略,重复上述步骤。
步骤S20,根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端;
在本实施例中,生成冗余包需要知道第一类数据包数量同冗余包数量的比例,以及对第一类数据包进行分组的大小,第一类数据包数量同冗余包数量的比例以及对第一类数据包进行分组的大小这两个参数均可人为进行设置,在此不作限制。
在本发明另一可选实施例中,根据当前解码器统计到的丢包率,估算线路丢包率和当前线路的带宽,动态调整第一类数据包同冗余包的比例。例如,若当前丢包率较高(10%),在带宽支持的前提时,将数据包同冗余包的比例提高,例如由原先的5%提高到15%。
在本发明另一可选实施例中,在对第一类数据包进行分组编码时,需要知道分组的大小,根据当前已编码组的单组编码耗时以及预设时延(该预设时延可由人为进行设置),动态增加或减少分组大小。例如,当前预设时延为256ms,当前编码组的分组为24源数据包+16冗余包,若当前单组编码耗时过长,则将下一编码组的大小减半。当前编码组分组大小在对上一组进行编码完成时便已确定。在本实施例中,生成的冗余包能兼容RTP头且能极大限度利用所有字段。参照图7,图7为冗余包一实施例的结构图。在本实施例中,冗余包格式主要包括:RTP版本,2位;FEC组大小索引,6位;Marker,1位;负载类型,7位;组序列号,16位;时戳冗余,32位;SSRC ID,32位;冗余号索引,8位;m、v、p、x、cc字段冗余,8位;广义负载长度冗余,16位;广义负载冗余;广义负载冗余值RTP包中SSRC ID后所有内容。
步骤S30,在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;
在本实施例中,在送往接收端的实时传输数据流中筛选满足预置第二条件的第二类数据包和第二类冗余包,其筛选过程如图5所示,筛选过程与步骤S10大致相同,只是被筛选出的第二类数据包和第二类冗余包是送往对应的解码器,在成功解码一组数据后,筛选与该数据对应的SSRC组内的数据包得到第二类数据包和第二类冗余包,在此不做赘述。
步骤S40,当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包。
本实施例中,例如当前接收到的第二类数据包数量有5个,第二类冗余包3个,原本应该接收到的第二类数据包数量为7个,即检测到当前处于丢包状态,则根据第二类数据包以及第二类冗余包通过预置解码器解码生成对应恢复包,以提高数据传输的完整性。
本发明通过在发送端发送的实时传输数据流中对数据包进行筛选,将筛选出来的数据包通过预置编码器生成冗余包,将冗余包送往接收端,在送往接收端的数据流以及冗余包中对数据包再次进行筛选,根据当前的丢包情况,将筛选到的冗余包以及未丢失的源包(第二类数据包以及第二类冗余包)解码生成恢复包。本发明方案,实现了在不兼容系统间进行网络通信数据流传输时,前向纠错机制仍然适用,保证了异构实时通信系统间的通信质量。
进一步的,参照图8,图8为本发明实时传输数据流前向纠错方法第二实施例的流程示意图。
在本实施例中,实时传输数据流前向纠错方法还包括:
步骤S50,将所述恢复包送往所述接收端。
在本实施例中,由于出现了丢包,根据对第二类数据包以及第二类冗余包进行解码生成了对应的恢复包,将恢复包发送至接收端,本实施例中,恢复包生成器部署在紧靠接收端的位置,在恢复包生成器中生成恢复包后将恢复包送往接收端,以保证恢复包不会再丢失。
在本实施例中,由于恢复包生成机制的存在,降低了丢包对数据传输的影响,提高了收发端数据传输质量。
参照图9,图9为图2中步骤S10的细化流程示意图。
在一实施例中,步骤S10包括:
步骤S101,在发送端发送的实时传输数据流中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置编码器;
步骤S102,当接收到当前成功编码数据包的反馈信息时,筛选出与当前成功编码数据包源IP、源端口、目的IP、目的端口、信源相同的第一类数据包。
在本实施例中,对于预置的筛选条件不作限制,例如:筛选大小满足RTP实时传输协议最小长度要求的实时传输数据包,还可以进一步限制筛选条件,例如根据源IP、源端口、目的IP、目的端口等对实时传输数据包进行筛选,在此不作限制,具体根据实际需要进行设置。如图6所示,图6为本发明筛选满足预置条件的数据包一实施例的流程示意图。在本实施例中,可以是监视所有或限定的实时传输数据流;对于获取的一个数据包,首先判断该数据包的大小是否满足实时传输协议最小长度要求,若不满足,则忽略该包,否则进行下一步处理;接下来,将源IP、源端口、目的IP、目的端口完全相同的数据包分为一组,称为地址组;在地址组内根据SSRC ID(同步信源标识符)进一步分组,将SSRC相同的数据包分到一组,称为SSRC组;接下来判断同一地址组内SSRC组的数目是否超过预设阈值(该数值可以根据实际情况自由设置),若超过,且该地址组未被标记为信任,则整个地址组被标记为不可用(即对该地址组内的数据包不进行处理);若没有超过,则判断当前数据包主要字段是否满足RTP规定特性(即该数据包格式满足实时传输协议的规定),若不满足,如果当前该数据包对应的SSRC被标记为信任,则忽略该包(对该SSRC组的其他数据包仍处理),否则置该数据包对应的SSRC组以及该SSRC组对应的地址组为不可用(对该地址组内的数据包不进行处理);若满足,则将该包送往该数据包对应的SSRC组对应的FEC(前向纠错)编码器,若成功编码,则置信当前数据包对应的SSRC组以及地址组(即筛选该SSRC组内的数据包作为第一类数据包),否则忽略,重复上述步骤。
在本实施例中,筛选机制保证了数据处理的正确性,减少了对无用数据的处理流程,加快了数据处理过程,从而使得数据传输更为迅速、准确。
参照图10,图10为图2中步骤S20第一实施例的细化流程示意图。
在一实施例中,步骤S20包括:
步骤S201,检测当前是否接收到预置解码器反馈的丢包率;
步骤S202,若当前接收到预置解码器反馈的丢包率,则检测当前线路传输带宽,根据所述丢包率以及传输带宽计算并更新第一类数据包数量同冗余包数量的比例;
步骤S203,检测当前是否存在已编码组的单组编码耗时信息;
步骤S204,若当前存在已编码组的单组编码耗时信息,根据预设的时延最大值以及所述单组编码耗时信息,确定当前编码组的分组大小;
步骤S205,按照所述分组大小对所述第一类数据包进行分组后,通过预置编码器根据所述第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
步骤S206,将所述冗余包送往接收端。
在本发明一可选实施例中,根据当前解码器统计到的丢包率,估算线路丢包率和当前线路的带宽,动态调整第一类数据包同冗余包的比例。例如,若当前丢包率较高(10%),在带宽支持的前提时,将数据包同冗余包的比例提高,例如由原先的5%提高到15%。
在本发明另一可选实施例中,在对第一类数据包进行分组编码时,需要知道分组的大小,根据当前已编码组的单组编码耗时以及预设时延(该预设时延可由人为进行设置),动态增加或减少下一组分组大小。例如,当前预设时延为256ms,当前编码组的分组为24源数据包+16冗余包,若当前单组编码耗时过长,则将下一组编码组的大小减半。即当前编码组分组大小在对上一组进行编码完成时便已确定。
在本实施例中,根据编码器的历史单组编码耗时结合当前通信场景所能容忍的时延,动态调整当前分组大小,使得本发明方案能在保证可靠时延的前提下具有尽可能高的抗丢包性能;根据当前解码器统计到的丢包率,估算线路丢包率和当前线路的最佳带宽,动态调整第一类数据包-冗余包的比例,使得本发明方案在尽可能保证数据传输完整性的前提下,尽量减少冗余包的数量,从而减少数据传输线路的传输压力。
参照图11,图11为图2中步骤S20第二实施例的细化流程示意图。
在一实施例中,步骤S20还包括:
步骤S207,若当前没有接收到预置解码器反馈的丢包率且当前不存在已编码组的单组编码耗时信息;
步骤S208,根据预设分组大小对所述第一类数据包进行分组后,通过预置编码器根据预设第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
步骤S209,将所述冗余包送往接收端。
在本实施例中,生成冗余包需要知道第一类数据包数量同冗余包数量的比例,以及对第一类数据包进行分组的大小,第一类数据包数量同冗余包数量的比例以及在对第一类数据包进行分组的大小这两个参数均可认为进行设置,在此不作限制。
本实施例中,自适应的确定第一类数据包数量同冗余包数量的比例,以及第一类数据包进行分组的大小,既充分利用了线路带宽,也保证了数据传输质量。
参照图12,图12为图2中步骤S30的细化流程示意图。
在一实施例中,步骤S30包括:
步骤S301,在送往接收端的实时传输数据流以及所述冗余包中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置解码器;
步骤S302,当接收到当前成功解码数据包的反馈信息时,筛选出与当前成功解码数据包源IP、源端口、目的IP、目的端口、信源相同的第二类数据包以及第二类冗余包。
在本实施例中,在送往接收端的加入了冗余包的实时传输数据流中筛选满足预置第二条件的第二类数据包和第二类冗余包,其筛选过程如图5所示,筛选过程与步骤S10大致相同,只是被筛选出的第二类数据包和第二类冗余包是送往对应的解码器,在成功解码一组数据后,筛选与该数据对应的SSRC组内的数据包得到第二类数据包和第二类冗余包,在此不做赘述。
在本实施例中,筛选机制保证了数据处理的正确性,减少了对无用数据的处理流程,加快了数据处理过程,从而使得数据传输更为迅速、准确。
进一步的,在一实施例中,实时传输数据流前向纠错方法还包括:
当在预设时间内,未筛选到满足预置第一条件的第一类数据包和/或预置第二条件的第二类数据包以及第二类冗余包时,将所述第一类数据包和/或第二类数据包以及第二类冗余包的筛选条件恢复至初始状态。
在本实施例中,预设时间可以由人为自由设置,例如设置为256ms。对于预置的筛选条件不作限制,例如:筛选大小满足RTP(实时传输协议)最小长度要求的实时传输数据包,还可以进一步限制筛选条件,例如根据源IP、源端口、目的IP、目的端口等对实时传输数据包进行筛选,在此不作限制,具体根据实际需要进行设置。例如,在本发明一可选实施例中,设置的筛选条件为:初步筛选大小满足RTP(实时传输协议)最小长度要求的实时传输数据包,若接收到编/解码器成功编/解码一组数据后,获取该数据包A的源IP、源端口、目的IP、目的端口、SSRC ID信息,并获取与该数据包A的源IP、源端口、目的IP、目的端口、SSRCID信息完全相同的数据包,若在后续筛选过程中,超过预设时间(例如60s)没有获取到与该数据包A的源IP、源端口、目的IP、目的端口、SSRC ID信息完全相同的数据包,则清除获取的该数据包A的源IP、源端口、目的IP、目的端口、SSRC ID信息,重新筛选大小满足RTP(实时传输协议)最小长度要求的实时传输数据包,直至接收到编/解码器成功编/解码一组数据后,获取该数据包B的源IP、源端口、目的IP、目的端口、SSRC ID信息,并获取与该数据包B的源IP、源端口、目的IP、目的端口、SSRC ID信息完全相同的数据包,以此类推。
在本实施例中,当在预设时间内,未筛选到满足预置条件的数据包时,将数据包的筛选条件恢复至初始状态,超时重置机制,增强了对通信数据变化的适应能力,保证了本发明方案持续、无干预运行。
此外,本发明实施例还提出一种实时传输数据流前向纠错系统。
参照图13,图13为本发明实时传输数据流前向纠错系统第一实施例的结构示意图。
在一实施例中,实时传输数据流前向纠错系统包括:
筛选器10,用于在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;
所述筛选器10还用于在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;
冗余包生成器20,用于根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包以及所述第一类数据包送往接收端;
恢复包生成器30,用于当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包。
在本发明另一可选实施例中,当一终端既是数据发送端也是数据接收端时,如图14所示,图14为本发明实时传输数据流前向纠错系统第二实施例的结构示意图。
本发明实时传输数据流前向纠错系统的具体实施例与上述实时传输数据流前向纠错方法各实施例基本相同,在此不做赘述。
此外,本发明实施例还提出一种实时传输数据流前向纠错装置,所述实时传输数据流前向纠错装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的实时传输数据流前向纠错程序,所述实时传输数据流前向纠错程序被所述处理器执行时实现如上述所述的实时传输数据流前向纠错方法的步骤。
本发明实时传输数据流前向纠错装置的具体实施例与上述实时传输数据流前向纠错方法各实施例基本相同,在此不做赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有实时传输数据流前向纠错程序,所述实时传输数据流前向纠错程序被处理器执行时实现如上述所述的实时传输数据流前向纠错方法的步骤。
本发明计算机可读存储介质的具体实施例与上述实时传输数据流前向纠错方法各实施例基本相同,在此不做赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种实时传输数据流前向纠错方法,其特征在于,所述实时传输数据流前向纠错方法包括:
在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;
根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端;
在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;
当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包。
2.如权利要求1所述的实时传输数据流前向纠错方法,其特征在于,所述当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包之后包括:
将所述恢复包送往所述接收端。
3.如权利要求1所述的实时传输数据流前向纠错方法,其特征在于,所述在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包包括:
在发送端发送的实时传输数据流中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置编码器;
当接收到当前成功编码数据包的反馈信息时,筛选出与当前成功编码数据包源IP、源端口、目的IP、目的端口、信源相同的第一类数据包。
4.如权利要求1所述的实时传输数据流前向纠错方法,其特征在于,所述根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端包括:
检测当前是否接收到预置解码器反馈的丢包率;
若当前接收到预置解码器反馈的丢包率,则检测当前线路传输带宽,根据所述丢包率以及传输带宽计算并更新第一类数据包数量同冗余包数量的比例;
检测当前是否存在已编码组的单组编码耗时信息;
若当前存在已编码组的单组编码耗时信息,根据预设的时延最大值以及所述单组编码耗时信息,确定当前编码组的分组大小;
按照所述分组大小对所述第一类数据包进行分组后,通过预置编码器根据所述第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
将所述冗余包送往接收端。
5.如权利要求1所述的实时传输数据流前向纠错方法,其特征在于,所述根据所述第一类数据包,通过预置编码器编码生成冗余包,将所述冗余包送往接收端还包括:
若当前没有接收到预置解码器反馈的丢包率且当前不存在已编码组的单组编码耗时信息;
根据预设分组大小对所述第一类数据包进行分组后,通过预置编码器根据预设第一类数据包数量同冗余包数量的比例编码生成对应数量的冗余包;
将所述冗余包送往接收端。
6.如权利要求1所述的实时传输数据流前向纠错方法,其特征在于,所述在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包包括:
在送往接收端的实时传输数据流以及所述冗余包中筛选满足实时传输协议格式要求的数据包,将所述数据包送往所述预置解码器;
当接收到当前成功解码数据包的反馈信息时,筛选出与当前成功解码数据包源IP、源端口、目的IP、目的端口、信源相同的第二类数据包以及第二类冗余包。
7.如权利要求1至6中任一项所述的实时传输数据流前向纠错方法,其特征在于,所述实时传输数据流前向纠错方法包括:
当在预设时间内,未筛选到满足预置第一条件的第一类数据包和/或预置第二条件的第二类数据包以及第二类冗余包时,将所述第一类数据包和/或第二类数据包以及第二类冗余包的筛选条件恢复至初始状态。
8.一种实时传输数据流前向纠错系统,其特征在于,所述实时传输数据流前向纠错系统包括:
筛选器,用于在发送端发送的实时传输数据流中筛选满足预置第一条件的第一类数据包;
所述筛选器还用于在送往接收端的实时传输数据流以及所述冗余包中筛选满足预置第二条件的第二类数据包以及第二类冗余包;
冗余包生成器,用于根据所述第一类数据包,通过预置编码器编码生成冗余包;
恢复包生成器,用于当检测到丢包时,根据所述第二类数据包以及第二类冗余包,通过预置解码器解码生成恢复包。
9.一种实时传输数据流前向纠错装置,其特征在于,所述实时传输数据流前向纠错装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的实时传输数据流前向纠错程序,所述实时传输数据流前向纠错程序被所述处理器执行时实现如权利要求1至7中任一项所述的实时传输数据流前向纠错方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有实时传输数据流前向纠错程序,所述实时传输数据流前向纠错程序被处理器执行时实现如权利要求1至7中任一项所述的实时传输数据流前向纠错方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710290296.9A CN107257265B (zh) | 2017-04-27 | 2017-04-27 | 实时传输数据流前向纠错方法、系统、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710290296.9A CN107257265B (zh) | 2017-04-27 | 2017-04-27 | 实时传输数据流前向纠错方法、系统、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107257265A true CN107257265A (zh) | 2017-10-17 |
CN107257265B CN107257265B (zh) | 2019-09-20 |
Family
ID=60027268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710290296.9A Active CN107257265B (zh) | 2017-04-27 | 2017-04-27 | 实时传输数据流前向纠错方法、系统、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107257265B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109951254A (zh) * | 2019-03-21 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置、计算机可读存储介质 |
CN110876066A (zh) * | 2018-09-03 | 2020-03-10 | 中国移动通信有限公司研究院 | 一种自适应前向纠错方法、装置、介质和设备 |
CN113936669A (zh) * | 2020-06-28 | 2022-01-14 | 腾讯科技(深圳)有限公司 | 数据传输方法、系统、装置、计算机可读存储介质及设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101359981A (zh) * | 2008-09-27 | 2009-02-04 | 腾讯科技(深圳)有限公司 | 一种数据包冗余编解码的方法、装置及系统 |
CN101577606A (zh) * | 2008-05-09 | 2009-11-11 | 苏州科达科技有限公司 | 一种流媒体控制设备中控制流媒体传输的控制装置及方法 |
WO2009099847A3 (en) * | 2008-02-10 | 2009-11-26 | Cisco Technology, Inc. | Forward error correction based data recovery with path diversity |
CN101674152A (zh) * | 2008-09-08 | 2010-03-17 | 华为技术有限公司 | 基于前向纠错的数据传输方法、装置及系统 |
CN101902315A (zh) * | 2009-06-01 | 2010-12-01 | 华为技术有限公司 | 基于前向纠错的重传方法、设备和通信系统 |
CN102025717A (zh) * | 2010-09-10 | 2011-04-20 | 香港城市大学深圳研究院 | 一种传输多媒体数据的方法 |
CN102231837A (zh) * | 2011-06-23 | 2011-11-02 | 西交利物浦大学 | 基于子画面群的前向纠错实时视频传输方法 |
CN102111233B (zh) * | 2009-12-28 | 2014-03-26 | 华为软件技术有限公司 | 一种fec数据的处理方法及系统 |
US20140310579A1 (en) * | 2011-07-08 | 2014-10-16 | Samsung Electronics Co. Ltd. | Method for generating forward error correction packet in multimedia system and method and apparatus for transmitting and receiving forward error correction packet |
-
2017
- 2017-04-27 CN CN201710290296.9A patent/CN107257265B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009099847A3 (en) * | 2008-02-10 | 2009-11-26 | Cisco Technology, Inc. | Forward error correction based data recovery with path diversity |
CN101577606A (zh) * | 2008-05-09 | 2009-11-11 | 苏州科达科技有限公司 | 一种流媒体控制设备中控制流媒体传输的控制装置及方法 |
CN101674152A (zh) * | 2008-09-08 | 2010-03-17 | 华为技术有限公司 | 基于前向纠错的数据传输方法、装置及系统 |
CN101359981A (zh) * | 2008-09-27 | 2009-02-04 | 腾讯科技(深圳)有限公司 | 一种数据包冗余编解码的方法、装置及系统 |
CN101902315A (zh) * | 2009-06-01 | 2010-12-01 | 华为技术有限公司 | 基于前向纠错的重传方法、设备和通信系统 |
CN102111233B (zh) * | 2009-12-28 | 2014-03-26 | 华为软件技术有限公司 | 一种fec数据的处理方法及系统 |
CN102025717A (zh) * | 2010-09-10 | 2011-04-20 | 香港城市大学深圳研究院 | 一种传输多媒体数据的方法 |
CN102231837A (zh) * | 2011-06-23 | 2011-11-02 | 西交利物浦大学 | 基于子画面群的前向纠错实时视频传输方法 |
US20140310579A1 (en) * | 2011-07-08 | 2014-10-16 | Samsung Electronics Co. Ltd. | Method for generating forward error correction packet in multimedia system and method and apparatus for transmitting and receiving forward error correction packet |
Non-Patent Citations (3)
Title |
---|
CSDN.: "基于RTP的FEC前向丢错算法简介.", 《HTTPS://BLOG.CSDN.NET/XIAOCAINIAO320/ARTICLE/DETAILS/50434640》 * |
CSDN: "前向纠错码(FEC)的RTP荷载格式.", 《HTTPS://BLOG.CSDN.NET/CNHK1225/ARTICLE/DETAILS/52981572》 * |
吴冀衍 等.: "面向异构无线网移动视频传输的联合信源信道编码方式.", 《计算机学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110876066A (zh) * | 2018-09-03 | 2020-03-10 | 中国移动通信有限公司研究院 | 一种自适应前向纠错方法、装置、介质和设备 |
CN109951254A (zh) * | 2019-03-21 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置、计算机可读存储介质 |
CN109951254B (zh) * | 2019-03-21 | 2020-11-06 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置、计算机可读存储介质 |
CN113936669A (zh) * | 2020-06-28 | 2022-01-14 | 腾讯科技(深圳)有限公司 | 数据传输方法、系统、装置、计算机可读存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107257265B (zh) | 2019-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8526513B2 (en) | Method and apparatus for transmitting data, and communication system | |
CN109905205B (zh) | 数据发送、接收的方法及设备、数据传输方法及系统 | |
JP2003078565A (ja) | 無線通信装置 | |
CN101689964B (zh) | 使用crc和相等长度分组进行分组传输的方法和装置 | |
CN107257265A (zh) | 实时传输数据流前向纠错方法、设备及存储介质 | |
CN108933642B (zh) | 一种基于码块分组的下行重传方法、基站及终端 | |
CN108513701B (zh) | 数据传输方法、设备、机器可读存储介质以及系统 | |
CN106656424A (zh) | 一种数据传输的校验方法 | |
CN114448569A (zh) | 数据传输方法、设备及计算机存储介质 | |
CN109257138A (zh) | 一种数据传输控制方法以及相关设备 | |
EP1392025A2 (en) | Wireless communication method and wireless communication device | |
KR100736082B1 (ko) | 무선 네트워크에서의 패킷 전송 장치 및 방법 | |
EP3057256B1 (en) | Method for processing stream media message, wifi chip and mobile terminal | |
WO2016142193A1 (en) | Apparatus and method for transmitting and receiving redundancy information of a first packet in a second packet | |
CN109428676B (zh) | 一种前向纠错编解码模式的同步方法及装置 | |
WO2005084113A2 (en) | Method and apparatus for performing tfci reliability check | |
CN102065372B (zh) | 以广播方式传输数据的方法及相关装置 | |
US9667756B2 (en) | Apparatus and method for transmitting/receiving data in communication system | |
JP2017092692A (ja) | データ伝送制御システム及び方法、並びに、データ伝送制御プログラム | |
CN102932820A (zh) | 一种链路处理方法、装置和系统 | |
CN101335932A (zh) | 基站间数据同步的方法、设备和系统 | |
CN111273998A (zh) | 一种基于喷泉码与网络编码的虚拟机动态迁移方法及系统 | |
CN106888072B (zh) | 数据传输方法及装置 | |
CN114401208B (zh) | 数据传输方法、装置、电子设备和存储介质 | |
US8767769B2 (en) | Processing data flows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |