4

我正在尝试转换

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

我在这里错过了什么吗?

任何线索将不胜感激。

4

1 回答 1

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);
于 2012-11-30T08:13:38.753 回答