c# - 使用 NAudio 压缩音频 WAV - 调用 acmStreamOpen 时出现 AcmNotPossible 错误

标签 c# codec naudio wave

我必须使用 NAudio 用最好的编解码器来压缩音频 WAV。 我使用 WaveFormatConversionStream,但总是收到此错误:
“AcmNotPossible 调用 acmStreamOpen” 我读了很多关于这个错误的答案,但我没有找到解决方案。

这是我的代码,我哪里错了?

所有的帮助都会很好并受到欢迎:)

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;
            }
        }
    }
}

最佳答案

这意味着您的系统上没有可以执行请求的转换的 ACM 编解码器。您可以使用 NAudio 附带的 NAudioDemo 应用程序来检查系统上安装的所有 ACM 编解码器及其支持的输入和输出格式。 Windows 当然没有附带 Vorbis ACM 编解码器,这可能就是您的代码无法工作的原因。即使您已经安装了 Vorbis ACM 编解码器,您也需要正确设置 WaveFormat,否则您将收到 ACM not possible 错误。

您可能最好尝试使用 NVorbis 附带的 NAudio 支持。无论如何。

关于c# - 使用 NAudio 压缩音频 WAV - 调用 acmStreamOpen 时出现 AcmNotPossible 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953991/

相关文章:

c# 点对点网络 - 绕过路由器

C# Com 枚举和 VB6

c - 使用 FFmpeg API 即时重新混合 mp4

OSX错误上的Ffmpeg和png水印

c# - BufferedWaveProvider 在 Unity 中不起作用

c# - WaveInEvent处理程序多久触发一次?

c# - ASPX 页面中的用户控件无法使用 javascript

c# - 如何在UWP中获取当前的ProcessID?

python - 如何使用 H264 编解码器编写 mp4 视频文件?

asp.net-mvc - MVC4 应用程序 "Unable to load DLL ' libmp3lame.32.dll'