如何使用 NAudio 更改 WASAPI 记录比特率?

Posted

技术标签:

【中文标题】如何使用 NAudio 更改 WASAPI 记录比特率?【英文标题】:How to change WASAPI record bitrate with NAudio? 【发布时间】:2012-03-08 09:50:47 【问题描述】:

我正在使用 NAudio 解码、播放和录制 MP3 流。对于录制,我使用 WasapiLoopbackCapture 将流保存到 wav 文件:

if (waveIn == null) 
  waveIn = new WasapiLoopbackCapture();
  writer = new WaveFileWriter(outputFilename, waveIn.WaveFormat);
  waveIn.DataAvailable += new EventHandler<WaveInEventArgs>(waveIn_DataAvailable);
  waveIn.RecordingStopped += new EventHandler(waveIn_RecordingStopped);
  waveIn.StartRecording();

我现在正在寻找一种解决方案来保存 wav 文件,而不是 3072 kBit/s(这似乎是 wasApi 的标准)。 mp3 流提供 128 kBit/s,所以这对于我的 wav 文件来说是一个很好的比特率。我尝试修改waveIn.WaveFormat,但没有找到合适的属性。

【问题讨论】:

【参考方案1】:

很遗憾,WASAPI 不允许您更改环回记录的采样率。之后您必须自己执行自己的采样率转换。 NAudio 中的DmoResamplerWaveFormatConversionStream 类可用于此目的。

【讨论】:

【参考方案2】:

我不熟悉 Naudio 对 wasapi 的抽象,但您可以强制 Windows 使用 wasapi C++ API 以特定比特率/样本大小为您提供音频。 如果有帮助

【讨论】:

以上是关于如何使用 NAudio 更改 WASAPI 记录比特率?的主要内容,如果未能解决你的问题,请参考以下文章

C# NAudio asio 和 wasapi

使用 NAudio Wasapi 包装器录制音频,声音文件权重不为 0 但音频为空白

麦克风停止向 NAudio 提供数据

我应该为我的音频项目使用 DirectSound 还是 WASAPI?

NAudio:如何在使用 AudioFileReader 和 WaveOutEvent 更改播放位置时准确获取当前播放位置

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