一、概述

发送端的音视频NACK实现没有差异,是共用一套rtp_packet_history代码,这样做的好处是,当要清空NACK队列时,音视频一起清空,可以防止出现音视频不同步异常;在接收端,音视频NACK实现细节是不一样的。

视频接收端NACK实现函数是NackModule2,音频接收端NACK实现函数是NackTracker。

音视频NACK实现差异主要有两点:

  1. 视频NACK满足一定条件会进行IDR帧请求:视频模块会配置nack_list的最大长度为kMaxNackPackets,即本次发送的nack包至多可以对kMaxNackPackets个丢失的包进行重传请求。如果丢失的包数量超过kMaxNackPackets,会循环清空nack_list中关键帧之前的包,直到其长度小于kMaxNackPackets。也就是说,放弃对关键帧首包之前的包的重传请求,直接而快速的以关键帧首包之后的包号作为重传请求的开始。这部分请参见如下链接实现:webrtc QOS方法一.2(接收端NACK流程实现)_CrystalShaw的博客-CSDN博客1、概述webrtc接收端触发发送NACK报文有两处:1、接收RTP报文,对序列号进行检测,发现有丢包,立即触发发送NACK报文。2、定时检查nack_list_队列,2、流程实现https://blog.csdn.net/CrystalShaw/article/details/107003142
  2. 音频NACK因为JitterBuffer有kAccelerate(加速播放)、kExpand(减速播放)、kAlternativePlc(丢包补偿)、kMerge(融合)的异常恢复操作,不是所有报文都需要重传。所以需要在解码端需要更新nack_list的出包时间戳。

二、代码走读

1、音频接收端NACK的NackTracker对外接口函数说明

2、音频接收端NACK在系统调度位置

km continue

webrtc音频QOS方法四(音频接收端NACK流程实现)相关推荐

  1. webrtc QOS方法四.2(拥塞算法学习)

    一.网图简介 现在我们接入网络的方式有三种:手机4G/5G.WIFI.网线.三种接入方式在网络中的位置如上图所示.引起网络质量差的原因也有很多,比方说4G/5G.WIFI信号弱.wifi信道竞争.云营 ...

  2. Android音频相关(四)设置铃声流程总结

    本文主要介绍的是设置铃声的流程,在流程梳理清楚后解决问题也有大致的方向了. 一.要点概述 补充知识点: frameworks/base/packages/SettingProvider/中的生成的数据 ...

  3. WebRTC系列-Qos系列之发送NACK

    文章目录 1. NACK简述 2. 判断包位置的算法 2. WebRTC中NACK的处理流程 2.1 主要流程函数分析 2.2 是否丢包判断 2.3 乱序包的处理 在之前的文章 WebRTC系列-Qo ...

  4. 怎么从视频中提取音频,这四个方法简单实用!

    如果你经常在抖音.快手等短视频平台上听到各种改编后的歌曲,或是用别的乐器吹拉弹奏出来的伴奏,可能会想知道怎样把视频中的音频提取出来以便在其他平台上使用.本文为你准备了四种方法来提取音频. 方法一:录音 ...

  5. webrtc QOS方法二.1(FEC原理)

    一.概述 webrtc冗余打包方式有三种:Red(rfc2198).Ulpfec(rfc5109).Flexfec(草案).其中Red和Ulpfec要成对使用. 二.RedFEC 简单将老报文打包到新 ...

  6. html在线录音并上传,一种网页版在线录制wav音频的方法与流程

    本发明涉及网页版音频录制的技术领域,特别涉及一种网页版在线录制wav音频的方法. 背景技术: 随着国内经济的快速发展,人们的生活水平越来越高,而随之带动了电子产品的广泛应用与高速发展,电子已普及到人们 ...

  7. 怎么把视频转换成音频?视频转音频方法分享。

    怎么把视频转换成音频?对于从事剪辑行业的小伙伴们来说,背景音乐是最不可或缺的一个部分,很多小伙伴所使用的背景音乐也是自己制作的,那么在我们看到有视频的背景音乐我们特别喜欢的情况下,该如何去制作成我们的 ...

  8. linux驱动:音频驱动(四)ASoc之machine设备

    linux驱动:音频驱动(四)ASoc之machine设备

  9. .NET NAudio音频录制方法 2021-02-13

    .NET NAudio音频录制方法 写在前面 文章主要内容 说明 检测录音电平 调节录音电平 开始录音 调整音频 保存音频 关于作者 讨论 SomeONe Clint Nate Greenwood C ...

  10. python实现自动拨打电话_twilio python自动拨打电话,播放自定义mp3音频的方法

    有个小项目,需求是某事件发生时,给客户打电话,提醒客户.需要事先录制好一段音频,客户接通电话后,自动播放. 1. 注册twilio账号 2. 买一个电话号码 3. 安装twilio pip insta ...

最新文章

  1. 利用PowerDesigner比较2个数据库
  2. mysql建表简单的date数据类型_MySQL建表 TIMESTAMP 类型字段问题
  3. 理清 WebSocket 和 HTTP 的关系
  4. php面试题11(边看边复习刚刚讲的)(array_multisort($arr1,$arr2); 用$arr1来排序$arr2。)...
  5. 深度学习 正则化 正则化率_何时以及如何在深度学习中使用正则化
  6. linux内核与用户空间的九种通信机制
  7. mysql kill hup_kill -HUP pid
  8. JZOJ_3928. 射击 (Standard IO)
  9. jQuery.Validate.js验证大表单的优化
  10. expdp导出表结构_Oracle用exp导出部分表和expdp
  11. 鹏芯U盘(UDK2008)意外断电后修复
  12. 数字图像处理(matlab版)第三版,数字图像处理及MATLAB实现(第3版)
  13. U盘文件或目录损坏且无法读取修复方法?
  14. html5超萌哈士奇,哈士奇,是一种让人又爱又恨,又拥有自己独特风格的雪橇犬...
  15. jquery 调用 click 事件 的 三种 方式
  16. 社交类App如何防范黑产垃圾用户?
  17. 有关Unity3D的OnRenderImage()和Blit()的一些问题
  18. 用标志域tag判断队空队满的入队和出队算法
  19. Skyline 3dm格式l数据困惑
  20. 帝国cms php序号,帝国cms教程:如何使用灵动标签生成带序号的列表

热门文章

  1. 金蝶EAS系统,供应链,即时库存查询,库存查询SQL脚本
  2. Http、浏览器面试题
  3. 读《别在该努力的年纪,徘徊不前》有感
  4. lammps案例:石墨烯热导率模拟计算(EMD方法)
  5. python人民币转大写_python将人民币转换大写的脚本代码
  6. 导航系统中里程计研究综述
  7. 阿里云域名部署免费证书,开启https访问。
  8. 各种无线传输协议汇总(一)- Bluetooth
  9. 物联网常见的无线传输协议类型
  10. 计算机英语阅读路线,计算机经典英语短文阅读