将 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 - 这就是您最终得到 shorts 数组的原因。

您可以使用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的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PCM 转换为 MP3?

将 PCM 16 位音频转换为 PCM 8 位

将 8 位无符号 PCM 转换为 8 位有符号 PCM

如何将 PCM 音频流转换为在线播放

如何将 PCM 音频样本流转换为音量?

将 wav 文件从 GSM 转换为 PCM