avi 格式

|    4    |    4    |    4    |    4    |
|   RIFF  |   size  | AVI/WAVE| ...data...
ps: size  = data_size + 4;


|    4    |    4    |    4    |    4    |
|  LIST   |   size  |   Type  |...Data...
ps: size  = data_size + 4;

|    4    |    4    |    4    |    4    |
|   ckID  |   size  |...data...
ps: size  = data_size;


AVI 格式说明:
RIFF('AVI '
LIST('hdrl'
...
)
LIST('movi'
...
)
['idx1'<AVI Index>]
)

example:

RIFF('AVI '
     LIST('hdrl'
          'avih'(<Main AVI Header>)
     LIST('strl'
          'strh'(<Stream header>)
      'strf'(<Stream format>)
      ['strd'(<additional header data>)]
      ['strn'(<stream name>)]
      ...
      )
      ...
         )
LIST('movi'
     {subchuk|LIST('rec '
                subchuck1
...
              )
 }
 ...
    )
['idx1'(<AVI index>)]
)
 
ps: 'hdrl'list中的'avih'chunk包含结构体,AVIMAINHEADER;
typedef struct _avimainheader {
    FOURCC fcc;/*avih*/
    DWORD  cb;/*结构体大小*/
    DWORD  dwMicroSecPerFrame;/*每帧毫秒数*/
    DWORD  dwMaxBytesPerSec;/**/
    DWORD  dwPaddingGranularity;/**/
    DWORD  dwFlags;/**/
    DWORD  dwTotalFrames;/*总帧数*/
    DWORD  dwInitialFrames;/*初始帧数*/
    DWORD  dwStreams;/*流体数,如改文件包含视频和音频则含有2个流体*/
    DWORD  dwSuggestedBufferSize;/**/
    DWORD  dwWidth;/*像素宽度*/
    DWORD  dwHeight;/*像素高度*/
    DWORD  dwReserved[4];/*保留*/
} AVIMAINHEADER;

typedef struct _avistreamheader {
     FOURCC fcc;/*strh*/
     DWORD  cb;/*结构体大小*/
     FOURCC fccType;/*auds/mids/txts/vids*/
     FOURCC fccHandler;
     DWORD  dwFlags;
     WORD   wPriority;
     WORD   wLanguage;
     DWORD  dwInitialFrames;
     DWORD  dwScale;
     DWORD  dwRate;
     DWORD  dwStart;
     DWORD  dwLength;
     DWORD  dwSuggestedBufferSize;
     DWORD  dwQuality;
     DWORD  dwSampleSize;
     struct {
         short int left;
         short int top;
         short int right;
         short int bottom;
     }  rcFrame;
} AVISTREAMHEADER;


不求甚解,记录一下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值