• 沒有找到結果。

RTP Payload Format for M4V

第二章 多媒體串流系統相關背景知識概論

2.3 RTP Payload Format for MPEG-2 System and M4V

2.3.2 RTP Payload Format for M4V

在 RFC3016 中定義了如何切割 MPEG-4 視訊流於 RTP payload 當 中,但在此要先說明MPEG-4 視訊流中 video packet 的觀念,在 MPEG-4 video 的壓縮中,使用 video packet 的目的是為了幫助解碼器 進行錯誤的恢復,一個VOP 中可能會含有多個 video packet,可以參 考figure 2.12;在網際網路的傳輸過程中常常會有封包遺失的情況發

生,如果遺失的封包中含有VOP header 的資料時,將會使得屬於這個 VOP 所有的 Macroblock 都無法進行解碼,而 video packet 可以解決此 一問題,依據ISO14496-2[8],一個具有 video packet 的 MPEG-4 simple profile 會如 figure 2.12 所示,video packet 是由許多 Macroblock 所組 成,當解碼端讀取到video packet 時,會開始讀入 Macroblock,每讀 取完一個Macroblock 時解碼端會判別接下來是否會出現 video packet header 或是 VOP header,若是這兩者都沒有出現的話則解碼端就會判 斷接下來仍是Macroblock。

Figure 2.12 MPEG-4 Video Stream-Video Packet

在 RFC3016 中基本是建議再一個 RTP 封包裡面只放入一個 VOP,

這是因為在RTP header 中的 Timestamp 欄位值會隨著不同的 VOP 而 變動,但是在實際的應用上此種作法會造成頻寬的浪費,因為有時候 VOP 會只有 VOP header 但卻沒有 video packet,有時候某種形狀的 VOP 其 video packet 會很小,在這樣的情形之下,若是仍舊讓一個 RTP 封包只包有一個VOP 的話將會產生 overhead 的效應,因此 RFC3016 中允許多個VOP 串聯再同一個封包中,因此在 RFC3016 中也對 Timestamp 有額外的定義產生如下:

若封包中含有多個VOP,則 Timestamp 的值定義為這些 VOP 中最 早出現的一個,而其他的Timestamp 則可由 VOP header 中的資訊 進行推算。

假如此一封包中只包含了 configuration information,則

Timestamp 定義為下一個出現的 VOP。

若此封包中只含有visual object sequence end code,則 Timestamp 定義為上一個出現的VOP。

而在 RFC3016 中定義了對 MPEG-4 視訊流的封裝遵循著以下的原 則:

Configuration information 與 Group_of_Video_Object_Plane ( ) 應該要放在RTP payload 的最前面。

若有多個header 放在 RTP payload 中,則要依據 syntax 的順序排 放,而visual_sequence_end_code 是排在最末。

同一個 header 不能拆解存放到兩個封包中。

除非一個VOP 的資料量太小,否則盡量一個 VOP 存放在同一個封 包中。

盡量讓同一個 video packet 放在同一個封包中。

綜合以上五點規則,在RFC3016 中列舉了幾個 RTP 封包的例子,可以 參考figure 2.13[4]所示。以下分別簡述其優缺點:

Figure 2.13(d) 一個封包中裝載了一個 video packet。

優:適用於易遺失封包的網路環境,因為即使其中一個封包遺失,但 是其後封包中的video packet header 中包含的 HEC(Header Extension Code)機制仍然可以使得解碼器找到目前 RTP 封包中的 Macroblock 位於 VOP 的何處,並且解碼器亦可由 VOP 表頭中得 知解碼的方式。

缺: 因為一個RTP 封包中只裝有一個 video packet,故

UDP/IP/RTP header 的 overhead 將會使得網路傳輸量變大。

Figure 2.13(e) 多個 video packet 放入同一個封包中。

優:適用於網路頻寬較差的情形下,因為可以減少因 UDP/IP/RTP header 所產生的 overhead 的問題。

缺:會減弱因封包遺失後解碼端進行錯誤恢復的能力。

Figure 2.13(f)

優:沒有 video packet header 的 overhead,也就是不採用 video packet 的作法,目的是希望藉此提高封包使用率。

缺:僅限用於無錯(error-free)的網路環境下,因為此種裝載方法每 當封包遺失後便幾乎沒有錯誤恢復的能力。

Figure 2.13[4] RTP Packet Example