2015-09-25 51 views
3

我想了解當mpeg4 AVC/H.264編碼視頻封裝到傳輸流容器時,I,B,P圖片是如何打包和複用的HTTP直播流)。對於mpeg2編解碼器視頻,據我瞭解,每個PES從一個新的TS數據包開始,但在單個PES中可能有I,B,P圖片重疊。mpeg4 AVC視頻的PES結構封裝到傳輸流

但是,對於mpeg4 AVC視頻任何人都可以解釋我如何將B,P幀複用到PES中?它們是否可以在PES中重疊,這意味着單個TS包丟失可能會丟失多個I/B/P幀?我試圖通過RFC和其他一些文檔的有效負載結構,但無法清楚地理解。

+0

PES包的大小是可變的,並且包含一個基本流信息,即音頻或視頻。通常對於廣播應用,PES不會包含多於一個視頻編碼幀數據。所以我的理解是單個TS丟包不應該丟失多個幀。即使有數據包丟失,解碼器也應該有糾錯機制來處理這種情況。 – shri

+0

嗨Shri,謝謝。是的,解碼器具有糾錯機制,但是如果它丟失了I幀,視頻質量就會下降。另外,就像ATSC所說的那樣,對於廣播來說,只有一幀將在PES數據包中(可變大小),對於通過互聯網進行多媒體流傳輸也是如此? – CompNet

+0

當發生丟包時,通過互聯網實時流式傳輸,然後重傳丟失的數據包。然而,對於交互式視頻重傳可能不是有效的,因爲檢測分組丟失和傳輸所花費的時間將具有超過1幀的延遲。 FCE是糾錯的又一選擇。 – shri

回答

0

作爲一個快速總結,通常在廣播應用程序中,PES不會包含多個視頻幀數據。因此,當單個TS數據包丟失時,我們不應該丟失多個幀的細節。話雖如此,分組丟失將影響後續幀的質量,如果碰巧是參考幀,那麼失真將非常高。

因此在解碼器端,我們需要有糾錯機制。前向糾錯通常是連續視頻傳輸系統中的錯誤恢復機制。另外,當數據包丟失時,人們嘗試重新傳輸丟失的數據包。只要網絡延遲很低,這就可以正常工作。但對於交互式電視來說,這些傳統的錯誤恢復機制可能不太合適

1

I,B,P幀不被複用到PES包中,因爲不同的幀具有不同的DTS和PTS,但是在單個PES包中只能指定一對DTS/PTS。混合器的功能是將幀(不管是I,B還是P)封裝在PES數據包中,將DTS和PTS放在數據包上,就是這樣。下一幀將被包裝在另一個PES中。有時,根據編碼器和複用器的不同,當幀非常大時(例如HD視頻的I幀),它會被壓縮成多個具有相同DTS/PTS的PES包。

但是,h264流的SPS和PPS與I幀一起封裝到單個PES數據包中。這意味着如果包含SPS和PPS的TS數據包丟失,則解碼器將不得不等待,直到發送下一個SPS和PPS,因爲沒有它們就不能解碼該數據流。

請注意,這只是大多數(如果不是全部的話)編碼器和複用器的工作方式。該標準沒有(也不可能)描述每一個案例。