[发明专利]一种基于视频帧的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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州叙简科技股份有限公司,未经杭州叙简科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011160364.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种汽车零件加工用油污清洗装置
- 下一篇:一种便携式隧道围岩强度测量装置