首页 > 解决方案 > 如何重新采样波形文件并创建流或字节数组而不是文件?

问题描述

我见过很多关于重新采样文件和创建新文件的例子。

int outRate = 16000;
var inFile = @"test.wav"; // 8khz file
var outFile = @"test resampled.wav";
using (var reader = new WaveFileReader(inFile))
{
    var outFormat = new WaveFormat(outRate, reader.WaveFormat.Channels);
    using (var resampler = new MediaFoundationResampler(reader, outFormat))
    {
        WaveFileWriter.CreateWaveFile(outFile, resampler);
    }
}

我想要做的是创建一个重新采样的流或字节数组。我曾尝试调用 WaveFileWriter.WriteWavFileToStream(memoryStream, resampler) 而不是 CreateWaveFile,但我最终得到了一个包含 RIFF 标头的流,我不确定此时该做什么。

标签: naudio

解决方案


您可以只调用Read重采样器来读取缓冲区重采样字节。我通常建议一次阅读大约 1 秒的音频,并继续阅读直到Read返回 0


推荐阅读