WAV 文件 headers 报告大小不正确

WAV file headers reporting incorrect size

解码 WAV 文件时,我能够从 header 中读取以下值(格式整齐):

Channels: 2
BitDepth: 16
SampleRate: 44100
FileSize: 907346
FileType: RIFF
AudioFileType: WAVE
data: [...]
PCM: 0

当我将其加载到 OpenAL 缓冲区并尝试播放时,声音无法播放。然而,经过大量调整后,当我将 FileSize 硬编码为 907300.

时,我能够播放声音

这让我想到当我开始加载示例数据时,OpenAL 很可能需要我偏移 header。然而,WAV 文件的 header 大小仅为 44 字节。我还假设仅偏移 46 个字节并不是真正的长期解决方案。那么多出的2个字节从何而来?

更新:

我测试了另一个从 Internet 下载的文件,而不是从 LMMS 保存的文件。即使偏移 44 或 46 字节后,它也根本无法播放。它的 header 除了 FileSize: 1242448

是相同的

原来 LMMS 决定它不想按预期的方式保存 .wav 文件 header。使用 dhex 快速浏览了 .wav 文件,发现 header 包含不需要的信息。整个 header 看起来像这样:

RIFFR...WAVEfmt ........D...........LIST&...INFO
ISFT....LMMS (libsndfile-1.0.27)..data..........

我最终用 bfxr 和 Bosca Ceoil 进行了测试,它们的所有声音都在播放,header看起来很整洁。

希望此信息对某人有用。