您的位置:首页 > 其它

AVI文件与WAV文件格式

2011-01-31 20:59 197 查看
AVI 与WAV文件都属于RIFF文件,因此都遵循RIFF文件的格式要求

先看看RIFF文件的格式:

第一:"RIFF"+“大小"+"AVI/WAV"+数据

第二:RIFF 文件中实际的数据通常采用列表(list)和块(Chunk)的形式表示

列表结构为:'list'+listsize+listType+listData

块的结构:'ckID'+'ckSize '+'ckData'

(1)AVI文件格式

第一: AVI文件=‘一个RIFF文件头’+‘两个列表’+‘一个可选的索引块’

第二:AVI文件="RIFF"+“大小"+"AVI"+数据

第三:第一个列表:hdr1='list'+'listSize'+'hdr1'+'avih块'+'一个或者几个'str1'子列表

avih块='ckID'+'ckSize '+'ckData'

='avih'+'Sizeof(AVIMAINHEADER)'+AVIMAINHEADER

所以第一个列表hdr1='list'+'listSize'+'hdr1'+'avih块'

='list'+'listSize'+'hdr1'+'avih'+'Sizeof(AVIMAINHEADER)'+AVIMAINHEADER

接下来就是一个或者几个'str1'子列表(有多少个流就有多少个str1列表)

每个str1子列表必须包括一个‘strh’块和一个‘strf’块

strh块='strh'+Sizeof(AVISTREAMHEADER)+AVISTREAMHEADER +'strf'+Sizeof(WAVEFORMATEX/BITMAPINFOR) +BITMAPINFOR/WAVEFORMATEX

第四:第二个列表:move='list'+'listSize'+'move'+Data

第五:索引块='idx1'+Sizeof(AVIOLDINDEX)+AVIOLDINDEX

(2)wav文件格式

第一:wav文件='一个RIFF文件头'+'两个子块'

这两个子块的ID分别为'fmt'和'data'

其中"fmt"子块由结构WAVEFORMATEX所组成,其子块的大小就是sizeofof(WAVEFORMATEX),数据组成就是WAVEFORMATEX结构中的数据。

wav文件='RIFF'+'大小‘+'wav'+两个块

wav文件='RIFF'+'大小'+wav'+'fmt'+Sizeof(WAVEFORMATEX)+'WAVEFORMATEX+'data'+'声音数据大小'+

'声音数据'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: