AVI文件与WAV文件格式

    技术2024-07-23  58

    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'+'声音数据大小'+

    '声音数据'

     

     

     

     

     

     

     

     

                 

                                                                  

    最新回复(0)