2016-08-06 13 views
1

FileStreamを使用してWAVファイルからBitsPerSampleを抽出しようとしています。このソースによれば、WAV offset Tableによれば、BitsPerSampleはオフセット35に位置し、2バイト長である。RIFF WAVファイルからBitsPerSampleを抽出する

これは、それを抽出しようとしているために私のコードです:私はWAVファイルでこれを使用するとき

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ビットである知っている、私は25600のは、bitsPerSampleを取得しますか?私の疑惑が確認されたte WAVファイルを見るために16進エディタを使用したとき、2バイトは実際には0x22のオフセットにあり、 "d a t a"と表示されます。別の16ビットWAVファイルを調べると、これが確認されました。

0x22で検索すると2のビットサンプルが得られましたが、これも正しくありません。

すでに誰かが問題を知っていれば、それはすばらしいことですが、必要に応じて情報を追加し続けるつもりです。私は、バイナリエディタで32ビットのWAVファイルを開いたとき、私は私のソース、および私の最後の結果から、再び完全に異なっているオフセットの0x4E、では、bitsPerSampleを見つけ

...

答えて

0

あなたの問題は、あなたがしていることですリンクされたリソースからのオフセットを誤って解釈する。彼らは1ベースです。ファイル検索は明らかに0ベースで動作します。代わりにバイト34を探して、やり直してください。