如何使用 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 中的DmoResampler
或WaveFormatConversionStream
类可用于此目的。
【讨论】:
【参考方案2】:我不熟悉 Naudio 对 wasapi 的抽象,但您可以强制 Windows 使用 wasapi C++ API 以特定比特率/样本大小为您提供音频。 如果有帮助
【讨论】:
以上是关于如何使用 NAudio 更改 WASAPI 记录比特率?的主要内容,如果未能解决你的问题,请参考以下文章
使用 NAudio Wasapi 包装器录制音频,声音文件权重不为 0 但音频为空白
我应该为我的音频项目使用 DirectSound 还是 WASAPI?
NAudio:如何在使用 AudioFileReader 和 WaveOutEvent 更改播放位置时准确获取当前播放位置