avi 文件格式的理解
最佳答案 问答题库748位专家为你答疑解惑
可以把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即可
}
99%的人还看了
相似问题
- CUDA核函数,如何设置grid和block即不超过大小又能够遍历整个volume
- Ubuntu 20.04 LTS设置系统虚拟内存大小
- 4.5每日一题(多元函数比较大小通过偏积分)
- ThinkPHP图片处理之压缩图片大小,图片处理之图片水印(添加平铺文字水印,并设置文字之间的间距和文字的角度)
- 安卓RadioButton设置图片大小
- Leetcode刷题详解——字母大小写全排列
- Java通过javacv获取视频、音频、图片等元数据信息(分辨率、大小、帧等信息)
- Elasticsearch语法之Term query不区分大小写
- 如何平衡三维模型的顶层合并构建的文件大小与质量关系
- linux 查看内存大小
猜你感兴趣
版权申明
本文"avi 文件格式的理解":http://eshow365.cn/6-20971-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!