2009-01-20 27 views
1

將未壓縮的wav文件(16位PCM)以編程方式轉換爲壓縮的wav文件(例如,MPEG編解碼器,但可以是任何已安裝的編解碼器)的最簡單方法是什麼?在C#或C++中將壓縮的wav文件轉換爲未壓縮的wav文件最簡單的方法是什麼?

我聽說使用直接顯示和在本地C++編寫代碼會做到這一點,但我沒有太多的直接顯示的經驗。

有沒有更簡單的方法來做到這一點? C#將是理想的,但C++也可以。

回答

1

您可以使用NAudio使用您PC上安裝的任何ACM編解碼器在C#中解壓縮WAV文件。以下是一些示例代碼:

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

DirectShow可能是解碼的最佳方式,假設我們正在討論Windows。 DirectShow是一個COM API,因此您可以編寫本機C++ COM代碼,您可以使用其中一個可用的包裝器,也可以使用C++/CLI。你選擇哪一個取決於你的應用程序架構的其餘部分 - 如果你需要使用.Net,那麼C++/CLI絕對是最簡單的路線。你真的需要對你想要實現的內容做更具體的描述 - 例如,MPEG本身不是一個編解碼器 - 它們只是定義標準。