webrtc之丟包重傳

  • 1 介紹

WebRTC丟包重傳分爲兩種,一個是RTP報文丟失重傳,另一個書PLI視頻幀丟失重傳,SDP格式如下:

a=rtcp-fb:104 nack (RTP報文丟失重傳)
a=rtcp-fb:104 nack pli (PLI視頻幀丟失重傳)

生成SDP的時候直接將以上參數加入到Codec,代碼流程如下:

AppendVideoCodecs -> AddDefaultFeedbackParams

接口內容爲:

const char kRtcpFbParamNack[] = "nack";
const char kRtcpFbNackParamPli[] = "pli";

void AddDefaultFeedbackParams(VideoCodec* codec) {
  codec->AddFeedbackParam(FeedbackParam(kRtcpFbParamCcm, kRtcpFbCcmParamFir));
  codec->AddFeedbackParam(FeedbackParam(kRtcpFbParamNack, kParamValueEmpty));
  codec->AddFeedbackParam(FeedbackParam(kRtcpFbParamNack, kRtcpFbNackParamPli));
  codec->AddFeedbackParam(FeedbackParam(kRtcpFbParamRemb, kParamValueEmpty));
  codec->AddFeedbackParam(
      FeedbackParam(kRtcpFbParamTransportCc, kParamValueEmpty));
}
RTP報文的重傳是通過RTP報文的序列號和時間戳,判斷是否出現丟包異常。

PLI視頻幀重傳在webrtc裏面實現的是請求關鍵幀。當連續出現解碼失敗,或者長期沒有解碼輸入,就通過RTCP報文發送請求IDR幀命令。

 

  • 2 實現

要在webrtc中實現丟包重傳,只需要在SDP保留相關a=rtcp-fb行即可,去除的話在SDP刪除就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章