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文件的浮点数组,我就会知道如何继续。
要访问数据,请使用读取器的读取方法:
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 });
有关音频转换的更多信息,请参阅此。