我必须使用 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/