我正在捕获IEEE,48khz,32位音频,并尝试将其转换为PCM,44.1khz,16位音频。我在PCM编码结果中每秒听到很多次小声音。
我已经收听了原始音频(48khz格式)的播放。它没有文物,听起来不错。
离开重新取样。有人能告诉我我在这里做错了什么吗?
这是我的转换代码:
byte[] buffer = new byte[1024 * 10];
//wave format is IEEE 48khz, 32 bit
public byte[] Convert(byte[] input, int length, WaveFormat format)
{
if (length == 0)
return new byte[0];
using (var memStream = new MemoryStream(input, 0, length))
{
using (var inputStream = new RawSourceWaveStream(memStream, format))
{
//convert bytes to floats for operations.
WaveToSampleProvider sampleStream = new WaveToSampleProvider(inputStream);
//resample to 44.1khz
var resamplingProvider = new WdlResamplingSampleProvider(sampleStream, 44100);
//convert float stream to PCM 16 bit.
var ieeeToPCM = new SampleToWaveProvider16(resamplingProvider);
return readStream(ieeeToPCM);
}
}
}
private byte[] readStream(IWaveProvider waveStream)
{
using (var stream = new MemoryStream())
{
int read;
while ((read = waveStream.Read(buffer, 0, buffer.Length)) > 0)
{
stream.Write(buffer, 0, read);
}
return stream.ToArray();
}
}