C#使用NAudio转换wav文件

本文关键字:wav 文件 转换 NAudio 使用 | 更新日期: 2023-09-27 18:01:13

我有一个WAV文件,其中2^16的值在0到2之间。我想将其更改为具有2^8个值。。。这意味着它将具有更少的信息,但将占用更少的空间。

我有转换的公式,但我不知道如何访问数据。

我已经阅读了如下文件:

 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName));
 while (wave.Position < wave.Length)
   {
    read = wave.Read(buffer,0,16348); 
   }

现在我可以使用波浪或缓冲区。

如何将波浪修改为2^8?假设我传递每个值并对其进行转换。但是我不知道如何访问转换的值。

例如,如果我有一个表示wav文件的浮点数组,我就会知道如何继续。

C#使用NAudio转换wav文件

要访问数据,请使用读取器的读取方法:

var myReader = new WaveFilereader(filename);
int bytesRead = 0;
var readChunck = new byte[1024];
do
{
   //Read 1024 bytes at a time, will return 0 when there are no more bytes to Read
   bytesRead = myReader.Read(readChunk, 0 , readChunk.length );
   //Process the bytes here
}
while(bytesRead != 0)

或者,只需使用media foundation重采样器对音频进行重采样,就可以让你的生活变得更轻松。您可以使用Media foundation重采样器对音频进行下采样,方法如下:

   //Read 2-channel Audio with sample rate 44.1Khz 
    var myReader = new WaveFileReader(filename); 
    //New Waveformat has 2-channels and sample rate 22KHz
    var myOutputFormat = new WaveFormat(22000,2); 
    //Resample
    var resampledAudio = new MediaFoundationResampler(myReader, myOutputFormat)  
                                                     { ResamplerQuality = 60 });

有关音频转换的更多信息,请参阅此。