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 硬编码为
时,我能够播放声音
这让我想到,当我开始加载示例数据时,OpenAL 很可能需要我偏移标题。然而,WAV 文件的标头大小仅为 44 字节。我还假设仅偏移 46 个字节并不是真正的长期解决方案。那么额外的 2 个字节是从哪里来的呢?
更新:
我测试了另一个从 Internet 下载的文件,而不是从 LMMS 保存的文件。即使偏移了 44 或 46 个字节,它也根本不播放。除了
之外,它的标题是相同的
结果 LMMS 决定不按应有的方式保存 .wav 文件头。使用 dhex 快速查看了 .wav 文件,并且标题包含不需要的信息。整个标题如下所示:
1 2 | RIFFR...WAVEfmt ........D...........LIST&...INFO ISFT....LMMS (libsndfile-1.0.27)..data.......... |
我最终用 bfxr 和 Bosca Ceoil 进行了测试,它们的所有声音都在播放,标题看起来很整洁。
希望这些信息对某人有用。