我正在尝试使用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,这也是不正确的。
如果现在有人已经知道这个问题了,那就太好了,但我会继续添加一些信息,以防需要。
当我在十六进制编辑器中打开一个32位WAV文件时,我找到了偏移量为0x4E的bitsPerSample,这也与我的源代码完全不同,我的最后一个结果是...
发布于 2016-08-06 21:58:51
您的问题是您曲解了链接资源的偏移量。它们是从1开始的。文件查找显然是从0开始的。因此,请改为查找字节34,然后重试。
https://stackoverflow.com/questions/38804923
复制相似问题