将 a-law 转换为 pcm
Posted
技术标签:
【中文标题】将 a-law 转换为 pcm【英文标题】:convert a-law to pcm 【发布时间】:2014-03-15 15:14:59 【问题描述】:如何将具有编码:ALaw、SampleRate:8000、BitsPerSample:8、通道:1、块对齐通道:1、每秒位数:8000 的波转换为具有 pcm 编码和与第一波相同参数的波?我一直在使用http://www.codeproject.com/Articles/14237/Using-the-G711-standard 的 ALawDecoder,现在我有一个短裤数组(不是字节)!如何将短数组转换为字节数组并使用 NAudio.WaveOut 播放,如何将其写入波形文件?
【问题讨论】:
除非您必须以编程方式执行此操作,否则为什么不使用诸如 audacity 之类的东西? 【参考方案1】:您将 Alaw 解码为 PCM,即 16 BitsPerSample - 这就是您最终得到 short
s 数组的原因。
您可以使用Buffer.BlockCopy()
将它们复制到byte[]
:
byte[] result = new byte[shortArray.Length * sizeof(short)];
Buffer.BlockCopy(shortArray, 0, result, 0, result.Length);
【讨论】:
【参考方案2】:我没有使用这么长的路径,而是使用了这行简单的代码:
WaveFormatConversionStream conv = new WaveFormatConversionStream(WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, 8000, 1, 16000, 2, 16), inputStream);
【讨论】:
以上是关于将 a-law 转换为 pcm的主要内容,如果未能解决你的问题,请参考以下文章