我意识到我问了一个类似于before的问题,但我想要做的事情的计划已经有所改变,而且参数也有所不同。
基本上,我正在寻找在Mac和Windows上解码和输出音频的最佳选择。理想情况下,两个平台之间所需代码不会有任何差异。我只是希望能够传递一个文件路径或HTTP URL,让它播放具有暂停,搜索等功能的音频。
它必须能够开箱即用解码MP3和AAC而不依赖于操作系统(如完全依赖于操作系统的Qt的Phonon)。除此之外的任何其他编解码器都将是一个非常好的奖励。
我看过像libavcodec这样的东西,据说它可以解码任何东西,但却无法弄清楚如何让它工作。到目前为止,我看到的图书馆似乎也已准备好用于Mac和Linux或Windows和Linux,但不适用于Mac 和 Windows。
它不需要是开源的,但如果它需要在商业产品中使用。只要它不太昂贵且易于使用,我就可以发牌。
最后,虽然C / C ++会更受欢迎,但是如果有一些东西适用于C#/ Mono,那也没关系。
对于适合此事情的任何建议?
答案 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解码器。