avi 文件格式的理解

编程入门 行业动态 更新时间:2024-10-28 16:21:42

avi <a href=https://www.elefans.com/category/jswz/34/1769575.html style=文件格式的理解"/>

avi 文件格式的理解

可以把avi文件理解为由无数个struct结构组成的:

1. struct  avifile {  'RIFF',   'AVI',   struct   hdrl}     

2.  struct  hdrl {  'LIST', 'hdal', struct  avih,  struct stream0,struct stream1,struct  stream2};     

3.  struct  stream  {'LIST' , 'STRL',  struct   strh, struct   strf }

4.  struct   movi {  'LIST' ,  'movi'}

5.  n*  struct   data {  '00db' ,data}    循环写入帧数据    

在avi文件中都是按照这个镶嵌顺序顺序写入的。

1. avifile:

  struct avifile
{
          unsigned char id[4];
          unsigned int size;
          unsigned char type[4];

          struct   hdrl       avi_hdrl;
}

2.  struct   hdrl

typedef struct   hdrl
{
    unsigned char id[4];    //块ID,固定为LIST
    unsigned int size;      //块大小,等于struct avi_hdrl_list去掉id和size的大小
    unsigned char type[4];  //块类型,固定为hdrl
    struct   avih;
    struct   stream;
}

3.  struct   avih

 struct avih
{
    unsigned char id[4];            //块ID,固定为avih
    unsigned int size;              //块大小,等于struct avi_avih_chunk去掉id和size的大小
    unsigned int us_per_frame;      //视频帧间隔时间(以微秒为单位)
    unsigned int max_bytes_per_sec; //AVI文件的最大数据率
    unsigned int padding;           //设为0即可
    unsigned int flags;             //AVI文件全局属性,如是否含有索引块、音视频数据是否交叉存储等
    unsigned int total_frames;      //总帧数
    unsigned int init_frames;       //为交互格式指定初始帧数(非交互格式应该指定为0)
    unsigned int streams;           //文件包含的流的个数,仅有视频流时为1
    unsigned int suggest_buff_size; //指定读取本文件建议使用的缓冲区大小,通常为存储一桢图像                                            //以及同步声音所需的数据之和,不指定时设为0
    unsigned int width;             //视频主窗口宽度(单位:像素)
    unsigned int height;            //视频主窗口高度(单位:像素)
    unsigned int reserved[4];       //保留段,设为0即可
}

更多推荐

avi 文件格式的理解

本文发布于:2023-12-05 23:46:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1665776.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件格式   avi

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!