• HARQ即混合自动重传请求(Hybrid Automatic Repeat reQuest)


    TCP协议的重传机制不适合实时音视频传输,实时音视频传输协议一般采用UDP(应用层基于UDP的RTP协议),UDP具有高吞吐和低延时的特点。
    基于UDP的RTP传输在复杂的公网环境下,面临丢包、乱序、重复、抖动等问题。
    FEC (Forward Error Correction,前向纠错):位于应用层的一项有效防止丢包的技术,是一种实时视频传输的有效可靠的解决方案。

    在这里插入图片描述
    传送的数据流包括以下三种:
    1.前向纠错ES流: 也叫基本码流,包含视频、音频或数据的连续码流。
    2.前向纠错PES流:也叫打包的基本码流,是将基本码流ES流根据需要分成长度不等的数据包,并加上包头形成了打包的基本码流PES流。
    3.前向纠错TS流: 也叫传输流,有固定长度的188字节的包组成,含有独立时基的一个或多个节目,适用于误码较多的环境。

    影响FEC性能的三个主要因素:
    FEC的使用可以有效的提高系统的性能,根据香农定理可以得到噪声信道无误码传输的极限性能(香农限),FEC方案的性能主要由编码开销、判决方式、码字方案这三个主要因素决定。
    (1)编码开销:校验位长度(n-k)与信息长度k的比值,称为编码开销。开销越大,FEC方案的理论极限性能越高,但增加并不是线性的,开销越大,开销增加带来的性能提高越小。开销的选择,需要根据具体系统设计的需求来确定。
    (2)判决方式:FEC的译码方式分为硬判决译码和软判决译码两种。
    (3) 码字档案:当确定开销和判决方式后,设计优异码字方案,使性能更接近香农极限,是FEC的主要研究课题。软判决LDPC码,由于其良好的纠错性能,且非常适合高并行实现,逐步称为高速光通信领域主流FEC的方案。

    http://openfec.org/accueil.html

    前向纠错FEC算法

    前向纠错(FEC)算法被广泛使用在实时音视频领域提升音视频的弱网抗性,只要收到FEC分组内的冗余包和一定数量的数据包,就能根据FEC算法恢复出对应的冗余包。
    常见的FEC实现包括M+1系列的异或算法、M+N系列的RS矩阵算法,这2种实现算法各有优缺点。

    异或算法实现相对简单,将M个数据包逐字节进行异或计算,计算得到的结果即为冗余包。这种算法只需要进行异常运算,复杂度低。但是抗丢包能力弱,例如 4+1算法,5个包里面最多只能丢1个包,否则就无法恢复。

    在实时音视频领域主要采用M+N系列的CRS矩阵算法。

    FEC在不需要保障可靠性的网络中也有应用:
    12=encoder(10)
    接收方不需要获取全部数据包,只收到部分数据包就可以开始解析
    12=decoder(10)

    基于奇偶校验码
    数据包个数尽可能相同

    CRS算法

    https://www.smiletoyou.cn/?p=319
    在实时音视频领域主要采用M+N系列的CRS矩阵算法
    M个数据包,N个冗余包。如果直接用编码矩阵(M+N)*矩阵M,就可以得到一个M+N行的编码输出矩阵,其中L为原始数据包的长度。

    一、CRS矩阵编码
    在这里插入图片描述
    (1)构造生成矩阵:生成矩阵前M项是一个单位阵,后R项是一个柯西矩阵(便于求逆)。
    (2)生成冗余数据:将M个原始数据包与生成矩阵做伽罗华域上的矩阵运算,即可得到N个冗余包。
    将数据包与冗余包通过网络发送,FEC恢复最多带来(M+1)个数据包间隔。

    二、RS矩阵解码恢复
    在这里插入图片描述
    (1)求解恢复矩阵:在生成矩阵里面根据收到的数据包以及冗余包,(填充丢失数据包的位置)构成生成矩阵的子矩阵,对子矩阵求逆,得到恢复矩阵。
    (2)数据包恢复:选取收到的数据包以及冗余数据与恢复矩阵进行伽罗华域上的矩阵运算,求解出丢失的数据包。

    柯西矩阵

    https://www.pianshen.com/article/52041940317/
    在这里插入图片描述

  • 相关阅读:
    还在用Excel做报表?建议你试试这个数据填报系统_光点科技
    一文搞懂ES6的Map
    巧用网络分析仪的校准
    Python + Django4 搭建个人博客(五): 创建并连接数据库
    柬埔寨市场最全开发攻略
    C语言 cortex-A7核 按键中断 实验【重点】
    javase__进阶 day18 多线程02
    WPF 制作雷达扫描图
    线性代数2:梯队矩阵形式
    在 Streamlit 中使用自定义 CSS 创建加密仪表板
  • 原文地址:https://blog.csdn.net/liuzhicheng1845/article/details/125505030