从RIFF WAV文件中提取BitsPerSample
本文关键字:提取 BitsPerSample 文件 RIFF WAV | 更新日期: 2023-09-27 18:01:11
我正试图使用FileStream从WAV文件中提取BitsPerSample。根据这个来源:WAV偏移量表,BitsPerSample位于偏移量35处,长度为2字节。
这是我试图提取它的代码:
public int getBitsPerSample()
{
int bitsPerSample;
using (var f = File.OpenRead(wavPath))
{
f.Seek(35,SeekOrigin.Begin);
byte[] val = new byte[2];
f.Read(val,0,2);
bitsPerSample = BitConverter.ToInt16(val,0);
}
return bitsPerSample;
}
现在,当我在WAV文件上使用它时,我知道它是16位的,我会得到25600的bitsPerSample?当我使用十六进制编辑器查看WAV文件时,我的怀疑得到了证实,这2个字节实际上位于偏移量0x22,就在它说"之前;d a t a";,它应该在哪里。检查另一个16位WAV文件证实了这一点。
在0x22处查找时,我得到了2的bitspersample,这也是不正确的。
如果有人现在已经知道这个问题,那就太好了,但我会不断添加一些信息,以备不时之需。
当我在十六进制编辑器中打开一个32位WAV文件时,我发现bitsPerSample的偏移量为0x4E,这与我的源代码完全不同,我的最后一个结果。。。
您的问题是误解了链接资源的偏移量。它们以1为基础。文件查找显然是基于0的。因此,请查找字节34,然后重试。