从 RIFF WAV 文件中提取 BitsPerSample

Extracting BitsPerSample from a RIFF WAV File

我正在尝试使用 FileStream 从 WAV 文件中提取 BitsPerSample。根据此来源:WAV offset Table,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;
}

现在当我在我知道是 16 位的 WAV 文件上使用它时,我得到的 bitsPerSample 是 25600?当我使用十六进制编辑器查看 te WAV 文件时,我的怀疑得到了证实,这 2 个字节实际上位于偏移量 0x22,就在它说“d a t a”之前,它应该在的位置。检查不同的 16 位 WAV 文件证实了这一点。

在 0x22 处寻找得到 2 的 bitspersample,这也是不正确的。

如果现在有人已经知道问题了,那很好,但我会继续添加一些信息以备不时之需。

当我在十六进制编辑器中打开一个 32 位 WAV 文件时,我在偏移量 0x4E 处发现了 bitsPerSample,这又与我的源完全不同,我最后的结果...

您的问题是您误解了链接资源的偏移量。它们是基于 1 的。文件搜索显然是基于 0 的。所以改为寻找字节 34 并重试。