适用于Mac和Windows的音频框架

时间:2012-04-24 19:26:30

标签: c# c++ windows macos audio

我意识到我问了一个类似于before的问题,但我想要做的事情的计划已经有所改变,而且参数也有所不同。

基本上,我正在寻找在Mac和Windows上解码和输出音频的最佳选择。理想情况下,两个平台之间所需代码不会有任何差异。我只是希望能够传递一个文件路径或HTTP URL,让它播放具有暂停,搜索等功能的音频。

必须能够开箱即用解码MP3和AAC而不依赖于操作系统(如完全依赖于操作系统的Qt的Phonon)。除此之外的任何其他编解码器都将是一个非常好的奖励。

我看过像libavcodec这样的东西,据说它可以解码任何东西,但却无法弄清楚如何让它工作。到目前为止,我看到的图书馆似乎也已准备好用于Mac和Linux或Windows和Linux,但不适用于Mac Windows。

它不需要是开源的,但如果它需要在商业产品中使用。只要它不太昂贵且易于使用,我就可以发牌。

最后,虽然C / C ++会更受欢迎,但是如果有一些东西适用于C#/ Mono,那也没关系。

对于适合此事情的任何建议?

2 个答案:

答案 0 :(得分:2)

我为Mac和Windows创建了一个名为“Crosstalk”的C ++音频库。

Crosstalk是一款C ++音频引擎,可让您实时创建和路由音频系统。引擎负责所有音频路由,并为您提供了一个简单的平台来创建系统组件(例如,连接到“低通滤波器”的“Mp3解码器”组件连接到“音频设备”和“文件记录器”)。 / p>

它非常易于使用。以下是如何播放mp3文件的示例(这些组件随引擎一起提供):

XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;

long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);

system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);

mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();

Crosstalk附带的是示例Xcode和Visual Studio项目。

您可以在此处下载Crosstalk并查看API文档和许可详细信息:http://www.adaptaudio.com/Crosstalk

编辑(01-12-2012):

Crosstalk已被一个名为“DSPatch”的开源项目所取代。 DSPatch本质上是Crosstalk背后的路由引擎的升级版本,不再局限于音频处理。 DSPatch允许您创建和路由几乎任何类型的可想象的流程链,并且可以免费用于个人和专有用途:)

答案 1 :(得分:0)

  

开箱即用解码MP3和AAC

我不知道任何音频库如此容易实现。问题是有关MP3解码的许可证问题。

我讨论this post上的一些选项,它们适用于 Windows / Mac OS X ,但我不确定它们是否具有C#绑定。

如果您愿意自己编写绑定,可能会对libaudiodecoder感兴趣:

  

C ++跨平台MP3 / AAC / WMA / WAV解码器。

附带example,其中显示了如何通过PortAudio在Windows / Mac上播放歌曲。