使用.NET将WAV转换为WMA

7
在C#中,将WAV文件转换为WMA(反之亦然)的最佳解决方案是什么?我已经使用Windows Media Encoder SDK实现了一次,但是必须与我的应用程序一起分发Windows Media Encoder非常麻烦。 Windows Media Format SDK有很大部分的API被标记为过时。看起来可能有一些DirectX媒体对象(DMO)可以从Windows SDK中使用,但需要编写大量的交互操作。
我想知道是否有一个良好的托管包装器,可以用于执行转换的非托管库。它需要一个许可证,允许它作为封闭源商业应用程序的一部分分发。

你有将WMA转换为WAV的示例吗?我看到的所有示例都只是wav转wma的。 - Peter Walke
5个回答

1

首先,看一下这个:

http://windowsmedianet.sourceforge.net/

接下来,搜索IWMWritter - 以及各种初始化它的方法。您将提供原始PCM数据,它将写出wma文件。

请标记我的答案以获取更多信息。


1
你可以查看BASS库。它有一些附加组件,例如BASSWMA和BASSEnc,用于进行编码/解码。所有API都可以通过.NET使用BASS.Net包装器访问。
BASS和BASS.Net都可以获得商业许可,收取合理的费用(每个100欧元)。

1

如果您熟悉一些C++/CLI的编写,那么您只需要很少的代码就可以创建一个包装器来处理DirectShow。这样就可以直接从C#程序集中调用,而无需使用Interop。使用DirectShow比直接使用WMF要容易得多,因为您不必进行任何文件解析或I/O操作-这一切都已经为您完成了。作为参考,我在商业应用程序中有一些代码,可以在不到100行的C++代码中对WMA和WAV文件进行编码/解码,并封装在友好的.Net类中。如果您选择这条路线,明智地使用智能指针会有所帮助...


1

是的,我认为这是目前最有前途的解决方案。同一位作者还对Windows Media Format SDK进行了C#移植。我的唯一担忧是代码是否可以在商业项目中使用不太清楚。 - Mark Heath

0
你可以看一下www.mitov.com网站。那里有一些库可能对你有所帮助。如果你想在商业产品中使用,需要购买授权,但价格还是比较合理的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接