如何解码.Net/Mono中的wav,mp3和/或ogg?
我正在寻找跨平台(Windows,MacOSX和Linux上的.Net和Mono)解码wav,mp3或ogg文件的方式,以便我可以根据需要通过DirectSound或OpenAL播放解码流。如何解码.Net/Mono中的wav,mp3和/或ogg?
可以解码mp3或ogg的解决方案就足够了 - 解码两者都不是必需的。如果它(或其他解决方案)也可以解码wav,那将是理想的,但不是绝对必要的,因为我可能会将我的wav文件转换为mp3或ogg。
一个只能解码wav文件的解决方案只是一个部分解决方案,但我会尽我所能。 ;-)
这就是我已经看过:
- 的DirectSound和ALUT都支持WAV解码,但ALUT已被弃用。
- ffmpeg几乎可以解码任何东西,但它似乎没有跨平台的通用稳定版本?
- 我还没有尝试csvorbis,但它是非常古老的,我不知道它目前的状态是什么。
我们非常欢迎您尝试追求我,上述解决方案其中之一实际上是最佳选择。
谢谢。
对于简单的WAV文件支持,您可以在mcs/class/System/System.Media/AudioData.cs(http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/System/System.Media/)中查看mono的实现。
进行解码OGG音频文件,你可以看看csvorbis模块中单的SN服务器: http://anonsvn.mono-project.com/viewvc/trunk/csvorbis/
我和ffmpeg一起工作,到目前为止我喜欢它。发布版本中几乎没有问题,但它是最有效的。
您应该能够使用System.Media.SoundPlayer直接回放.wav文件。不确定这是否有助于您的用例。
你没有提到的那种牌你正在寻找的。 FMOD,我已经有了非常好的结果,这是免费的非商业项目。它播放各种格式,包括ogg和mp3,并且有一个广泛的API来控制如何播放它们。它是跨平台的,就像你需要的一样。
FMOD很大程度上针对游戏;我不会感到惊讶,如果它已经具有优秀的3D功能(尽管我不确定)。
正如你可以告诉我,我是一个相当迷人的人,这主要是因为让一个空白的C#项目第一次播放一个OGG文件是一件非常痛苦的事情。
在多个平台上重新分配ffmpeg有多容易?具体来说,是否存在与Tao.Ffmpeg或其他某些.Net包装兼容的容易分发的Windows/Mac/Linux二进制文件? – 2009-04-10 19:22:18
应该相当简单..Tversity将其用于所有转码他们的媒体xbox – 2009-04-10 19:31:51