[webrtc] RTX的处理

以前笔记,整理

webrtc中默认开启rtx用于丢包重传,rtx的介绍可以参考rfc4588,https://tools.ietf.org/html/rfc4588#section-4

rtx使用额外的ssrc传输,ssrc在sdp中会标识出来。

↵a=rtpmap:97 rtx/90000
↵a=ssrc-group:FID 2736695910 239189782

类似这样。

一个RTX包,在turnserver中是这样的,原始udp数据->turn/stun协议头->RTP header1 ->RTP header2

在RTP header1中根据payload type进行区别RTP、RTX数据,如果是RTX的话,需要srtp解出后面的数据,再解析。

在客户端中,RTX封包的关键函数是:

https://code.google.com/p/webrtc/source/detail?r=4692
Channel::IsPacketRetransmitted
Channel::HandleRtxPacket
rtp_payload_registry_->IsRtx
RTPPayloadRegistry::RestoreOriginalPacket    移除RTX头, 还原原始的RTP

链接是,webrtc加入rtx的issue

目前webrtc的服务器,例如licode,janus是禁止rtx的。以避免复杂的处理。

原文地址:https://www.cnblogs.com/lingdhox/p/5746305.html