一种基于视频帧的FEC纠错系统技术方案

技术编号:27278775 阅读:20 留言:0更新日期:2021-02-06 11:45
本发明专利技术公开了一种基于视频帧的FEC纠错系统,包含:视频采集编码模块,帧比例模块,帧拆解模块,I帧封包模块,I帧切片模块,P帧封包模块,I帧FEC编码模块,混合FEC编码模块,网络混合发送模块,网络混合接收模块,I帧FEC解码模块,混合FEC解码模块,组帧模块,视频解码显示模块;视频采集编码模块采集视频,通过视频压缩,编码成视频压缩流,视频压缩流由视频帧组组成,视频帧组包含一个I帧与多个P帧。本发明专利技术按照帧来生成FEC纠错包,能缩短恢复时延,提升FEC工作效率,有效利用网络资源;使用P帧与I帧切片进行混合FEC编码,提高I帧可靠性;I帧FEC解码模块与混合FEC解码模块相互配合,丢包恢复能力强。复能力强。复能力强。

【技术实现步骤摘要】
一种基于视频帧的FEC纠错系统


[0001]本专利技术涉及数据处理领域,具体涉及一种基于视频帧的FEC纠错系统。

技术介绍

[0002]当前视频流FEC(Forward Error Correction)前向纠错码针对视频网络报文进行纠错,这里带来几个问题,视频流I帧比较大(一般10倍到100倍P帧),P帧是体现画面变换量的,画面变换较少时P帧会变小,使用统一FEC方法会引入固定时延,导致丢包恢复慢。单独I帧出完整图像,P帧需要I帧解码,这意味I帧优先级要大于P帧,需要FEC的优先保证需要对I帧丢包恢复,所以需要一种视频流的帧的FEC方法。

技术实现思路

