我正在尝试转换
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
我在这里错过了什么吗?
任何线索都将不胜感激。
答案 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);