6

在 C# 中将 WAV 文件转换为 WMA(反之亦然)的最佳解决方案是什么?实际上,我已经使用 Windows Media Encoder SDK 实现了这一点,但至少可以说,必须将 Windows Media Encoder 与我的应用程序一起分发是很麻烦的。Windows Media Format SDK 的大部分 API 标记为已弃用。看起来我可以从 Windows SDK 中使用一些 DirectX 媒体对象 (DMO),但是要编写大量的互操作。

我想知道对于可以执行转换的非托管库是否有一个很好的托管包装器。它需要一个允许它作为闭源商业应用程序的一部分分发的许可证。

4

5 回答 5

1

我没有亲自尝试过(所以不确定它是否是“最佳”解决方案),但http://www.codeproject.com/KB/audio-video/WmaCompressor.aspx看起来它应该满足您的要求......

于 2008-09-15T16:29:35.207 回答
1

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

BASS 和 BASS.Net 都可以被许可用于商业用途,并收取合理的费用(每个 100 欧元)。

于 2008-09-18T10:39:58.327 回答
1

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

于 2008-10-17T15:34:08.423 回答
1

首先,看这个:

http://windowsmedianet.sourceforge.net/

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

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

于 2010-09-02T09:32:37.613 回答
0

您可以查看www.mitov.com。那里有一些图书馆可能会有所帮助。我相信,您需要购买一份副本才能运送到商业产品中,但我认为这是一个合理的价格。

于 2008-10-20T17:01:51.520 回答