什么是.NET最佳音频压缩库?

4
我正在寻找一款适用于.NET的优秀音频压缩库。由于许可问题,任何使用MP3的内容都不适用。基本上,我只需要能够将常规WAV音频数据压缩成某种格式,并解压回WAV。最好的情况是代码全部使用.NET(C#或VB.NET),但我认为这不太可能。它应该是无损或相对无损的(与192 MP3一样好),压缩比至少达到4:1。我更喜欢基于缓冲区的API,但文件API也可以。请问有人知道这样的东西吗?
6个回答

3

您是否考虑过使用WMA?如果您使用托管C++或C++/CLI,很容易编写一个托管封装器来包装Windows Media Format SDK。这个程序集可以被更高层次的VB.Net或C#程序集轻松使用。只要您安装了WMP,它甚至具有不需要任何其他依赖项的优点。


2
您考虑过使用.OGG格式吗?我不知道是否有.NET库可用,但libogg和libvorbis C库并不难使用,也经过了很好的测试。对于一个简单的压缩/解压作业,您可以使用两个函数封装器来处理所有详细信息。
很容易在它们周围编写.NET封装器。
好处:
- 没有专利限制 - 即使是闭源项目,也可以使用可用许可证 - 非常好的压缩比率 - 跨平台(可能不太重要,因为您的目标是.NET,但是拥有跨平台功能仍然很好) - 最后但并非最不重要:这是一个非常成熟的库,没有已知的错误,并且有良好的支持。

我希望能找到一些可用的东西,而不会成为一个独立的重大项目。我的C语言太弱了,无法理解libvorbis代码。 - MusiGenesis
你可以很容易地在.NET中使用C DLL。你可能需要注意一下封送,但这是可能的。 - Matthew Scharley
我想要支持Windows和Windows Mobile,所以我需要编译不同版本的DLL,但是由于我的C语言太弱了,无法找出如何做到这一点。 - MusiGenesis

1

FLAC 看起来很有趣。


根据您所编码的内容,您可能会发现很难达到上述提到的2:1压缩比。对于音乐(好吧...至少是我CD收藏中的大部分),我只能平均压缩到约68%。 - moobaa
3
FLAC是一种无损音频压缩格式。对于一种无损算法来说,这其实相当不错。在不失去部分信息的情况下,你只能压缩有限的信息量。 - Matthew Scharley

1

猴子音频是另一个(它甚至可能在.NET中工作)。


0

看看 FMod。它具有良好的音频压缩、播放和 3D 特效功能。它支持许多音频格式。它是用 C 写的,但也有一个很好的 C# 封装。

[[http://www.fmod.org/]]


0
你可以考虑使用OGG编解码器。我不确定是否有任何用.NET编写的OGG编解码器,但它是开源的,所以如果这对你很重要,你应该能够轻松地移植一个。

OGG Vorbis codec


足够正确。与编写/设计自己的相比,“容易”吗? - Matthew Scharley
我已经编写了自己的(非FFT)算法,但它只能得到2:1的结果。至少我在概念上理解MP3风格压缩的工作原理,比我理解OGG Vorbis代码的结构要好。 - MusiGenesis

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