在C#或C ++中将压缩的wav文件转换为未压缩的wav文件的最简单方法是什么?

时间:2009-01-20 15:31:51

标签: c# c++ audio compression wav

将压缩的wav文件(例如MPEG编解码器,但可以是任何已安装的编解码器)以编程方式转换为未压缩的wav文件(16位PCM)的最简单方法是什么?

我听说使用直接显示和用原生C ++编写代码就可以了,但是我对直接显示没有多少经验。

有更简单的方法吗? C#是理想的,但C ++也可以。

2 个答案:

答案 0 :(得分:2)

假设我们在谈论Windows,

DirectShow可能是进行解码的最佳方式。 DirectShow是一个COM API,因此您可以编写本机C ++ COM代码,您可以使用其中一个可用的DirectShow .Net包装器,也可以使用C ++ / CLI。您选择哪一个取决于您的应用程序架构的其余部分 - 如果您需要使用.Net,那么C ++ / CLI绝对是最简单的途径。你真的需要更具体地了解你想要实现的目标 - 例如,MPEG本身不是编解码器 - 它们只是定义标准。

答案 1 :(得分:1)

您可以使用NAudio使用PC上安装的任何ACM编解码器在C#中解压缩WAV文件。这是一些示例代码:

using (WaveFileReader reader = new WaveFileReader(inputFileName))
{
    using (WaveStream convertedStream = 
        WaveFormatConversionStream.CreatePcmStream(reader))
    {
        WaveFileWriter.CreateWaveFile(outputFileName, convertedStream);
    }
}