I-Frame Delay (IFD)  

标签:IFD

I幀延遲(IFD)是一種用於MPEG視頻傳輸的調度技術。 其背後的想法是,由於網路頻寬不足,流傳輸調度程序會在傳輸緩衝區已滿時丟棄部分的視頻幀,以降低傳輸的比特率。是該IFD的特點:

 

當前緩衝區中的幀數(不是字節數)表示緩衝區已滿,

緩衝區中次重要的幀(B幀)在重要的幀(I幀和P幀)之前被丟棄,

即使條件過時,I幀的傳輸也會在條件不好的情況下被延遲。 顯示時間(它們仍可用於解碼隨後的幀間預測)。

 

I幀延遲算法

IFD機制分為兩個部分:[1]

 

當將流解析並打包為網絡數據包時,還將對其進行分析,並使用反映幀類型(I幀,P幀或B幀)的優先級標記這些數據包。非視頻數據包的優先級最高,這將導致音頻永遠不會丟失。(這也是為甚麼網路上的視頻常常會有斷斷續續, 而音頻比較不會有斷斷續續的問題)

在傳輸期間,當網路頻寬不足時,IFD調度程序會丟棄數據包。

IFD緩衝區的大小應要夠大,以容納多個幀,但最少需要兩個幀,一個用於保存當前正在發送的幀(在下面表示為ScheduledFrame),另一個正在等待發送(表示為WaitingFrame) 。增加IFD緩衝區大小可能會允許進行更精細的優先級排序,但是會導致延遲增加和內存使用增加。[1]下圖描述了緩衝區填充的示例。數字代表數據包的優先級。

 
IFD

 

在此,視頻幀優先級數為10或更高。優先級為12的數據包屬於計劃發送的幀,優先級為11的數據包屬於等待幀。在該圖中,屬於下一幀的數據包即將進入緩衝區。

 

可以看出,可以將視頻數據包與非視頻數據包(音頻或系統的優先級分別為2和0)進行交織。當屬於下一幀的數據包將要寫入IFD緩衝區並且緩衝區已滿時,IFD調度程序將根據之前分配的優先級丟棄幀。當網絡帶寬太低以至於也需要丟棄P幀時,則將GOP(Group of Pictures)設置為“disturbed”,其餘GOP(取決於P幀)也將被丟棄。

 

如果僅丟棄B幀,則在幀圖像中應該沒有失真,因為沒有後續幀依賴於它們。[1]通過IFD丟棄幀會導致視頻播放的效果暫時凍結,其持續時間取決於所丟棄的幀數,此後從下一個經過的幀恢復播放。[1]對於具有兩個幀大小的緩衝區的IFD實現。

 

參考資料來源 :

https://en.wikipedia.org/wiki/I-Frame_Delay

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能