2009-04-10 58 views
5

我正在寻找跨平台(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,但它是非常古老的,我不知道它目前的状态是什么。

我们非常欢迎您尝试追求我,上述解决方案其中之一实际上是最佳选择。

谢谢。

回答

0

我和ffmpeg一起工作,到目前为止我喜欢它。发布版本中几乎没有问题,但它是最有效的。

+0

在多个平台上重新分配ffmpeg有多容易?具体来说,是否存在与Tao.Ffmpeg或其他某些.​​Net包装兼容的容易分发的Windows/Mac/Linux二进制文件? – 2009-04-10 19:22:18

+0

应该相当简单..Tversity将其用于所有转码他们的媒体xbox – 2009-04-10 19:31:51

1

您应该能够使用System.Media.SoundPlayer直接回放.wav文件。不确定这是否有助于您的用例。

4

你没有提到的那种牌你正在寻找的。 FMOD,我已经有了非常好的结果,这是免费的非商业项目。它播放各种格式,包括ogg和mp3,并且有一个广泛的API来控制如何播放它们。它是跨平台的,就像你需要的一样。

FMOD很大程度上针对游戏;我不会感到惊讶,如果它已经具有优秀的3D功能(尽管我不确定)。

正如你可以告诉我,我是一个相当迷人的人,这主要是因为让一个空白的C#项目第一次播放一个OGG文件是一件非常痛苦的事情。