我正在尝试使用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();
        }

我总是收到“调用acmStreamOpen的AcmNotPossible”转换异常。如您所见,我使用的格式与记录的WAV文件完全相同(扩展编码,44100等),但目标波形中的比特率较低。

从MemoryStream中包含的Wav文件进行比特率转换的正确代码是什么?我的目标是获得320KBPS的文件。

最佳答案

对于给定的采样率,比特深度和通道数,PCM音频始终具有相同的比特率(通过将这三个值相乘得出)。如果要降低比特率,则必须更改这三个比特率之一(降低采样率可能是最好的选择,除非可以从立体声转换为单声道)。

确实,您应该考虑将编码为MP3,WMA或AAC之类的格式,这样您就可以选择自己喜欢的比特率了。

关于c# - NAudio-更改录制的WAV文件的比特率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16719761/

10-13 01:01