AVI文件結構
AVI(Audio Video Interleaved的縮寫)是一種RIFF(Resource Interchange File Format的縮寫)文件格式,多用于音視頻捕捉、編輯、回放等應用程序中。通常情況下,一個AVI文件可以包含多個不同類型的媒體流(典型的情況下有一個音頻流和一個視頻流),不過含有單一音頻流或單一視頻流的AVI文件也是合法的。AVI可以算是Windows操作系統上最基本的、也是最常用的一種媒體文件格式。
先來介紹RIFF文件格式。RIFF文件使用四字符碼FOURCC(four-character code)來表征數據類型,比如‘RIFF’、‘AVI ’、‘LIST’等。注意,Windows操作系統使用的字節順序是little-endian,因此一個四字符碼‘abcd’實際的DWORD值應為0x64636261。另外,四字符碼中像‘AVI ’一樣含有空格也是合法的。
最開始的4個字節是一個四字符碼‘RIFF’,表示這是一個RIFF文件;緊跟著后面用4個字節表示此RIFF文件的大小;然后又是一個四字符碼說明文件的具體類型(比如AVI、WAVE等);最后就是實際的數據。注意文件大小值的計算方法為:實際數據長度 + 4(文件類型域的大小);也就是說,文件大小的值不包括‘RIFF’域和“文件大小”域本身的大小。
RIFF文件的實際數據中,通常還使用了列表(List)和塊(Chunk)的形式來組織。列表可以嵌套子列表和塊。其中,列表的結構為:‘LIST’ listSize listType listData ——‘LIST’是一個四字符碼,表示這是一個列表;listSize占用4字節,記錄了整個列表的大小;listType也是一個四字符碼,表示本列表的具體類型;listData就是實際的列表數據。注意listSize值的計算方法為:實際的列表數據長度 + 4(listType域的大小);也就是說listSize值不包括‘LIST’域和listSize域本身的大小。再來看塊的結構:ckID ckSize ckData ——ckID是一個表示塊類型的四字符碼;ckSize占用4字節,記錄了整個塊的大小;ckData為實際的塊數據。注意ckSize值指的是實際的塊數據長度,而不包括ckID域和ckSize域本身的大小。(注意:在下面的內容中,將以LIST ( listType ( listData ) )的形式來表示一個列表,以ckID ( ckData )的形式來表示一個塊,如[ optional element ]中括號中的元素表示為可選項。)
即將到來的一年一度3.15消費者權益日,DIY朋友難免在一年的時間里多多少少遇到或碰到過影...
市場上的數據恢復工具琳瑯滿目,應有盡有,但是有的數據恢復軟件無法將丟失的數據完全掃...
前不久的時間,磁盤工具CrystalDiskInfo迎來了6.0版本,本月第一周,也迎來了小幅升級,...
如今我們都選擇用U盤隨身攜帶一些移動數據,然后現 的U盤市場缺良莠不齊,很多朋友購買...
故障一:一雜牌主板,故障現象開機測試卡FF,經測量為CPU 無主供電輸出。 檢修思路:先...
即將到來的一年一度3.15消費者權益日,DIY朋友難免在一年的時間里多多少少遇到或碰到過影...
電腦硬盤在保修期內損壞,導致資料無法取出。要取出資料必須開盤,可開盤后廠家又不給保...