WebRTC系列-Qos系列之音频设置丢包重传nack

Posted 简简单单lym

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebRTC系列-Qos系列之音频设置丢包重传nack相关的知识,希望对你有一定的参考价值。

文章目录

1. 打开方式

在目前的WebRTC各个版本中音频的重传目前都是默认处于关闭的,也就是音频的sdp里默认是没有NACK;设置打开音频NACK有两种方式:

  1. 修改源码的方式,通过前面的一系列文章我们知道WebRTC中收集音频编码信息是在WebRtcVoiceEngineCollectCodecs(...)方法中,在这个方法里可以找到kRtcpFbParamTransportCc 也就是"transport-cc"设置,在sdp中是a=rtcp-fb:111 transport-cc;但是这种方式只适合有源码的修改;
  2. 修改sdp的方式,在调用setRemoteSessionDescription之前修改sdp(这里不管是offer还是answer,都是在setRemoteSessionDescription之前),修改建议使用libsdptransform c++版本把sdp转成json操作,浏览器有对应的sdp-transform js版;转成json后修改方式:

WebRtc Native M96 远端视频接收之NackRequesterNackSender-NACK丢包重传原理

WebRTC NACK is Negative Acknowledgement. One of the mechanisms for delivery errors correction in WebRTC

rtp包是如何到达NackRequester模块的

注意,在M96版本中,类名是NackRequester

Call::DeliverPacket
Call::DeliverRtp
RtpStreamReceiverController::OnRtpPacket
RtpDemuxer::OnRtpPacket
RtpVideoStreamReceiver2::OnRtpPacket
RtpVideoStreamReceiver2::ReceivePacket
RtpVideoStreamReceiver2::OnReceivedPayloadData
NackRequester::OnReceivedPacket

NackRequester类介绍

继承关系:

class NackRequester final : public NackRequesterBase

主要成员变量:
std::map<uint16_t, NackInfo, DescendingSeqNumComp<uint16

以上是关于WebRTC系列-Qos系列之音频设置丢包重传nack的主要内容,如果未能解决你的问题,请参考以下文章

WebRtc Native M96 远端视频接收之NackRequesterNackSender-NACK丢包重传原理

Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析

WebRTC[54] - WebRTC之RTCP详解

WebRTC[54] - WebRTC之RTCP详解

WebRTC系列分享 第二期 | WebRTC QoS方法之Pacer实现

TCPIP协议栈的心跳丢包重传连接超时机制实例详解