AcmNotPossible调用acmStreamOpen,naudio

时间:2012-11-29 14:40:04

标签: c# wav naudio

我正在尝试转换

PCM S16 LE (araw)
Mono, Sample rate 22050, Bit pr. sample 16 

PCM mulaw (PCM MU-LAW)
Mono, Sample rate 8000hz, Bit pr. sample is 8. 

WaveFormat.CreateMuLawFormat(8000,1)甚至是更通用的WaveFormat.CreateCustomFormat,其中我指定了相同的WaveFormatEncoding,因为源流会引发相同的异常。

AcmNotPossible calling acmStreamOpen

我在这里错过了什么吗?

任何线索都将不胜感激。

1 个答案:

答案 0 :(得分:2)

ACM mu-law编码器期望其输入为16位。如果你正在使用mu或a-law,那么采样率也可能很低。以下两行代码将创建一个零长度的PCM 16位流,并将其传递给WaveFormatConversionStream以将其转换为a-law。它不应该抛出“无法转换”错误,除非由于某种原因您没有在您的机器上安装G.711编码器。

var s = new RawSourceWaveStream(new MemoryStream(), new WaveFormat(8000,16,1));
var c = new WaveFormatConversionStream(WaveFormat.CreateALawFormat(8000,1), s);