以前筆記,整理
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的。以避免復雜的處理。