C# 使用NAudio(或其他)播放/分析20毫秒的WAV文件段

C# 使用NAudio(或其他)播放/分析20毫秒的WAV文件段,c#,bytearray,wav,binaryfiles,naudio,C#,Bytearray,Wav,Binaryfiles,Naudio,我无法将NAudio组件用于我需要的简单用途。 我希望在缓冲区(数组)中只包含数据流,然后将其偏移20毫秒(并实时播放这些片段)。 我想我可以去掉标题,但实现这一点有困难 我试过用这个: WaveFileReader reader = new WaveFileReader(fullFileName); byte[] buffer = new byte[reader.Length]; int read = reader.Read(buffer,

我无法将NAudio组件用于我需要的简单用途。 我希望在缓冲区(数组)中只包含数据流,然后将其偏移20毫秒(并实时播放这些片段)。 我想我可以去掉标题,但实现这一点有困难

我试过用这个:

WaveFileReader reader = new WaveFileReader(fullFileName);

             byte[] buffer = new byte[reader.Length];
            int read = reader.Read(buffer, 0, buffer.Length);
            short[] sampleBuffer = new short[read / 2];
            Buffer.BlockCopy(buffer, 0, sampleBuffer, 0, read);
我可以看到sampleBuffer包含数据(实际pos-neg值,如果使用byte[]sampleBuffer=File.ReadAllBytes(fullFileName);,则无法获取该值)

我正在使用以下WAV文件:

Pcm 8000Hz 1 channels 16 bits per sample
* Extra Size: 0 Block Align: 2 Average Bytes Per Second: 16000
* WaveFormat: 16 bit PCM: 8kHz 1 channels
* Length: 351360 bytes: 00:00:21.9600000 

据我所知,
waveilereader
Read
方法只会给你实际的音频数据,也就是说,它会去掉头信息。
File.ReadAllBytes
会给你文件的完整内容,包括wav文件头,所以你会得到不同的结果目前,您希望删除标题信息,因此从我所看到的情况来看,您的代码应该会提供您想要的内容,因此我对您遇到的问题感到有点困惑。请您详细说明一下。据我所知,
waveilereader
Read
方法只会提供实际的音频数据,也就是说,它会删除标题标题信息输出。
File.ReadAllBytes
将为您提供文件的完整内容,包括wav文件标题,这就是为什么您会得到不同的结果。从您的问题中,我收集到您希望删除标题信息,因此从我看到的情况来看,您的代码应该为您提供您想要的内容,因此我对以下内容有点困惑:你在哪里遇到了问题。你能详细说明一下吗?