2009-08-18 139 views
1

將各種音頻格式轉換爲PCM的最佳方式是什麼?音頻轉換C#

例如:mp3,evrc,ogg vox。

在那裏有一個庫,可以讓我實現這個比較容易嗎?

編輯:

我想我最初的問題不是我真正需要的。我找到的大部分庫都是文件轉換器。我需要的是塊轉換器,其中我傳入一個1Kb的vox數據塊並返回其轉換的PCM塊。當然,我必須告訴轉換器它是什麼類型的數據以及各種編解碼器信息。

我要做的解決方案是將VOIP格式保存爲常用的wav格式並實時播放該文件。我認爲應該有一個簡單的方法來做到這一點,因爲所有的音頻在輸出之前最終都會變成PCM。

+1

修改後的代碼是的,有。嘗試在Google上搜索「Audio Conversion C#」。 – 2009-08-18 18:12:43

+0

@肖恩:爲什麼不讓你的評論成爲一個實際的答案,因爲這是一個真正的答案? – MusiGenesis 2009-08-18 18:16:21

+0

因爲「使用谷歌」不是一個可接受的答案(基於SO FAQ)。 – 2009-08-18 18:21:36

回答

3

您可以使用NAudio將壓縮音頻塊傳遞到機器上安裝的任何ACM編解碼器。您需要知道如何創建適當的WAVEFORMAT結構來正確描述壓縮音頻類型。

0

不知道任何lib都能做到這一點,但我們使用madxlib做mp3-> wav。

它是免費的,但我建議支付$ 10的SDK,因爲它帶有文檔和示例。

0

在youtube上有一個c#教程可能對您有所幫助。它演示瞭如何使用名爲alvas.audio的特定音頻庫,它確實對音頻做了一些整潔的事情。我發現這個視頻非常有教育意義。音頻庫完全用c#編寫。觀看視頻瞭解更多詳情:http://www.youtube.com/watch?v=2DIQECXFPeU

0

結賬AVBlocks SDK for .NET。它支持多種音頻格式,音頻轉換如多聲道音頻到立體聲音頻,重採樣和比特率轉換。

1

嘗試從http://alvas.net/alvas.audio,tips.aspx#tip91

static void AnyToWav(string fileName) 
    { 
     DsReader dr = new DsReader(fileName); 
     IntPtr formatPcm = dr.ReadFormat(); 
     byte[] dataPcm = dr.ReadData(); 
     dr.Close(); 
     WaveWriter ww = new WaveWriter(File.Create(fileName + ".wav"), AudioCompressionManager.FormatBytes(formatPcm)); 
     ww.WriteData(formatPcm); 
     ww.Close(); 
    }