适用于 Mac 和 Windows 的音频框架
Audio Framework for Mac and Windows
我意识到我之前问过一个类似的问题,但是关于我想做的事情的计划已经有所进展,并且参数变得有点不同。
基本上,我正在寻找在Mac和Windows上解码和输出音频的最佳选择。理想情况下,两个平台之间所需的代码没有差异。我只是希望能够向它传递文件路径或 HTTP URL,并让它播放具有暂停、搜索等功能的音频。
它必须能够开箱即用地解码MP3和AAC,而不依赖于操作系统(就像Qt的Phonon for Qt完全依赖于操作系统)。除此之外的任何其他编解码器都将是一个非常好的奖励。
我看过像libavcodec这样的东西,据说它可以解码任何东西,但一直无法弄清楚如何让它工作。到目前为止,我看到的库似乎也为Mac和Linux或Windows和Linux做好了准备,但还没有为Mac和Windows做好准备。
它不需要是开源的,但如果它需要在商业产品中使用。我可以许可一些东西,只要它不是太贵且易于使用。
最后,虽然首选 C/C++,但如果有一些东西可以与 C#/Mono 一起使用,那也没关系。
关于对此有用的任何建议?
我为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 允许您创建和路由几乎任何类型的流程链,并且免费供个人和专有使用:)
开箱即用地解码 MP3 和 AAC
我不知道有任何音频库可以如此轻松地做到这一点。问题是有关MP3解码的许可证问题。
我在这篇文章中讨论了一些选项,它们对Windows/Mac OS X有好处,但我不确定它们是否有C#绑定。
如果你愿意自己编写绑定,你可能会对libaudiodecoder感兴趣:
C++跨平台MP3/AAC/WMA/WAV解码器。
它带有一个示例,展示了如何通过PortAudio在Windows/Mac上播放歌曲。
- 用c++阅读音频
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- 为什么这个音频包络不能通过开关的情况?
- catch框架有没有办法比较流或文件
- FFMpeg库:如何在音频文件中精确查找
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用Qt框架在c ++类中创建API调用
- 如何在ECS框架中更新组件数据和通知系统
- 需要反转音频步进公式
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 用于C++的静态二进制检测或二进制重写工具和框架
- 如何在音频处理中使用超能力时间拉伸类
- GoogleMock是否仍然打算与任何测试框架一起使用?
- 带有框架的 QGraphicsTextItem 的 QPropertyAnimation 会使文本抖动
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- C++新手,想知道如何使用VS code 2019播放音频文件
- 如何使用QT或Linux上的任何其他CPP框架播放WMA音频文件
- CPP / JUCE 音频编程框架 - 滑块数组不起作用 - 单个滑块工作
- 适用于 Mac 和 Windows 的音频框架
- 使用IOBluetooth框架的音频数据污染了我的RFCOMM通道