我正在尝试使用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的文件。
答案 0 :(得分:1)
对于给定的采样率,位深度和通道数,PCM音频始终具有相同的比特率(通过将这三个值相乘来计算)。如果你想降低比特率,你必须改变其中的一个(降低采样率可能是最好的选择,除非你可以从立体声变为单声道)。
您真的应该考虑使用MP3,WMA或AAC等格式进行编码,这样您就可以选择自己喜欢的比特率了。