第二章 多媒體串流系統相關背景知識概論
2.2 多媒體檔案編碼格式介紹
2.2.2 Mpeg-4 Introduction
2.2.2 Mpeg-4 Introduction
MPEG-4 是 MPEG-1 和 MPEG-2 這兩種視訊標準的後繼者,是目
前市場上資訊產品應用裡,最為熱門的技術之一。在網際網路的應用領 域裡,MPEG-4 影音串流傳輸的技術研發是一個企業激烈競爭的戰場。
目前有非常多的企業組織加入開發MPEG-4 影音串流的多媒體應用,
不過每家公司都採用自訂的Codec 或特有的檔案格式及系統架構,因此 對於MPEG-4 多媒體呈現的支援度有異,例如大部份都沒有支援互動 式場景呈現的能力,而且支援的影音編碼亦不相同。在此小節中將描述 一個mpeg-4 simple profile 的 elementary stream 也就是 M4V,其 header 包含那些重要的資訊。
2.2.2.1 M4v Structure
傳統的視訊壓縮技術是以一張畫面作為壓縮單位,而MPEG-4 則 將畫面再切割成更小的單位作為壓縮單位,稱為物件(Object),因此本 來是一張張的畫面視訊序列(video sequence)會被劃分為數個以物件為 主的視訊物件序列(Visual Object Sequence)。
MPEG-4 視覺場景 (visual scene) 可能包含一個或多個視訊物 件,每個視訊物件都可藉由時間和空間資訊加以描述,包括它們的形 狀、移動和紋理。而MPEG-4 video stream 會提供階層式的視覺場景 描述,起始碼 (start codes) 則是特殊的編碼值,它們可以存取位元串 流的每一層階層架構。參考figure2.6,MPEG-4 階層架構中的各層包 括:
視覺物件序列 (Visual Object Sequence,簡稱 VS)
它是完整的 MPEG-4 場景,可能包含任何 2-D 或是 3-D 的自然 或合成物件以及它們的加強層 (enhancement layer)。
視訊物件 (Video Object,簡稱 VO)
視訊物件會連結至場景中的某個2D 元素,矩形圖框就是最簡單
的例子;它也能是任意形狀的物件,對應於場景中的某個物件或是背景。
視訊物件層 (Video Object Layer,簡稱 VOL)
視訊物件支援可延展 (scalable) 以及不可延展 (non-scalable) 兩種編碼模式,實際編碼模式則由視訊物件層所代表的應用決定。視訊 物件層能支援可延展性編碼。
視訊物件平面群 (Group of Video Object Planes,簡稱 GOV) 視訊物件平面群是可選用的功能,它會提供視訊物件平面被獨立 編碼的各點,讓位元串流中能夠加入多個隨機存取點。
視訊物件平面 (Video Object Planes,簡稱 VOP)
視訊物件平面是在時間取樣的視訊物件,它們可以獨立取樣,也 可以利用移動補償值進行取樣。矩形可以代表傳統的視訊圖框。視訊物 件平面的使用方法有很多種,最常見的做法是讓它們包含某個視訊物件 的時間取樣值的編碼視訊資料。每個視訊物件平面都包含多個巨集區塊 (macroblock),每個巨集區塊則會包含四個 8x8 亮度區塊 (luminance block) 以及兩個 8x8 色度區塊 (chrominance block)。
Figure 2.6 MPEG4 video bitstream logical structure
2.2.2.2 M4V Syntax
參考Figure 2.7[8] (A),一個完整的 M4V 是由 Visual Object Sequence Header、Visual Object Header、Video Object Layer Header 以及Elementary Stream Visual Object 所組成;前面三個 header 會攜帶 解碼器所需的一些資訊,像是照片的尺寸、量化矩陣的參數…等的資 料,這些資料稱為Elementary Stream Descriptors(ESDS data),而每 個header 都有其固定的起始碼的位元值,可以參考 table 2.6[8];當 ESDS data 結束後會進入 Video Object Plane,也就是每張 frame 的起 始位置,藉由Video Object Plane 的 header 可以判別此張 frame 類型 為I、P 中的那一項,而 Video Object Plane 的 start code 即為此張 frame 的起始位置。在figure 2.7(B)明白表示出一個完整的 M4V 檔案是由 ESDS data 和 I frame 與 P frame 所組成。詳細的 header 解說可以參考 3.2.1 小節。
Figure 2.7[8] (A) Structure Of M4V
Figure 2.7 (B) Structure Of M4V
Table 2.6 [8] MPEG-4 Start Code
Name Start code value (hexadecimal) Video_object_start_code 00 through 1F Video_object_layer_start_code 20 through 2F
Reserved 30 through AF
Visual_object_sequence_start_code B0 Visual_object_sequence_end_code B1
User_data_start_code B2 Group_of_vop_start_code B3 Video_session_error_code B4 Visual_object_start_code B5
Vop_start_code B6
…… ……
2.3 RTP Payload Format for MPEG-2 System and M4V