2016-08-06 2 views
1

FileStream을 사용하여 WAV 파일에서 BitsPerSample을 추출하려고합니다. 이 소스에 따르면 WAV offset Table, BitsPerSample은 오프셋 35에 위치하며 2 바이트 길이입니다. 나는 25600의 bitsPerSample 16 비트 얻을 수 있습니다 내가 알고있는 WAV 파일에이를 사용할 때 이제RIFF WAV 파일에서 BitsPerSample 추출

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 진수 편집기를 사용했을 때 의심이 들었을 때 2 바이트는 실제로 "d a t"라고 표시되기 전에 0x22 오프셋에있었습니다. 다른 16 비트 WAV 파일을 검사하면이를 확인했습니다.

0x22에서 검색하면 2의 비트 샘플을 얻었지만 정확하지 않습니다.

누군가가 이미 문제를 이미 잘 알고 있지만 필요한 경우 정보를 계속 추가 할 것입니다. 나는 헥스 편집기에서 32 비트 WAV 파일을 열 때 나는 내 소스, 그리고 마지막 결과에서 다시 완전히 다른 오프셋 0x4E,의 bitsPerSample을 발견

...

답변

0

귀하의 문제는 당신이 있다는 것입니다 링크 된 자원에서 오프셋을 잘못 해석합니다. 그들은 1 기반입니다. 파일 검색은 0 기반으로 작동합니다. 대신 34 바이트를 찾아 다시 시도하십시오.