【问题标题】:Convert WAV to WMA using .NET使用 .NET 将 WAV 转换为 WMA
【发布时间】:2008-09-15 16:11:20
【问题描述】:

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

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

【问题讨论】:

  • 您有任何将 wma 转换为 wav 的示例吗?我见过的所有样本都只是 wav 到 wma

标签: .net audio wma


【解决方案1】:

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

【讨论】:

  • 是的,我认为这是目前最有前途的解决方案。同一作者还做了 Windows Media Format SDK 的 C# 移植。我唯一担心的是,目前还不清楚代码是否可以用于商业项目。
【解决方案2】:

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

BASS 和 BASS.Net 都可以被许可用于商业用途,但需支付合理的费用(每个 100 欧元)。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      首先,看这个:

      http://windowsmedianet.sourceforge.net/

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-02
          • 1970-01-01
          • 2017-08-23
          • 2012-07-30
          • 2018-11-28
          • 2015-04-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多