从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,这与我的源代码完全不同,我的最后一个结果。。。

从RIFF WAV文件中提取BitsPerSample

您的问题是误解了链接资源的偏移量。它们以1为基础。文件查找显然是基于0的。因此,请查找字节34,然后重试。