使用.NET将WAV转换为WMA

问题描述:

在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

我还没有尝试过个人,但http://www.codeproject.com/KB/audio-video/WmaCompressor.aspx看起来应该符合你的要求(如果它是“最好”的解决方案,因此不知道)...

+0

是的,我认为这是目前最有前途的解决方案。同一作者还完成了Windows Media Format SDK的C#端口。我唯一担心的是,代码是否可以用于商业项目还不清楚。 – 2008-09-17 08:52:19

你可以看看BASS library。 它有附加组件,如BASSWMA和BASSEnc用于编码/解码。 所有的API都可以使用BASS.Net包装从.NET访问。

BASS和BASS.Net都可以获得商业用途许可,收费合理(每个100欧元)。

如果您愿意编写一点C++/CLI,那么您不需要太多代码就可以在DirectShow上创建一个包装来执行此操作。然后可以直接从C#程序集调用,而不需要混淆interop。用DirectShow做它比直接使用WMF容易得多,因为你不必做任何文件解析或I/O - 这一切都是为你完成的。作为参考,我有一个商业应用程序中的代码,它可以用不到100行的C++对WAV文件进行编码/解码,所有这些都包含在友好的.Net类中。聪明的指针明智的使用可以帮助你,如果你沿着这条路线...

你可能会看看www.mitov.com。那里有一些图书馆可能会提供帮助。我相信你需要购买一份商业产品的副本,但我认为这是一个合理的价格。

首先,看看这个:

http://windowsmedianet.sourceforge.net/

然后,搜索IWMWritter - 和初始化它的各种方式。您将提供原始PCM数据,并将写出wma文件。

标记我的答案请参阅这方面的更多信息。