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看起来很整洁。
希望此信息对某人有用。
解码 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看起来很整洁。
希望此信息对某人有用。