RIFF文件格式

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'













































































































你可能感兴趣的:(RIFF文件格式)