C# 使用NAudio压缩音频WAV-错误ACMNOTABLE调用acmStreamOpen

C# 使用NAudio压缩音频WAV-错误ACMNOTABLE调用acmStreamOpen,c#,codec,naudio,wave,C#,Codec,Naudio,Wave,我必须使用NAudio用最好的编解码器压缩音频WAV。 我使用WaveFormatConversionStream,但我总是遇到这样的错误:“acmnotable calling acmstreampen” 我读了很多关于这个错误的答案,但我没有找到解决办法 这是我的密码,我哪里错了 所有的帮助都很好,欢迎:) 这意味着您的系统上没有可以执行请求转换的ACM编解码器。您可以使用NAudio附带的NAudioDemo应用程序来检查系统上安装的所有ACM编解码器及其支持的输入和输出格式。Window

我必须使用NAudio用最好的编解码器压缩音频WAV。 我使用WaveFormatConversionStream,但我总是遇到这样的错误:
“acmnotable calling acmstreampen”
我读了很多关于这个错误的答案,但我没有找到解决办法

这是我的密码,我哪里错了

所有的帮助都很好,欢迎:)


这意味着您的系统上没有可以执行请求转换的ACM编解码器。您可以使用NAudio附带的NAudioDemo应用程序来检查系统上安装的所有ACM编解码器及其支持的输入和输出格式。Windows当然没有配备Vorbis ACM编解码器,这可能就是您的代码无法工作的原因。即使您安装了Vorbis ACM编解码器,您也需要完全正确地获取波形格式,否则您将获得ACM不可能的错误


在任何情况下,您最好尝试使用随附的NAudio支持。

是的!我确信Vorbis编解码器在我的电脑上。但是没有。。。现在可以了!Thx很多:)
private void InvokeOnNewAudioData(byte[] data, AudioFormat audioFormat)
{
    WaveFormat waveFormat = new WaveFormat(audioFormat.NumberSamplesPerSec, audioFormat.NumberBitsPerSample, audioFormat.NumberChannels);

    WaveFormat targetFormat = WaveFormat.CreateCustomFormat(WaveFormatEncoding.Vorbis1,
                                                            22000, //SampleRate
                                                            audioFormat.NumberChannels,     //Channels
                                                            48000,    //Average Bytes per Second
                                                            2,     //Block Align
                                                            16);    //Bits per Sample   


    using (MemoryStream dataStream = new MemoryStream(data))
    {
        using (WaveStream inputStream = new RawSourceWaveStream(dataStream, waveFormat))
        {
            try
            {
                using (WaveFormatConversionStream converter = new WaveFormatConversionStream(targetFormat, inputStream))
                {

                }
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}