使用.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
我想知道是否有一个很好的管理包装可以执行转换的非托管库。它需要一个许可证,允许它作为封闭源商业应用程序的一部分进行分发。
我还没有尝试过个人,但http://www.codeproject.com/KB/audio-video/WmaCompressor.aspx看起来应该符合你的要求(如果它是“最好”的解决方案,因此不知道)...
是的,我认为这是目前最有前途的解决方案。同一作者还完成了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类中。聪明的指针明智的使用可以帮助你,如果你沿着这条路线...
首先,看看这个:
http://windowsmedianet.sourceforge.net/
然后,搜索IWMWritter - 和初始化它的各种方式。您将提供原始PCM数据,并将写出wma文件。
标记我的答案请参阅这方面的更多信息。
你有任何将wma转换为wav的示例吗?我见过的所有样品都只是wav – 2008-12-19 21:42:04