夜猫子

夜猫子
随笔 - 5, 文章 - 1, 评论 - 1, 引用 - 0
数据加载中……

RIFF文件格式

1.简介
RIFF全称为资源互换文件格式(Resource Interchange File Format),RIFF文件是windows环境下大部分多媒体文件遵循的一种文件格式,RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF文件存储的数据包括:
  • 音频视频交错格式数据(.AVI)
  • 波形格式文件(.WAV)
  • 位图格式数据(.BMP)
  • MIDI格式文件(.RMI)
  • 调色板格式(.PAL)
  • 多媒体电影(.RMN)
  • 动画光标(.ANI)
  • 其他RIFF文件(.BND)
2.CHUNK
chunk是组成RIFF文件的基本单元,结构如下:
struct chunk
{
u32 id; /*块标志*/
u32 size; /*块大小*/
u8 data[size]; /*块内容*/
  • id由4个ASCII字符组成,用以识别块中所包含的数据。如:'RIFF','LIST','fmt','data','WAV','AVI'等等 ,由于这种文件结构最初是由Microsoft和IBM为PC机所定义,RIFF文件是按照little-endian字节顺序写入的。 
  • size(块大小)是存储在data域中数据的长度,idsize域的大小则不包括在该值内。 
  • dat(块内容)中所包含的数据是以字(WORD)为单位排列的,如果该数据结构长度是奇数,则在最后添加一个空(NULL)字节。 

其中有仅有两种块:'RIFF''LIST'块可以包含其他块,而其它块仅能含有数据。

struct chunk
{
u32id; /* 块标志 */
u32size; /* 块大小 */
/*此时的dat = type + restdat */
u32type ; /* 类型 */
u8restdat[size] /* dat中除type4个字节后剩余的数据*/
};

可以看出,'RIFF''LIST'也是chunk,只是它的dat由两部分组成:

  • type,由4ASCII字符组成,代表RIFF文件的类型,如'WAV','AVI ';或者'LIST'块的类型,如avi文件中的列表'hdrl','movi'

  • restdatdat中除type4个字节后剩余的数据,包括块内容,包含若干chunk'LIST'













































































































posted on 2012-05-24 09:23 夜猫子 阅读(1752) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理