WAVE
建立在 RIFF 结构上的音频文件容器,通常用于保存未压缩 PCM,也可以封装浮点 PCM、压缩音频与扩展声道信息。
详细说明
WAVE(Waveform Audio File Format)是微软与 IBM 制定、建立在 RIFF(Resource Interchange File Format)之上的音频文件格式,常用扩展名为 `.wav`。文件由四字符代码标识的块组成:RIFF 头声明 WAVE 类型,`fmt ` 块描述音频编码和参数,`data` 块保存音频数据;其他块可记录广播元数据、采样器信息、标记点或附加说明。
WAVE 是容器,不是 PCM 的同义词。
最常见的 WAVE 文件保存整数线性 PCM,但 `fmt ` 块也能标识 IEEE 浮点 PCM、ADPCM、A-law、μ-law 以及通过注册格式代码表示的其他编码。WAVE_FORMAT_EXTENSIBLE 扩展可明确有效位数、声道掩码和子格式,解决普通 WAVEFORMATEX 对高位深、多声道和复杂格式描述不足的问题。仅看到 `.wav` 扩展名,不能保证内部一定是 44.1 kHz、16-bit 或未压缩音频。
经典 RIFF 使用 32-bit 无符号字段记录块长度,单个文件的可表示尺寸因而接近 4 GiB 上限。广播和制作系统为长时间、多声道或高采样率录音发展出 RF64 等扩展,以特殊长度标记和额外数据块保存 64-bit 尺寸。Wave64 是另一套扩展结构,与 RF64 及普通 RIFF WAVE 不完全相同。
WAVE 的块设计允许应用跳过不认识的附加块,但软件兼容性仍取决于块顺序、对齐、编码代码和扩展支持。广播 WAVE(BWF)在兼容 WAVE 的基础上加入描述、时间参考、来源和响度等制作元数据,音频数据本身仍可采用 PCM。标签软件写入的 RIFF INFO、ID3 或自定义块并非所有播放器都会解释。
把无损 PCM 保存为 WAVE 通常便于编辑和交换,但文件体积大于 FLAC、ALAC 等无损压缩格式。两者在正确转换后可包含相同采样;容器选择不会自动改变声音。相反,把有损音频解码成 WAVE 只会得到未压缩的解码结果,不能把已损失的信息变回原始录音。