我正在尝试使用 NAudio 将音频录制实现为 Wav 文件,但无法以编程方式更改 WasapiLoopbackCapture 类设置的默认比特率。
我正在将音频输出录制到 MemoryStream(下面的代码片段中的recordedStream)。但是,WasapiLoobpackCapture 设置的默认比特率不符合我的需要。
我想要一个 320KBPS 的比特率,我尝试使用 WaveFormatConversionStream 类以编程方式转换录制的文件,但我无法让它工作。
WaveFormat targetFormat = WaveFormat.CreateCustomFormat(waveIn.WaveFormat.Encoding,
waveIn.WaveFormat.SampleRate, //SampleRate
waveIn.WaveFormat.Channels, //Channels
320000, //Average Bytes per Second
waveIn.WaveFormat.BlockAlign, //Block Align
waveIn.WaveFormat.BitsPerSample); //Bits per Sample
using (WaveStream inputStream = new RawSourceWaveStream(recordedStream, waveIn.WaveFormat))
{
try
{
using (var converter = new WaveFormatConversionStream(targetFormat, inputStream))
{
// ...
}
}
catch (Exception)
{
throw;
}
recordedStream.Dispose();
}
我总是收到“AcmNotPossible 调用 acmStreamOpen”转换异常。如您所见,我使用与录制的 WAV 文件完全相同的格式(扩展编码、44100 等),除了目标波形中的比特率较低。
从 MemoryStream 中包含的 Wav 文件进行比特率转换的正确代码是什么?我的目标是获得一个 320KBPS 的文件。