关于音频:WAV 文件头报告大小不正确

WAV file headers reporting incorrect size

解码 WAV 文件时,我可以从标题中读取以下值(格式整齐):

1
2
3
4
5
6
7
8
Channels: 2
BitDepth: 16
SampleRate: 44100
FileSize: 907346
FileType: RIFF
AudioFileType: WAVE
data: [...]
PCM: 0

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

时,我能够播放声音

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

更新:

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

之外,它的标题是相同的


结果 LMMS 决定不按应有的方式保存 .wav 文件头。使用 dhex 快速查看了 .wav 文件,并且标题包含不需要的信息。整个标题如下所示:

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

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

希望这些信息对某人有用。