将a-law转换为pcm

时间:2014-02-16 10:55:52

标签: c# audio naudio

如何使用编码转换波形:ALaw,SampleRate:8000,BitsPerSample:8,通道:1,阻止对齐通道:1,每秒位数:8000以pcm编码波形和第一波的相同参数?我一直在使用http://www.codeproject.com/Articles/14237/Using-the-G711-standard的ALawDecoder,现在我有一个短裤阵列(不是字节)!如何将短数组转换为字节数组并使用NAudio.WaveOut播放它,如何将其写入波形文件?

2 个答案:

答案 0 :(得分:0)

你将Alaw解码为PCM,这是16 BitsPerSample - 这就是为什么你最终得到short的数组。

您可以使用Buffer.BlockCopy()将其复制到byte[]

byte[] result = new byte[shortArray.Length * sizeof(short)];
Buffer.BlockCopy(shortArray, 0, result, 0, result.Length);

答案 1 :(得分:0)

我使用了这一简单的代码行,而不是这条长路径:

WaveFormatConversionStream conv = new WaveFormatConversionStream(WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, 8000, 1, 16000, 2, 16), inputStream);