使用 .NET 将 WAV 转换为 WMA

Posted

技术标签:

【中文标题】使用 .NET 将 WAV 转换为 WMA【英文标题】:Convert WAV to WMA using .NET 【发布时间】: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 【参考方案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。那里有一些图书馆可能会有所帮助。我相信您需要购买一份副本才能在商业产品中发货,但我认为这是一个合理的价格。

【讨论】:

以上是关于使用 .NET 将 WAV 转换为 WMA的主要内容,如果未能解决你的问题,请参考以下文章

如何将wav转化为mp3或者wma??

怎样把(波形)声音格式(wav)转换成mp3、wma等其他音频格式?

请问MP3 OGG WMA WMV WAV 和AAC格式之间有啥区别啊

求ffmpeg音频压缩代码(wav压缩成wma)

在 CF.NET 2.0 中播放 WMA 文件

使用 NAudio 将 WAV 流转换为 Opus