webrtc如何進行錯誤恢復

視頻的壓縮方法:(三種幀)
爲了視頻儘量的保持高效,視頻數據經過不一樣的編碼進行壓縮。以幀爲單位進行壓縮,按照壓縮中的不一樣做用可分類爲:內幀(Intra-frames,I幀),預測幀(Predictive-frames,P幀),和雙向預測幀(Bipredictive-frames,B幀)。B幀利用過去的和未來的包進行編碼,在實時交互的視頻中不會使用。
一個I幀包含一個完整的圖片(通過空間壓縮),像傳統的靜態圖片文件。所以,I幀是獨立的幀,解碼時不依賴其餘的幀。
P幀則是依賴性的幀,僅包含與以前一幀相比在圖像上有所變化的部分(即,時序壓縮)。因此,與I幀相比,P幀的壓縮率更高,至於高多少,得取決於幀之間的變化量。所以,這減小了視頻流傳輸的比特數。舉個例子,下面的剪輯來自於一場下坡賽車比賽。視頻中的絕大部分保持不變,除了移動部分,即汽車和觀衆,須要被編碼爲P幀的視頻不變。
I幀以做爲P幀的新參考點而被生成。一般在圖像變化很大的時候建立一個I幀,如:平移、場景切換、大量動做、忽然消失等場景發生時。
 
錯誤恢復機制:
其適用於各類丟包數量和鏈路延遲的錯誤恢復機制。主要是發生在數據傳輸過程當中。
否認確認(NACK)
NACK在一多媒體數據流的分組丟失(這是一個通用的機制能夠適用於音頻和視頻流)時由接收端產生。發送者以重發所請求的(若是仍然在其發送緩存中的)包的方式響應NACK ,並基於觀察到的往返時間確認該數據包能在解碼時及時到達接收端。
全內請求(FIR)
視頻在WebRTC的會話中老是以一個I幀開始,而後發送P幀。可是,當有新的參與者中途加入會議會話時,頗有可能接收到一系列P幀,但因缺乏相應的I幀,它並不能解碼。這種狀況下,該接收端會發送一個FIR以請求一個I幀
所以,在大的會議平臺中,例如與會方達到100人時,在很短的時間間隔內加入或從新加入會議,每一個參與者都會請求I幀以開始解碼,取決於從新加入的頻率,可能會致使發送方建立大量的I幀。
圖片丟失提示(PLI)
圖片丟失提示消息代表突發性的丟包影響到了一個或多個幀中的多個包。發送方能夠經過重傳這些包或者生成一個新的I幀以做出迴應。但通常來講,PLI同時表現得像一個NACK和一個FIR,所以,經過使用PLI,接收端爲發送端如何對該請求做出響應提供了更大的靈活度。
切片丟失提示(SLI)
切片丟失提示消息代表該包丟失影響到單個幀的部分(即,多個macroblock)。所以,當發送端接收到SLI消息時,它能夠經過從新編碼的方式糾正切片,中止部分幀解碼錯誤的傳播。
相關文章
相關標籤/搜索