如何在.Net / Mono中解码wav,mp3和/或ogg?

时间:2009-04-10 19:02:57

标签: .net mono mp3 wav oggvorbis

我正在寻找一种跨平台(.Net和Windows上的Mono,MacOSX和Linux)方式解码wav,mp3或ogg文件,以便我可以根据需要通过DirectSound或OpenAL播放解码流。

可以解码mp3或ogg的解决方案就足够了 - 解码两者都不是必需的。如果它(或其他解决方案)也可以解码wav,那将是理想的,但并非绝对必要,因为我可能将我的wav文件转换为mp3或ogg。

只能解码wav文件的解决方案只是部分解决方案,但我会采取我能得到的解决方案。 ; - )

以下是我已经看过的内容:

  • DirectSound和Alut都支持WAV解码,但Alut已被弃用。
  • ffmpeg几乎可以解码,但它似乎没有跨平台的通用稳定版本?
  • 我还没有尝试过csvorbis,但它已经很老了,我不确定它的现状是什么。

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

感谢。

7 个答案:

答案 0 :(得分:4)

您还没有提到您正在寻找的那种许可。 FMOD我的成绩非常好,可以免费用于非商业项目。它播放各种格式,包括ogg和mp3,并具有广泛的API来控制如何播放它们。它是跨平台的,就像你需要的那样。

FMOD在很大程度上瞄准游戏;如果它已经具有出色的3D功能(虽然我不确定),我不会感到惊讶。

正如你所知道的那样,我非常喜欢粉丝,这主要是因为第一次让一个空白的C#项目播放OGG文件让人感到非常轻松。

答案 1 :(得分:1)

您应该可以使用System.Media.SoundPlayer直接播放.wav文件。不确定这是否有助于您的使用案例。

答案 2 :(得分:1)

为了简单支持WAV文件,您可以在mcs / class / System / System.Media / AudioData.cs(http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/System/System.Media/)中查看mono的实现。

要解码ogg音频文件,您可以查看mono的sn服务器中的csvorbis模块: http://anonsvn.mono-project.com/viewvc/trunk/csvorbis/

答案 3 :(得分:0)

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

答案 4 :(得分:0)

为了部分回答我自己的问题,事实证明编写自己的WAV加载器非常容易。我用这篇文章描述了wav文件格式:

http://www.sonicspot.com/guide/wavefiles.html

答案 5 :(得分:0)

一如既往,fmod是你的答案...... 请随时在http://www.fmod.org/index.php/download#FMODExProgrammersAPI

上解决您遇到的所有问题

答案 6 :(得分:-1)

https://sites.google.com/site/cobnut3d/

SlimDX.DirectSound - 是C#的代码示例。