2008-09-15 48 views
6

在C#中將WAV文件轉換爲WMA(反之亦然)的最佳解決方案是什麼?實際上,我已經使用Windows Media Encoder SDK實現了這一功能,但必須將Windows Media Encoder與我的應用程序一起分發是很麻煩的。 Windows Media Format SDK具有標記爲棄用的大部分API。看起來可能有一些我可以從Windows SDK使用的DirectX媒體對象(DMO),但是會有很多互斥寫入。使用.NET將WAV轉換爲WMA

我想知道是否有一個很好的管理包裝可以執行轉換的非託管庫。它需要一個許可證,允許它作爲封閉源商業應用程序的一部分進行分發。

+0

你有任何將wma轉換爲wav的示例嗎?我見過的所有樣品都只是wav – 2008-12-19 21:42:04

回答

1

我還沒有嘗試過個人,但http://www.codeproject.com/KB/audio-video/WmaCompressor.aspx看起來應該符合你的要求(如果它是「最好」的解決方案,因此不知道)...

+0

是的,我認爲這是目前最有前途的解決方案。同一作者還完成了Windows Media Format SDK的C#端口。我唯一擔心的是,代碼是否可以用於商業項目還不清楚。 – 2008-09-17 08:52:19

1

你可以看看BASS library。 它有附加組件,如BASSWMA和BASSEnc用於編碼/解碼。 所有的API都可以使用BASS.Net包裝從.NET訪問。

BASS和BASS.Net都可以獲得商業用途許可,收費合理(每個100歐元)。

1

如果您願意編寫一點C++/CLI,那麼您不需要太多代碼就可以在DirectShow上創建一個包裝來執行此操作。然後可以直接從C#程序集調用,而不需要混淆interop。用DirectShow做它比直接使用WMF容易得多,因爲你不必做任何文件解析或I/O - 這一切都是爲你完成的。作爲參考,我有一個商業應用程序中的代碼,它可以用不到100行的C++對WAV文件進行編碼/解碼,所有這些都包含在友好的.Net類中。聰明的指針明智的使用可以幫助你,如果你沿着這條路線...

0

你可能會看看www.mitov.com。那裏有一些圖書館可能會提供幫助。我相信你需要購買一份商業產品的副本,但我認爲這是一個合理的價格。

1

首先,看看這個:

http://windowsmedianet.sourceforge.net/

然後,搜索IWMWritter - 和初始化它的各種方式。您將提供原始PCM數據,並將寫出wma文件。

標記我的答案請參閱這方面的更多信息。