我已经看到了许多有关重新采样文件和创建新文件的示例。
dir.mkdirs() // this returns true, and I checked that all subdirectories as created with success
我想要做的是创建一个重新采样的流或字节数组。我试过调用WaveFileWriter.WriteWavFileToStream(memoryStream,resampler)而不是CreateWaveFile,但是我最终得到一个包含RIFF标头的流,因此我不确定该怎么做。
答案 0 :(得分:0)
您可以只在重采样器上调用Read
来读取缓冲区重采样的字节。我通常建议一次读取大约1秒钟的音频,并继续进行直到Read
返回0
答案 1 :(得分:0)
感谢您的帮助。我现在按照建议使用Read方法,但重新采样的音频会发出咔嗒声。在下面包含的代码中,当我将byte []“ arr”的大小调整为大于128时,音频会变差。我进行重新采样的方式导致点击。
public void AddSample(byte[] sample)
{
using (var sourceProvider = new RawSourceWaveStream(sample, 0, sample.Length, waveFormat))
// Setup resampler
using (var resampler = new MediaFoundationResampler(sourceProvider, defSampleRate))
{
resampler.ResamplerQuality = 60;
var arr = new byte[128];
while (resampler.Read(arr, 0, arr.Length) > 0)
{
// Send stream to the provider
bufferedProvider.AddSamples(arr, 0, arr.Length);
}
}
}