CN112671509A - 一种基于fec冗余的数据包抗丢包方法和装置 - Google Patents
一种基于fec冗余的数据包抗丢包方法和装置 Download PDFInfo
- Publication number
- CN112671509A CN112671509A CN202011498666.6A CN202011498666A CN112671509A CN 112671509 A CN112671509 A CN 112671509A CN 202011498666 A CN202011498666 A CN 202011498666A CN 112671509 A CN112671509 A CN 112671509A
- Authority
- CN
- China
- Prior art keywords
- data
- packet
- data packet
- redundant
- original
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于FEC冗余的数据包抗丢包方法和装置,包括以下步骤:(1)发送端获取原始数据包;(2)原始数据包进行冗余操作;(3)发送端发送原始数据包和冗余数据包;(4)接收端接收并保存原始数据包和冗余数据包;(5)检查接收数据包是否完整;(6)冗余数据包数据恢复。本发明解决了因网络传输的不稳定性,减少网络传输过程中造成的数据丢失,增加了数据的抗丢包能力,减少丢包而造成的数据重传的网络延迟和带宽。
Description
技术领域
本发明属于视频处理技术领域,具体涉及一种基于FEC冗余的数据包抗丢包方法和装置。
背景技术
基于网络传输技术不断发展的背景,互联网传输速率也在不断增加,从而促使大众获取互联网信息的方式从一开始的文字、到图片在升级到视频、直播等方式。视频的大量使用的同时给互联网的压力越来越大。因为网络的不稳定或者网络的带宽不足而导致的传输大量数据时容易造成网络抖动,网络延迟,以及网络丢包,从而出现视频卡顿、播放花屏甚至无法播放的情况,影响视频数据的观看效果。
发明内容
有鉴于此,本发明提出一种基于FEC冗余的数据包抗丢包方法和装置,来解决因为网络的原因导致视频数据丢失,从而导致播放花屏,卡顿等问题。
为了达到目的,本发明提供的技术方案为:
本发明涉及一种基于FEC冗余的数据包抗丢包方法,其包括以下步骤:
(1)发送端获取原始数据包:
接收原始数据包,并将原始数据包按照一定规则排序编号;
原始数据的整理存储,预设一个三维数组的空间大小,取原始数据包,依次放入三维数组里面;
(2)原始数据包进行冗余操作:预设的三维数组数据完整时,对这个三维数组里的数据包增加冗余数据得到冗余数据包;
(3)发送端发送原始数据包和冗余数据包:三维数组的所有长宽高数据都冗余完成后,先把三维数组队列里所有的原始数据发送,按顺序发送冗余数据;
(4)接收端接收并保存原始数据包和冗余数据包;
(5)检查接收数据包是否完整:根据接收原始数据包和冗余数据包的顺序规则进行判断数据是否完整,数据完整直接返回原始数据;
(6)冗余数据包数据恢复:检测到三维数组中数据不完整时,利用冗余数据包计算出丢失的数据包,把新生成的数据包加入到三维数组,继续判断三维数组中是否有缺少的数据,直到数据完全恢复。
优选地,步骤(1)中,原始数据包放入方法包括:取每个原始数据包的编号,使用编号除以三维数组的空间大小取整得到数据包对应组号;计算每一个数据包的长度,找出其中最长的数据长度保存;其中不同的原始视频数据保存至到不同三维数组内。
优选地,步骤(2)中,冗余操作的具体步骤包括:
(2.1)建立一个队列用来保存增加的冗余数据,队列的长度等于三维数组队列的长乘以宽加上长乘以高加上宽乘以高。
(2.2)分别按照三维数组队列的长宽高进行数据冗余,把生成的冗余数据以此保存到缓存队列中。
优选地,步骤(4)的具体操作步骤为:
(4.1)创建一个容器,预设容器大小为m组,保存n组原始数据和冗余数据,其中m≥n;每一组数据包括一个三维数组队列的原始数据和原始数据对应的冗余数据;
(4.2)接收原始数据和冗余数据,接收到原始数据和冗余数据后按照发送端制定的顺序规则保存到容器的一组数据中。
一种基于FEC冗余的数据包抗丢包装置,所述的装置包括:
冗余数据包生成模块:用于接收端接收原始的视频数据包,并对原始数据进行顺序排列,生成冗余数据包;
冗余数据包发送模块:用于接收端按照一定顺序规则发送原始数据和冗余数据;
冗余数据包接收模块:用于接收端接收原始数据包和冗余数据包,并判断原始数据包是否丢失数据;
冗余数据包恢复模块:用于接收端通过冗余数据包恢复原始数据包中丢失的数据。
采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
本发明解决了因网络传输的不稳定性,减少网络传输过程中造成的数据丢失,增加了数据的抗丢包能力,减少丢包而造成的数据重传的网络延迟和带宽。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法的流程图;
图2位本发明的结构框图。
具体实施方式
为进一步了解本发明的内容,结合实施例对本发明作详细描述,以下实施例用于说明本发明,但不用来限制本发明的范围。
参照图1,本实施例涉及一种基于FEC冗余的数据包抗丢包方法,其包括以下步骤:
(1)发送端获取原始数据包:
接收原始数据包,并将原始数据包按照一定规则排序编号;本实施例以RTP为例,每个RTP包都包含一个单独的数据编号;
原始数据的整理存储,预设一个三维数组的空间大小,取原始数据包,依次放入三维数组里面;
(2)原始数据包进行冗余操作:预设的三维数组数据完整时,对这个三维数组里的数据包增加冗余数据得到冗余数据包;
(3)发送端发送原始数据包和冗余数据包:三维数组的所有长宽高数据都冗余完成后,先把三维数组队列里所有的原始数据发送,按顺序发送冗余数据;
(4)接收端接收并保存原始数据包和冗余数据包;
(5)检查接收数据包是否完整:根据接收原始数据包和冗余数据包的顺序规则进行判断数据是否完整,数据完整直接返回原始数据;
(6)冗余数据包数据恢复:检测到三维数组中数据不完整时,利用冗余数据包计算出丢失的数据包,把新生成的数据包加入到三维数组,继续判断三维数组中是否有缺少的数据,直到数据完全恢复。
优选地,步骤(1)中,原始数据包放入方法包括:取每个原始数据包的编号,使用编号除以三维数组的空间大小取整得到数据包对应组号;计算每一个数据包的长度,找出其中最长的数据长度保存;其中不同的原始视频数据保存至到不同三维数组内。
步骤(2)中,冗余操作的具体步骤包括:
(2.1)建立一个队列用来保存增加的冗余数据,队列的长度等于三维数组队列的长乘以宽加上长乘以高加上宽乘以高;
(2.2)分别按照三维数组队列的长宽高进行数据冗余,把生成的冗余数据以此保存到缓存队列中。
生成冗余数据的具体方法如下:
第一,生成冗余数据,把三维数组里按照长宽高分别对应x,y,z,首先进行x,y轴数据冗余计算,取x 轴y轴平面第一列数据,即x轴等于1 ,y轴等于1,z从1到最大的这一列数据,这一列数据取传入原始数据最长长度,如果这列数据包长度不到最大长度则给原先数据包进行补0,然后所有数据包按位异或获得一个冗余数据包数据。
第二,给生成的冗余数据包增加包头,包头数据包括生成冗余数据包所属的组,组号等于数据使用编号除以三维数组的空间大小取整,放在第一第二字节,接下来第三第四字节保存当前冗余数据包在这个组的偏移量,依次保存这一列数据对应的长度。接下来把具体的冗余数据包放到包头后面,最后把加上包头的冗余数据包放到缓存队列。
接下来按顺序进行x轴等于2,y轴等于1,z从1到最大的这一列数据的冗余,冗余结果依次保存到缓存队列。当x轴到最大,接下来进行x轴等于1,y轴等于2,z从1到最大的这一列数据的冗余,依次类推一直执行到x轴等于1,y轴等于2,z从1到最大这列数据的冗余,这样就完成三维数组一个面的冗余数及x轴y轴这个面。按照同样的方法完成x轴z轴这个面和y轴z轴这两个面的冗余。
步骤(4)的具体操作步骤为:
(4.1)创建一个容器,预设容器大小为m组,保存n组原始数据和冗余数据,其中m≥n;每一组数据包括一个三维数组队列的原始数据和原始数据对应的冗余数据;
(4.2)接收原始数据和冗余数据,接收到原始数据和冗余数据后按照发送端制定的顺序规则保存到容器的一组数据中。
本实施例中,原始数据包为RTP数据包,其中每一个数据包都包含数据包编号。接收到原始数据包之后,根据编号确认原始数据包所在的组。确认组的方法是使用原始数据包编号除以三维数据的总长度然后取整得到原始数据所属的组,使用原始数据包编号与三维数据的总长度得到这包在这个组的偏移量。查找容器中是否包含当前包的所属组,如果包含就把当前包放入三维数组中,放置位置就在对应偏移量上。
如果收到冗余数据包,首先从冗余数据包的前两个字节获取冗余数据包所对应的组,在从冗余数据包第三个第四个字节获取冗余数据包在队列里的偏移量。然后查找容器中是否包含当前包的所属组,如果包含就把当前包放入冗余队列中,放置位置就在对应偏移量上。
步骤(6)中,每当接受到冗余数据包时,在冗余数据包的第一第二字节获取冗余数据包所属的组号,在第三四字节获取冗余数据包的偏移量。根据偏移量计算这个冗余数据包对应三维数组里长宽高分别表示为a,b,c。首先取x 轴y轴平面第一列数据,即x轴等于a,y轴等于b,z从1到最大这一列数据,判断这一列数据是否只差一个数据没有收到。如果不是则继续进行x轴等于a,z轴等于c,y从1到最大的这一列数据的判断是否只差一个数据没有收到,最后判断z轴等于c,y轴等于b,x从a到最大的这一列数据的判断是否只差一个数据没有收到如果不是则返回,继续接受冗余数据包。如果只差一个数据没有收到,则根据冗余数据包进行这一个缺失数据的恢复。
取这个一列数据和冗余数据包去掉包头的数据按位进行异或生成的数据包就是没有收到的数据包,然后根据数据包的编号获取数据包在这一列的位置,然后在冗余数据包头中得到恢复数据的具体长度,最后插入到三维数组对应位置上。
在插入到三维数组以后,继续判断当前数据包所对应的x轴y轴z轴是所对应的一列数据的冗余数据包是否已经接收到,如果已经接收到,在判断所对应的一列数据是否只差一个数据没有收到,如果是继续进行冗余恢复,如果不是就返回。
依次接受冗余数据包,依次进行数据包丢失判断和恢复,当丢失的数据包都恢复完成后,返回恢复的数据包,并把当前一组数据从容器中删掉,继续进行下一组数据判断。
如图2所示,本实施例涉及一种基于FEC冗余的数据包抗丢包装置,所述的装置包括:
冗余数据包生成模块:用于接收端接收原始的视频数据包,并对原始数据进行顺序排列,生成冗余数据包;
冗余数据包发送模块:用于接收端按照一定顺序规则发送原始数据和冗余数据;
冗余数据包接收模块:用于接收端接收原始数据包和冗余数据包,并判断原始数据包是否丢失数据;
冗余数据包恢复模块:用于接收端通过冗余数据包恢复原始数据包中丢失的数据。
以上示意性的对本发明及其实施方式进行了描述,该描述没有限制性,附图中所示的也只是本发明的实施方案,实际的结构并不局限于此。所以本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。
Claims (5)
1.一种基于FEC冗余的数据包抗丢包方法,其特征在于,其包括以下步骤: (1)发送端获取原始数据包:接收原始数据包,并将原始数据包按照一定规则排序编号;原始数据的整理存储,预设一个三维数组的空间大小,取原始数据包,依次放入三维数组里面; (2)原始数据包进行冗余操作:预设的三维数组数据完整时,对这个三维数组里的数据包增加冗余数据得到冗余数据包; (3)发送端发送原始数据包和冗余数据包:三维数组的所有长宽高数据都冗余完成后,先把三维数组队列里所有的原始数据发送,按顺序发送冗余数据; (4)接收端接收并保存原始数据包和冗余数据包; (5)检查接收数据包是否完整:根据接收原始数据包和冗余数据包的顺序规则进行判断数据是否完整,数据完整直接返回原始数据;(6)冗余数据包数据恢复:检测到三维数组中数据不完整时,利用冗余数据包计算出丢失的数据包,把新生成的数据包加入到三维数组,继续判断三维数组中是否有缺少的数据,直到数据完全恢复。
2.根据权利要求1所述的基于FEC冗余的数据包抗丢包方法,其特征在于,步骤(1)中,原始数据包放入方法包括:取每个原始数据包的编号,使用编号除以三维数组的空间大小取整得到数据包对应组号;计算每一个数据包的长度,找出其中最长的数据长度保存;其中不同的原始视频数据保存至到不同三维数组内。
3.根据权利要求1所述的基于FEC冗余的数据包抗丢包方法,其特征在于,步骤(2)中,冗余操作的具体步骤包括:(2.1)建立一个队列用来保存增加的冗余数据,队列的长度等于三维数组队列的长乘以宽加上长乘以高加上宽乘以高;
(2.2)分别按照三维数组队列的长宽高进行数据冗余,把生成的冗余数据以此保存到缓存队列中。
4.根据权利要求1所述的基于FEC冗余的数据包抗丢包方法,其特征在于,步骤(4)的具体操作步骤为: (4.1)创建一个容器,预设容器大小为m组,保存n组原始数据和冗余数据,其中m≥n;每一组数据包括一个三维数组队列的原始数据和原始数据对应的冗余数据;(4.2)接收原始数据和冗余数据,接收到原始数据和冗余数据后按照发送端制定的顺序规则保存到容器的一组数据中。
5.一种基于FEC冗余的数据包抗丢包装置,其特征在于,所述的装置包括:冗余包生成模块:用于接收端接收原始的视频数据包,并对原始数据进行顺序排列,生成冗余数据包;冗余包发送模块:用于接收端按照一定顺序规则发送原始数据和冗余数据;冗余包接收模块:用于接收端接收原始数据包和冗余数据包,并判断原始数据包是否丢失数据;冗余包恢复模块:用于接收端通过冗余数据包恢复原始数据包中丢失的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011498666.6A CN112671509B (zh) | 2020-12-18 | 2020-12-18 | 一种基于fec冗余的数据包抗丢包方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011498666.6A CN112671509B (zh) | 2020-12-18 | 2020-12-18 | 一种基于fec冗余的数据包抗丢包方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671509A true CN112671509A (zh) | 2021-04-16 |
CN112671509B CN112671509B (zh) | 2023-04-28 |
Family
ID=75405006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011498666.6A Active CN112671509B (zh) | 2020-12-18 | 2020-12-18 | 一种基于fec冗余的数据包抗丢包方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671509B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020174403A1 (en) * | 2001-05-18 | 2002-11-21 | Frank Chethik | Multi-dimensional packet recovery system and method |
CN1482779A (zh) * | 2002-09-13 | 2004-03-17 | 北京威速科技有限公司 | 互联网多媒体实时通信中的前向纠错方法 |
CN101119319A (zh) * | 2007-09-19 | 2008-02-06 | 腾讯科技(深圳)有限公司 | 一种在数据传输过程中抵抗丢包的方法、收发装置及系统 |
JP2010034898A (ja) * | 2008-07-29 | 2010-02-12 | Canon Inc | データ送信装置及びデータ送信方法 |
CN101834700A (zh) * | 2010-05-12 | 2010-09-15 | 北京邮电大学 | 一种基于数据包的单向可靠传输方法及收发装置 |
WO2017157303A1 (zh) * | 2016-03-15 | 2017-09-21 | 中兴通讯股份有限公司 | 实时通信中的抗丢包方法、装置和系统 |
US20170324519A1 (en) * | 2014-12-31 | 2017-11-09 | Qualcomm Incorporated | Systems and methods for information recovery from redundancy version packets |
CN108075859A (zh) * | 2016-11-17 | 2018-05-25 | 中国移动通信有限公司研究院 | 数据传输方法及装置 |
CN109818714A (zh) * | 2019-01-29 | 2019-05-28 | 北京三体云联科技有限公司 | 动态fec方法、装置、计算机终端和计算机可读存储介质 |
CN109862440A (zh) * | 2019-02-22 | 2019-06-07 | 深圳市凯迪仕智能科技有限公司 | 音视频传输前向纠错方法、装置、计算机设备及存储介质 |
CN110943800A (zh) * | 2019-11-06 | 2020-03-31 | 厦门亿联网络技术股份有限公司 | 数据包的发送方法、装置及系统、存储介质、电子装置 |
CN111176850A (zh) * | 2020-01-03 | 2020-05-19 | 中国建设银行股份有限公司 | 一种数据池的构建方法、装置、服务器及介质 |
-
2020
- 2020-12-18 CN CN202011498666.6A patent/CN112671509B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020174403A1 (en) * | 2001-05-18 | 2002-11-21 | Frank Chethik | Multi-dimensional packet recovery system and method |
CN1482779A (zh) * | 2002-09-13 | 2004-03-17 | 北京威速科技有限公司 | 互联网多媒体实时通信中的前向纠错方法 |
CN101119319A (zh) * | 2007-09-19 | 2008-02-06 | 腾讯科技(深圳)有限公司 | 一种在数据传输过程中抵抗丢包的方法、收发装置及系统 |
JP2010034898A (ja) * | 2008-07-29 | 2010-02-12 | Canon Inc | データ送信装置及びデータ送信方法 |
CN101834700A (zh) * | 2010-05-12 | 2010-09-15 | 北京邮电大学 | 一种基于数据包的单向可靠传输方法及收发装置 |
US20170324519A1 (en) * | 2014-12-31 | 2017-11-09 | Qualcomm Incorporated | Systems and methods for information recovery from redundancy version packets |
CN107196746A (zh) * | 2016-03-15 | 2017-09-22 | 中兴通讯股份有限公司 | 实时通信中的抗丢包方法、装置和系统 |
WO2017157303A1 (zh) * | 2016-03-15 | 2017-09-21 | 中兴通讯股份有限公司 | 实时通信中的抗丢包方法、装置和系统 |
CN108075859A (zh) * | 2016-11-17 | 2018-05-25 | 中国移动通信有限公司研究院 | 数据传输方法及装置 |
CN109818714A (zh) * | 2019-01-29 | 2019-05-28 | 北京三体云联科技有限公司 | 动态fec方法、装置、计算机终端和计算机可读存储介质 |
CN109862440A (zh) * | 2019-02-22 | 2019-06-07 | 深圳市凯迪仕智能科技有限公司 | 音视频传输前向纠错方法、装置、计算机设备及存储介质 |
CN110943800A (zh) * | 2019-11-06 | 2020-03-31 | 厦门亿联网络技术股份有限公司 | 数据包的发送方法、装置及系统、存储介质、电子装置 |
CN111176850A (zh) * | 2020-01-03 | 2020-05-19 | 中国建设银行股份有限公司 | 一种数据池的构建方法、装置、服务器及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112671509B (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6516435B1 (en) | Code transmission scheme for communication system using error correcting codes | |
US9191158B2 (en) | Communication apparatus, communication method and computer readable medium | |
JP4785836B2 (ja) | デジタルデータパケットを伝送する方法および該方法を実装する装置 | |
CN102143367B (zh) | 一种纠错校验方法、设备和系统 | |
CN100362782C (zh) | 对丢失数据单元进行恢复的方法 | |
ES2342465T3 (es) | Procedimiento y sistema de correccion de error de envio para la transmision fiable de datos en tiempo real por redes basadas en paquetes. | |
US8261162B2 (en) | Decoding device, decoding method, and media data delivery system | |
KR101118194B1 (ko) | 손실된 패킷 재건을 위한 방법 및 상기 방법을 수행하기 위한 디바이스 | |
CN110943800A (zh) | 数据包的发送方法、装置及系统、存储介质、电子装置 | |
US20100050055A1 (en) | Data receiving apparatus, data receiving method, and computer-readable recording medium | |
US8972815B1 (en) | Recovery of media datagrams | |
CN109347598A (zh) | 校验码处理方法、电子设备及存储接介质 | |
CN102239658B (zh) | 按需差错控制 | |
CN109787722A (zh) | 数据传输方法、装置和服务器 | |
US6697996B2 (en) | Multi-dimensional packet recovery system and method | |
US6871312B2 (en) | Method and apparatus for time stamping data | |
US6473875B1 (en) | Error correction for network delivery of video streams using packet resequencing | |
JP2005223684A (ja) | 送受信システム、送信装置および方法、受信装置および方法、送受信装置および方法、並びにプログラム | |
CN110545161B (zh) | 一种具有冗余的多媒体数据实时传输方法 | |
CN112671509A (zh) | 一种基于fec冗余的数据包抗丢包方法和装置 | |
CN112804028B (zh) | 一种数据包的传输方法、设备及存储介质 | |
US20140101521A1 (en) | Method and apparatus for decoding received packets in broadcasting and communication system | |
CN1622504A (zh) | 一种数据包恢复方法 | |
US10211950B1 (en) | High bit rate media FEC recovery | |
JP2004274214A (ja) | 送信装置、受信装置、それらの方法およびそれらを接続した通信システム並びに誤り訂正装置 |
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 |