【问题标题】:RtAudio or PortAudio, which one to use?RtAudio 或 PortAudio,使用哪一个?
【发布时间】:2023-04-07 23:29:02
【问题描述】:

我正在考虑将RTAudio + RTMidiPortAudio + PortMidi 用于需要实时音频和midi 处理的新项目。任何有使用这两个库经验的人都可以推荐一个吗?为什么? 我更喜欢 C++ API 而不是 C API,但这还不足以让我做出决定。

【问题讨论】:

  • 你最终找到了一个好的库吗?我有完全相同的问题...我只是对 PortAudio 做了一些小实验,它看起来很复杂(非常低级),它缺少官方论坛(我讨厌邮件列表)。 RTAudio 缺乏文档。 STK 有烦人的 #include 政策。 Juce 做的太多了,它并没有真正专注于实时音频/midi。我想依赖一个由大型社区/文档支持的维护跨平台库。
  • 我正在使用 RTAudio,它运行良好,但我仍然想试一试 PortAudio。选择 RTAudio 的主要原因是它有一个 c++ api 而不是 c,而且它被开放框架使用,有时我会使用它。

标签: audio portaudio


【解决方案1】:

很长一段时间以来,我一直在锁定完美匹配的需求。 现在我更喜欢

  • 端口音频:

    • (+) 在 Windows 上,支持 asio、DirectSound、MME、WASAPI(头疼)
    • (+) 在 Linux 上,支持 ALSA、OSS、Pulse、JACK
    • (+) 在 Mac 上,支持 Core Audio
    • (+) 非常活跃的项目,一些优秀的大师正在开发它。
    • (+) 被许多非常成功的应用程序使用 + C++ 不是原生的,但有一个绑定集成到主分支(我认为是从去年开始的)
    • (+) 使用 libsdnfile 真的很可靠(很棒)
    • (-) 不是原生 c++
    • (-) 项目、配置、集成很烦人
    • (-) 适用于多个平台(debian、osx、7:我自己的经验)
    • (-) 大部分文档都很糟糕,而且在谷歌搜索答案时大多已过时且相互矛盾
  • rt 音频

    • (+) 在 Windows 上,支持 asio、DirectSound、WASAPI(截至 2014 年 10 月 4 日)
    • (+) 在 Linux 上,支持 ALSA、OSS、Pulse、JACK
    • (+) 在 Mac 上,支持 Core Audio
    • (+) 本机 C++,
    • (+) 真的很容易上手
    • (-) 不太活跃
    • (-) 大部分文档很烂,而且大多过时且相互矛盾 搜索答案时

其他解决方案:

  • Qt:

    • (-) 很重,不是我要找的东西
    • (-) 实时音频支持是最新的并且不稳定
    • (+) 如果您使用 QtCreator,则易于使用(如果将 QtAddon 与视觉一起使用,则更容易使用,而与 xcode 一起使用则更少)
    • (+) MIDI 集成
  • 果汁:

    • 类似java的设计
    • 很重,不是我要找的东西
    • 简单,效果很好(使用专业音频)
    • midi集成,aiff和wave,flac的文件读取

【讨论】:

  • 感谢您的回答! Slightly OOT:您使用哪种 IDE 进行此类工作?我使用过 xcode、vim、TextMate 和/或 MakeFiles,但我对它们的看法不一。
  • 无论如何它都是一个旧线程:我在 Windows 上使用视觉,或 qtcreator 用于 qt。在 Mac 上我使用 xcode。但是对于端口音频,我在 linux 上只使用了 makefile 和 gedit。我会说:xcode 和视觉,很棒,但你有 2 个项目文件。如果你在 linux 上工作,你可以做一个 makefile(或使用像 scons 或 cmake 这样的工具),如果你在 linux 上工作,只要尝试找到一个在 mac 和 windows 上可移植的工具(使用 mingw),一切都应该是正确的. Cmake 很难,但如果你掌握了它,你就是王者,因为 1 个项目,完全可移植
  • github.com/thestk/rtaudio 似乎很活跃并且现在支持 WASAPI(已经在帖子的最后提到)。
【解决方案2】:

这是 Linux 音频开发列表中出现的相关线程。我将为我的新应用程序采用的方法是为 jack 编写代码并在 linux+jack 中进行所有调试,然后将 RTAudio 用于我最终发布的端口。

祝你好运!

Getting jack sample rate and buffersize with portaudio

【讨论】:

【解决方案3】:

PortAudio Java 绑定过于简单。例如,您不能为设备访问设置独占模式或共享模式,这很遗憾,因为它有效地从您那里窃取了 7 毫秒的延迟 - 特别是如果您在 Windows 10 下捕获麦克风输入(通常不需要共享访问)。如果你计算输出,你会失去 14 毫秒 RTT 来监控你的麦克风/东西。

RtAudio 现在似乎支持 WASAPI,但我不确定它是否比 PortAudio 更好。但是有 Java 绑定吗?问题中没有被问到,我知道,但仍然...... :)

另一个相当新的项目是XtAudio。它将设备的独占和共享访问作为不同的设备集暴露给前端,并且通常似乎具有更好的 API 支持。不要以为它支持 MIDI。

【讨论】:

  • XtAudio 的链接现在指向一些垃圾邮件,可能该域已被重新获取。
猜你喜欢
  • 2011-06-12
  • 2010-09-30
  • 2015-12-03
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
相关资源
最近更新 更多