c# - 如何使用 NAudio 对内存中的音频流 (byte[]) 进行重采样?

标签 c# naudio

我想将音频字节数组从 8Khz 重采样到 48Khz。音频流作为 byte[] 从网络套接字中获取。

阅读 Mark Heath's Blog about resampling using NAudio ,我遇到了以下代码

int outRate = 16000; 
var inFile = @"test.mp3"; 
var outFile = @"test resampled WDL.wav"; 
using (var reader = new AudioFileReader(inFile)) 
{ 
    var resampler = new WdlResamplingSampleProvider(reader, outRate); 
    WaveFileWriter.CreateWaveFile16(outFile, resampler); 
}

但此代码作用于文件流 (AudioFileReader) 而不是内存数据 (byte[])。我如何修改此代码以对我的字节数组进行上采样?

编辑:基本上我想将从网络对等点获得的 8 KHz 数据上采样到 48 KHz 并使用 WASAPI 播放。

最佳答案

您对重采样器的输入可以是 BufferedWaveProviderRawSourceWaveStream。但是,您不能使用 CreateWaveFile16 实时重新采样。您只需读取您希望可用的音频量并将其写入 WAV 文件。

关于c# - 如何使用 NAudio 对内存中的音频流 (byte[]) 进行重采样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303261/

相关文章:

c# - 在 WPF 中播放和记录 16 位 PCM(原始)音频字节

c# - 为什么 "async Task"方法的返回值不是任务

audio - 使用MediaFoundationReader时出现COMException

c# - 无法播放创建的mp3文件,但可以播放现有文件

c# - 为什么异常中断应用程序池?

c# - 使用 NAudio 播放自定义文件格式

c# - 如何同时在多个设备上播放声音

c# - 忽略图像中的明亮运动

c# - 检查类型 TA 是否可以在运行时转换为类型 TB? (考虑的不仅仅是继承)

c# - 从 ADO.NET 确定 SQL Server 的版本