RIFF和WAVE音频文件格式

本文详细解析了RIFF文件格式,包括CHUNK结构、RIFF chunk与FourCC,以及WAV文件格式,涵盖了Format chunk、Data chunk等关键部分,探讨了编码方式与扩展格式块的作用,为音频文件的读写提供了理论基础。
摘要由CSDN通过智能技术生成

RIFF file format

RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF格式存储的数据有:
- 音频视频交错格式数据 .AVI
- 波形格式数据 .WAV
- 位图数据格式 .RDI
- MIDI格式数据 .RMI
- 调色板格式 .PAL
- 多媒体电影 .RMN
- 动画光标 .ANI
- 其他的RIFF文件 .BND

CHUNK

chunk是RIFF文件的基本单元,其基本结构如下:

struct chunk
{
    uint32_t id;   // 块标志
    uint32_t size; // 块大小
    uint8_t data[size]; // 块数据
};
  • id 4字节,用以标识块中所包含的数据。如:RIFF,LIST,fmt,data,WAV,AVI等,由于这种文件结构 最初是由Microsoft和IBM为PC机所定义,RIFF文件是按照小端 little-endian字节顺序写入的。
  • size 块大小 存储在data域中的数据长度,不包含id和size的大小
  • data 包含数据,数据以字为单位存放,如果数据长度为奇数(字节为单位),则最后添加一个空字节。

chunk是可以嵌套的,但是只有块标志为RIFF或者LIST的chunk才能包含其他的chunk。

RIFF chunk

标志为RIFF的chunk是比较特殊的,每一个RIFF文件首先存放的必须是一个RIFF chunk,并且只能有这一个标志为RIFF的chunk。RIFF的数据域的起始位置是一个4字节码(FOURCC),用于标识其数据域中chunk的数据类型;紧接着数据域的内容则是包含的subchunk,如下图
这里写图片描述
这是一个RIFF chunk中包含有两个subchunk,可以看出RIFF chunk的数据域首先是是4字节的 Form Type,接着是两个subchunk,每一个subchun有包含有自己的标识、数据域的大小以及数据域。
除了RIFF cunk可以嵌套其他的chunk外,另一个可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值