将压缩的wav文件(例如MPEG编解码器,但可以是任何已安装的编解码器)以编程方式转换为未压缩的wav文件(16位PCM)的最简单方法是什么?
我听说使用直接显示和用原生C ++编写代码就可以了,但是我对直接显示没有多少经验。
有更简单的方法吗? C#是理想的,但C ++也可以。
答案 0 :(得分:2)
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);
}
}