常見媒體文體圖解
一個典型的ISO格式檔案
ISO媒體檔案由若干稱為盒子的資料對象組成,每個盒子的起首為四個位元組的資料長度(大頭序)和四個位元組的類型標識,資料長度和類型標誌都可以擴充。有些盒子具備容器功能,其資料域由若干其它盒子組成,從而實現結構化的資料,這一點是與RIFF格式相似的。
AVI檔案的結構
Real檔案結構
MKV檔案結構
Header |
Meta Seek Information |
Segment Information |
Track |
Chapters |
Clusters |
Cueing Data |
Attachment |
Tagging |
|
Figure 1
MP3檔案結構
FLV檔案結構
FLV是流媒體封裝格式,我們可以將其資料看為二進位位元組流。總體上看,FLV包括檔案頭(File Header)和檔案體(File Body)兩部分,其中檔案體由一系列的Tag及Tag Size對組成。因此一個FLV檔案看上去是下面的結構:
ASF檔案結構
ASF檔案邏輯上是由三個高層對象組成:頭對象(Header Object)、資料對象(Data Object)和索引對象(Index Object).。
頭對象是必需的並且必須放在每一個ASF檔案的開頭部分,資料對象也是必需的,且一般情況下緊跟在頭對象之後。
索引對象是可選的,但是一般推薦使用。
高層ASF檔案結構
ASF 頭對象
AMR檔案格式
AMR 框架格式:
AMR 有兩種類型的框架格式:AMR IF1 和 AMR IF2
1. AMR IF1:
IF1 的框架格式如所示:
2. AMR IF2:
IF2的框架格式如所示:
相對於IF1, IF2 省去了Frame Quality Indicator, Mode Indication, Mode Request 和CRC 校正。但是增加了bit 填充。因為AMR幀中資料的長度並不是位元組(8bit)的整數倍,所以在有些幀的末尾需要增加bit填充,以使整個幀的長度達到位元組的整數倍。
AMR 檔案的儲存格式(RFC 3267):
AMR IF1, IF2定義了 AMR的框架格式, 用於無線傳輸用。 RFC 3267定義了把AMR資料存成檔案的檔案格式。
AMR的檔案格式如1所示:
它包含一個檔案頭,然後就是一幀一幀的AMR資料了。
1. 檔案頭格式:
AMR 檔案支援單聲道和多聲道。單聲道和多聲道的檔案頭是不同的。
單聲道:
AMR-NB檔案頭: "#!AMR\n" (or 0x2321414d520a in hexadecimal)(引號內的部分)
AMR-WB 檔案頭:"#!AMR-WB\n" (or 0x2321414d522d57420a in hexadecimal).(引號內)
多聲道:
多聲道的檔案頭包含一個magic number和32bit channle description域。
AMR-NB 的magic number:"#!AMR_MC1.0\n" (or 0x2321414d525F4D43312E300a in hexadecimal).
AMR-WB的magic number:"#!AMR-WB_MC1.0\n" (or 0x2321414d522d57425F4D43312E300a in hexadecimal).
32bit的channel description域的定義如下:
其中 reserved bits必須為0, CHAN:表示當前檔案中含有幾個聲道。
幀頭的格式:
幀頭的格式2 所示, 它佔1個位元組(8個bit)
P為填充為設定為0
FT為編碼模式, 即上面提到的16中編碼模式。
Q為幀品質指標,如果為0表明幀被損壞。
圖3 列舉了AMR-NB 5.9Kbit的一個幀的格式,
對於5.9kbit一幀的有118bit的資料,15*8=120=118+2, 所以在最後有2個bit的填充位。