使用 NAudio 创建静音 WAVE 流

Posted

技术标签:

【中文标题】使用 NAudio 创建静音 WAVE 流【英文标题】:Create silence WAVE stream with NAudio 【发布时间】:2017-05-09 09:06:09 【问题描述】:

作为 NAudio 和音频应用程序的新手,我不知道如何实现以下内容:

我想制作一个空(静音)波流并将其转换为WaveChannel32,以便将其馈送到MultiplexingWaveProvider 并使一个输出通道静音。 我尝试使用静音 wav 文件并成功静音输出通道,但最后我不想在应用程序中使用文件,而是“即时”执行。 有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以很容易地产生IWaveProvider 的静音。创建一个实现IWaveProvider 的类,并在Read 方法中始终返回请求的字节数。也用零填充缓冲区。

Read 方法可以这样做:

public int Read(byte[] buffer, int offset, int count)

   for(int n = 0; n < count; n++) buffer[offset++] = 0;
   return count;

【讨论】:

谢谢马克。这个解决方案可能就是我要找的! 看起来 Mark 忽略了他自己的 NAudio.Wave.SilenceProvider,它已经提供了这个实现

以上是关于使用 NAudio 创建静音 WAVE 流的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NAudio WaveStream 写入内存流?

使用 NAudio 从内存流中播放 .wma

每转一圈用 NAudio 播放波形

NAudio 中的静音功能 (waveOut)

使用 NAudio 获取音频的峰值

NAudio - 如何记录扬声器的初始静音