[发明专利]一种基于视频帧的FEC纠错系统有效

专利信息
申请号: 202011160364.8 申请日: 2020-10-27
公开(公告)号: CN112333470B 公开(公告)日: 2022-05-27
发明(设计)人: 陈尚武;李华松;倪仰 申请(专利权)人: 杭州叙简科技股份有限公司
主分类号: H04N21/2343 分类号: H04N21/2343;H04N21/4402;H04N21/647;H04N21/845;H04N21/8547
代理公司: 浙江传衡律师事务所 33387 代理人: 叶卫强
地址: 310023 浙江省杭州市五常*** 国省代码: 浙江;33
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 视频 fec 纠错 系统
【权利要求书】:

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的时戳进行分组,获取视频RTP流的负载数据,得到帧分包数据,发送给组帧模块(13),具体流程如下:

判断这分组FEC包是I帧FEC流还是混合FEC流,如果是I帧FEC流,则根据I帧FEC流的RTP填充信息取出顺序编号x和I帧数据长度和I帧首包seq序号,从I帧FEC流的RTP的负载的行纠错码与列纠错码数据,根据顺序编号还原出行纠错码与列纠错码,把行纠错码与列纠错码与I帧时戳发送给I帧FEC解码模块(11),根据I帧数据长度和I帧首包seq序号计算出I帧包数P,I帧包数P=I帧数据长度/1400+1,如果I帧数据长度取余1400为零,包数减一,最后一个分包长度为1400,如果I 帧数据长度取余1400非零,最后一个分包长度为余数;

根据I帧首包seq序号与I帧包数得到该I帧所有RTP包的seq序号序列,seq序号序列与该分组的I帧的RTP流查找丢失包清单,根据视频RTP流的负载得到I帧分包数据,把I帧分包数据与最后一个分包长度与丢失包清单与I帧时戳发送到I帧FEC解码模块(11)与混合FEC解码模块(12)与组帧模块(13);

如果是混合FEC流,则根据混合FEC流的RTP填充信息取出P帧数据长度和P帧首包seq序号与P帧的帧序号与I帧的时戳与比例K,取出混合FEC流的RTP的负载的纠错码数据,把纠错码数据与I帧时戳发送给混合FEC解码模块(12);根据P帧数据长度和P帧首包seq序号计算出P帧包数P,P帧包数P=P 帧数据长度/1400+1,如果P帧数据长度取余1400为零,包数减一,最后一个分包长度为1400,如果P帧数据长度取余1400非零,最后一个分包长度为余数;

根据P帧首包seq序号与P帧包数得到该P帧所有RTP包的seq序号序列,seq序号序列与该分组的P帧的rtp流查找丢失包清单,根据视频RTP流的负载得到P帧分包数据,把P帧分包数据与最后一个分包长度与丢失包清单与P帧时戳与P帧的帧序号与该视频帧组的I帧时戳与比例K发给混合FEC解码模块(12)与组帧模块(13);

I帧FEC解码模块(11)恢复I帧的丢失分包,具体流程如下:

接收网络混合接收模块(10)的行纠错码与列纠错码与I帧时戳,以及I帧分包数据与I帧分包的数量与最后一个分包长度与丢失包清单与I帧时戳,根据I帧时戳关联行纠错码与列纠错码与I帧分包数据与丢失包清单;

分包的数量使用I帧FEC编码模块(7)的方法生成N*M矩阵,如果丢失包清单矩阵行/列只有一个丢包,则该行/列其他分包数据与该行/列纠错码进行异或计算得到该位置的分包数据,如果是最后一个分包则按照分包长度进行异或,把分包数据发送给组帧模块(13)和混合FEC解码模块(12),然后使用I帧分包数据给I帧FEC解码模块(11)做二次还原;

I帧FEC解码模块(11)接收混合FEC解码模块(12)的恢复分包进行二次还原;

