1

我意识到我之前问过一个类似的问题,但是我想做的事情的计划已经有了一些进展,参数也变得有点不同。

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

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

我看过像 libavcodec 这样的东西,据说它可以解码任何东西,但还没有弄清楚如何让它工作。到目前为止,我看到的库似乎也适用于 Mac 和 Linux 或 Windows 和 Linux,但不是 MacWindows。

它不需要是开源的,但如果它需要可用于商业产品。只要它不太昂贵且易于使用,我就可以许可某些东西。

最后,虽然 C/C++ 是首选,但如果有一些东西可以与 C#/Mono 一起使用,那也没关系。

有什么建议可以解决这个问题吗?

4

2 回答 2

2

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

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

它非常易于使用。以下是如何播放 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 允许您创建和路由几乎任何可以想象的类型的流程链,并且免费供个人和专有使用:)

于 2012-05-11T18:34:03.360 回答
0

开箱即用解码 MP3 和 AAC

我不知道有任何音频库可以如此轻松地做到这一点。问题是有关 MP3 解码的许可证问题。

我在这篇文章中讨论了一些选项,它们适用于Windows/Mac OS X,但我不确定它们是否具有 C# 绑定。

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

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

它带有一个示例,展示了如何通过PortAudio在 Windows/Mac 上播放歌曲。

于 2012-04-24T20:35:18.323 回答