改变记录的WAV文件的比特率

本文关键字:比特率 文件 WAV 改变 记录 | 更新日期: 2023-09-27 18:15:07

我正在尝试使用NAudio实现Wav文件的音频录制,但WasapiLoopbackCapture类设置的默认比特率不能通过编程方式更改。

我正在录制音频输出到MemoryStream (recordedStream在下面的片段)。然而,WasapiLoobpackCapture设置的默认比特率不适合我的需要。

我想有一个320KBPS的比特率,我试图用waveformatconveronstream类以编程方式转换录制的文件,但我不能使它工作。

 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等)完全相同,除了比特率在目标波格式中较低。

从内存流中包含的Wav文件进行比特率转换的正确代码是什么?我的目标是得到一个320KBPS的文件

改变记录的WAV文件的比特率

对于给定的采样率,位深度和通道计数,PCM音频总是具有相同的比特率(通过将这三个值相乘计算)。如果你想降低比特率,你必须改变这三个中的一个(降低采样率可能是最好的选择,除非你可以从立体声到单声道)。

你真的应该考虑编码成MP3、WMA或AAC这样的格式,这样你就可以选择自己喜欢的比特率了。