I帧FEC解码模块(11)恢复分包二次还原,在丢失包清单删除I帧分包,检查I帧分包的列与行是否存在一个丢包,如果只存在一个丢包,则该行其他分包数据与该行/列纠错码进行异或计算得到该位置的分包数据,把分包数据发送给组帧模块(13)和混合FEC解码模块(12),然后使用I帧分包数据给I帧FEC解码模块(11)做二次还原;

通过I帧FEC解码模块(11)与混合FEC解码模块(12)相互增强丢包恢复能力;

混合FEC解码模块(12)恢复I帧的丢失分包与P帧的丢失分包,具体流程如下:

混合FEC解码模块(12)接收网络混合接收模块(10)的P帧分包数据与最后一个分包长度与丢失包清单与P帧时戳与P帧的帧序号与I帧时戳与比例K;

混合FEC解码模块(12)接收网络混合接收模块(10)的纠错码数据与P帧时戳,接收网络混合接收模块(10)的I帧分包数据与I帧分包的数量与最后一个分包长度与丢失包清单与I帧时戳;

混合FEC解码模块(12)根据P帧的该视频帧组的I帧时戳获取对应I帧,根据比例K对I帧分包的数量等分,得到K分片列表,根据P帧的帧序号为分片列表下标,取得P帧对应I帧分片数据,检查I帧丢失包清单中该分片是否丢包,如果该分片没有丢包,P帧的丢失包清单丢一个包,则使用把P帧其他分包数据与I帧分片的分包数据与纠错码数据进行异或得到P帧的丢包,把P帧的恢复数据包与时戳发送给组帧模块(13);如果P帧的丢失包清单没有丢包,I帧分片的丢失包清单丢失一个包,则P帧分包数据与I帧分片其他分包数据与纠错码数据进行异或,得到I帧的恢复分包数据,把I帧的分包数据与时戳发送给I帧FEC解码模块(11)与组帧模块(13);

混合FEC解码模块(12)得到I帧FEC解码模块(11)的I帧恢复分包数据与I帧时戳,根据I帧时戳找对应I帧,I帧丢失包清单删除分包,该恢复分包数据在K分片列表对应分片,判断该分片是否还有丢包,如果没有丢包,根据分片的位置偏移匹配P帧的帧序号,找对应P帧,如果该P帧只丢失一个包,则P帧其他分包数据与I帧分片的分包数据与纠错码数据进行异或得到P帧的丢包,把P帧的恢复数据包与P帧时戳发送给组帧模块(13);

组帧模块(13)生成I帧与P帧数据,具体流程如下:

组帧模块(13)接收网络混合接收模块(10)的I帧分包数据与最后一个分包长度与丢失包清单与I帧时戳,接收P帧分包数据与最后一个分包长度与丢失包清单与P帧时戳与I帧时戳;

组帧模块(13)接收I帧FEC解码模块(11)的I帧恢复分包数据,接收混合FEC解码模块(12)的I帧恢复分包数据与P帧恢复分包数据;

组帧模块(13)收到I帧恢复分包数据则删除I帧丢失包清单的丢失分包,检查I帧丢失包清单,如果I帧没有丢包,则合并I帧分包数据得到I帧数据给视频解码显示模块(14);

组帧模块(13)收到P帧恢复分包数据则删除P帧丢失包清单的丢失分包,如果P帧没有丢包,且根据P帧的I帧时戳找到对应I帧,I帧与该P帧的时戳间的其他帧也没有丢失分包,则合并P帧分包数据得到P帧数据给视频解码显示模块(14);

视频解码显示模块(14)使用组帧模块(13)生成的I帧与P帧数据进行解码,并显示。

2.根据权利要求1所述的一种基于视频帧的FEC纠错系统,其特征在于:所述比例K是正整数,所述帧序号ki的i是正整数,其范围是1-K,所述顺序编号x为正整数,所述的PT表示Payload type。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州叙简科技股份有限公司,未经杭州叙简科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202011160364.8/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top