[0003]本专利技术的目的是提供一种基于视频帧的FEC纠错系统,按照帧来生成FEC纠错包,缩短恢复时延,提升FEC工作效率,并使用P帧与I帧切片进行混合FEC编码提高I帧可靠性。
[0004]技术方案如下:
[0005]本专利技术提供一种基于视频帧的FEC纠错系统,包含:视频采集编码模块,帧比例模块,帧拆解模块,I帧封包模块,I帧切片模块,P帧封包模块,I帧FEC编码模块,混合FEC编码模块,网络混合发送模块,网络混合接收模块,I帧FEC解码模块,混合FEC解码模块,组帧模块,视频解码显示模块;
[0006]视频采集编码模块:采集视频通过视频压缩,编码成视频压缩流,视频压缩流由视频帧组组成,视频帧组包含一个I帧与多个P帧,I帧能独立解码,P帧依赖上一帧解码,视频采集编码模块把视频压缩流给帧比例模块与帧拆解模块;
[0007]帧比例模块:根据视频压缩流的之前的视频帧组的GOP(两个I帧的间隔),确认I帧与P帧的比例K,把比例K给I帧切片模块;
[0008]帧拆解模块:把I帧发给I帧封包模块,把P帧发送给P帧封包模块;
[0009]I帧封包模块:接收帧拆解模块的I帧数据,进行分包处理,按照1400字节分包,用于网络传输,把分包的数据发送给网络混合发送模块与I帧FEC编码模块;
[0010]I帧切片模块:接收帧I帧封包模块的I帧分包的数据,按照I帧与P帧比例K,对I帧分包数据进行分组得到K份分片数据,每个分片标上序号ki(范围1-K),把分片数据与序号与比例K发送给混合FEC编码模块;
[0011]P帧封包模块:把P帧数据,进行分包处理,用于网络传输,把分包的数据发送给网络混合发送模块,P帧封包模块把每个P帧分包的数据标上帧序号ki,帧序号ki为视频帧组的位置标号,P帧从1开始编号,把P帧数据与帧序号ki发送给混合FEC编码模块;
[0012]I帧FEC编码模块:接收到I帧封包模块的分包的数据进行FEC前向纠错编码,I帧数据比较大,采用两维单矩阵交炽编码,接近正方型的矩阵是为了减低I帧fec数据数量,选择N平方值正好大于分包的数量,Y轴减少一,判断N*(N-1)是否大于分包的数量,如果大于分包的数量,则选择N*(N-1)矩阵,否则选择N*N矩阵,设定最终矩阵为N*M;视频分包的数据依
次从左到右,从上到下放入N*M矩阵,分别每一行视频分包数据按照1400字节进行异或最终得到行纠错码,每一列视频分包按照1400字节进行异或最终得到列纠错码,如果N*M矩阵上没有视频分片数据,则跳过该位置,如果是视频分包的最一个包,则按照该包长度进行异或,把行纠错码与列纠错码与I帧数据大小发送给网络混合发送模块;
[0013]混合FEC编码模块:接收P帧封包模块的P帧分包数据与序号与P帧长度,接收I帧切片模块的I帧分片数据与序号与比例K,按照序号配对I帧分片数据与P帧的分包数据,使用单行纠错码,先对P帧的分包数据的进行异或计算得到f,使用f对I帧分片的分包进行异或得到P帧的纠错码,对P帧的分包数据的最后一个包实际长度进行异或计算;混合FEC编码模块把生成的纠错码与P帧的长度与P帧的帧序号与比例K发送给网络混合发送模块;
[0014]网络混合发送模块:接收到I帧封包模块与P帧封包模块的分包数据与比例K,使用RTP打包传输,RTP的seq序号逐一递增,RTP的时戳递增,使用独立RTP的PT(Payload type)作为视频RTP流发送给网络混合接收模块;接收I帧FEC编码模块的行纠错码与列纠错码与I帧数据大小与P帧的帧序号,对行纠错码与列纠错码进行顺序编号x,使用RTP打包传输,RTP的时戳同对应视频帧的RTP时戳,用于接收端纠错码与I帧关联,RTP的负载(Payload)存放纠错码数据,RTP的填充信息放置纠错码的顺序编号x和I帧数据长度和I帧首包seq序号,使用独立RTP的PT(Payload type)作为I帧FEC流发送给网络混合接收模块;接收混合FEC编码模块的纠错码与P帧的长度,使用RTP打包传输,RTP的时戳同对应视频帧的RTP时戳,用于接收端纠错码与P帧关联,RTP的负载放纠错码数据,RTP的填充信息放置P帧数据长度和P帧的首包seq序号和P帧的帧序号和I帧时戳与比例K,作为独立RTP流发送给网络混合接收模块,使用独立RTP的PT(Payload type)作为混合FEC流发送给网络混合接收模块;
[0015]网络混合接收模块:接收网络混合发送模块的视频RTP流与I帧FEC流与混合FEC流,按照时戳进行分组,获取视频RTP流的负载(Payload),得到帧分包数据,发送给组帧模块;判断这分组FEC包是I帧FEC流还是混合FEC流,如果是I帧FEC流,则根据I帧FEC流的RTP填充信息取出顺序编号x和I帧数据长度和I帧首包seq序号,从I帧FEC流的RTP的负载(Payload)的行纠错码与列纠错码数据,根据顺序编号还原出行纠错码与列纠错码,把行纠错码与列纠错码与时戳发送给I帧FEC解码模块,根据I帧数据长度和I帧首包seq序号计算出,计算I帧包数P=I帧数据长度/1400+1,如果I帧数据长度取余1400为零,包数减一,最后一个分包长度为1400,如果P帧数据长度取余1400非零,最后一个分包长度为余数;根据I帧首包seq序号与I帧包数得到该I帧所有RTP包的seq序号序列,seq序号序列与该分组的I帧的RTP流查找丢失包清单,把视频RTP流的负载(Payload)得到I帧分包数据,把I帧分包数据与最后一个分包长度与丢失包清单与时戳发送到I帧FEC解码模块与混合FEC解码模块与组帧模块;如果是混合FEC流,则根据混合FEC流的RTP填充信息取出P帧数据长度和P帧首包seq序号与P帧的帧序号与I帧的时戳与比例K,从混合FEC流的RTP的负载的纠错码数据,把纠错码数据与时戳发送给混合FEC解码模块;根据P帧数据长度和P帧首包seq序号计算出,计算P帧包数P=I帧数据长度/1400+1,如果P帧数据长度取余1400为零,包数减一,最后一个分包长度为1400,如果P帧数据长度取余1400非零,最后一个分包长度为余数;根据P帧首包seq序号与P帧包数得到该P帧所有RTP包的seq序号序列,seq序号序列与该分组的P帧的rtp流查找丢失包清单,把视频RTP流的负载(Payload)得到P帧分包数据,把P帧分包数据与本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于视频帧的FEC纠错系统,其特征在于,包含:视频采集编码模块(1),帧比例模块(2),帧拆解模块(3),I帧封包模块(4),I帧切片模块(5),P帧封包模块(6),I帧FEC编码模块(7),混合FEC编码模块(8),网络混合发送模块(9),网络混合接收模块(10),I帧FEC解码模块(11),混合FEC解码模块(12),组帧模块(13),视频解码显示模块(14);视频采集编码模块(1)采集视频,通过视频压缩,编码成视频压缩流,视频压缩流由视频帧组组成,视频帧组包含一个I帧与多个P帧,I帧能独立解码,P帧依赖上一帧解码,视频采集编码模块(1)把视频压缩流给帧比例模块(2)与帧拆解模块(3);帧比例模块(2)根据视频压缩流的之前的视频帧组的GOP,确认I帧与P帧的比例K,把比例K给I帧切片模块(5);帧拆解模块(3)把I帧发给I帧封包模块(4),把P帧发送给P帧封包模块(6);I帧封包模块(4):接收帧拆解模块(3)的I帧数据,进行分包处理,按照1400字节分包,用于网络传输,把分包的数据发送给网络混合发送模块(9)与I帧FEC编码模块(7);I帧切片模块(5):接收帧I帧封包模块(4)的I帧分包的数据,按照I帧与P帧比例K,对I帧分包数据进行分组得到K份分片数据,每个分片标上序号ki,把分片数据与序号与比例K发送给混合FEC编码模块(8);P帧封包模块(6)把P帧数据,进分包处理,用于网络传输,把分包的数据发送给网络混合发送模块(9),P帧封包模块(6)把每个P帧分包的数据标上帧序号ki,帧序号ki为视频帧组的位置标号,P帧从1开始编号,把P帧数据与帧序号ki发送给混合FEC编码模块(8);I帧FEC编码模块(7)接收到I帧封包模块(4)的分包的数据进行FEC前向纠错编码,具体流程如下:I帧数据比较大,采用两维单矩阵交炽编码,接近正方型的矩阵是为了减低I帧fec数据数量,选择N平方值正好大于分包的数量,Y轴减少一,判断N*(N-1)是否大于分包的数量,如果大于分包的数量,则选择N*(N-1)矩阵,否则选择N*N矩阵,设定最终矩阵为N*M;视频分包的数据依次从左到右,从上到下放入N*M矩阵,分别每一行视频分包数据按照1400字节进行异或最终得到行纠错码,每一列视频分包按照1400字节进行异或最终得到列纠错码,如果N*M矩阵上没有视频分片数据,则跳过该位置,如果是视频分包的最一个包,则按照该包长度进行异或,把行纠错码与列纠错码与I帧数据大小发送给网络混合发送模块(9);混合FEC编码模块(8)进行I帧与P帧混合FEC编码,具体流程如下:混合FEC编码模块(8)接收P帧封包模块(6)的P帧分包数据与序号与P帧长度,接收I帧切片模块(5)的I帧分片数据与序号与比例K,按照序号配对I帧分片数据与P帧的分包数据,使用单行纠错码,先对P帧的分包数据的进行异或计算得到f,使用f对I帧分片的分包进行异或得到P帧的纠错码,对P帧的分包数据的最后一个包实际长度进行异或计算;混合FEC编码模块(8)把生成的纠错码与P帧的长度与P帧的帧序号与比例K发送给网络混合发送模块(9);网络混合发送模块(9)发送视频RTP流,混合FEC流,I帧FEC流,具体流程如下:网络混合发送模块(9)接收到I帧封包模块(4)与P帧封包模块(6)的分包数据与比例K,使用RTP打包传输,RTP的seq序号逐一递增,RTP的时戳递增,使用独立RTP的PT作为视频RTP流发送给网络混合接收模块(10);
网络混合发送模块(9)接收I帧FEC编码模块(7)的行纠错码与列纠错码与I帧数据大小与P帧的帧序号,对行纠错码与列纠错码进行顺序编号x,使用RTP打包传输,RTP的时戳同对应视频帧的RTP时戳,用于接收端纠错码与I帧关联,RTP的负载存放纠错码数据,RTP的填充信息放置纠错码的顺序编号x和I帧数据长度和I帧首包seq序号,使用独立RTP的PT作为I帧FEC流发送给网络混合接收模块(10);网络混合发送模块(9)接收混合FEC编码模块(8)的纠错码与P帧的长度,使用RTP打包传输,RTP的时戳同对应视频帧的RTP时戳,用于接收端纠错码与P帧关联,RTP的负载放纠错码数据,RTP的填充信息放置P帧数据长度和P帧的首包seq序号和P帧的帧序号和I帧时戳与比例K,作为独立RTP流发送给网络混合接收模块(10),使用独立RTP的PT作为混合FEC流发送给网络混合接收模块(10);网络混合接收模块(10)接收网络混合发送模块(9)的视频RTP流与I帧FEC流与混合FEC流,按照时戳进行分组,获取视频RTP流的负载数据,得到帧分包数据,发送给组帧模块(13),具体流程如下判断这分组FEC包是I帧FEC流还是混合FEC流,如果是I帧FEC流,则根据I帧FEC流的RTP填充信息取出顺序编号x和I帧数据长度和I帧首包seq序号,从I帧FEC流的RTP的负载的行纠错码与列纠错码数据,根据顺序编号还原出行纠错码与列纠错码,把行纠错码与列纠错码与时戳发送给I帧FEC解码模块(11),根据I帧数据长度和I帧首包seq序号计算出,计算I帧包数P=I帧数据长度/1400+1,如果I帧数据长度取余1400为零,包数减一,最后一个分包长度为1400,如果P帧数据长度取余1400非零,最后一个分包长度为余数;根据I帧首包seq序号与I帧包数得到该I帧所有RTP包的...

【专利技术属性】
技术研发人员:陈尚武李华松倪仰
申请(专利权)人:杭州叙简科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1