gpt4 book ai didi

c++ - 跨平台声音API

转载 作者:可可西里 更新时间:2023-11-01 16:36:29 31 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




我正在研究开发一个需要实时音频流的应用程序。我更愿意使用一些用 C 或 C++ 编写的跨平台(windows/linux/BSD)开源库,尽管使用各自操作系统的 Sound API 编写它仍然是一种选择。

我已经阅读了一些关于各种声音库的内容,包括 SFML、SDL 和 PortAudio。诚然,我还没有对 FreeBSD 和 Linux 中的 Sound 进行足够的研究(这两者之间的相似程度如何?)

主要要求将是

  • 从选定的麦克风/麦克风获取音频以通过网络发送,
  • 将数据发送到选择的输出设备,
  • 处理声音(过滤、清除噪音、多路复用流等),但是一旦我有了音频数据就可以做到这一点,库本身不需要能够做到这一点。
  • 具有相当低的延迟

  • 我主要担心的是,这些提到的 API 似乎主要针对游戏(其中声音通常从磁盘加载,并且不涉及太多录音(如果有的话),而不是通过网络流式传输,录音和播放之间具有同等重要性。

    有没有人有任何关于这些或其他声音 API 的指针/警告/建议,或者关于在各自操作系统的 API 中实现这一点的优点/缺点?

    笔记:
    而这个:“要求我们推荐或查找一本书、工具、软件库、教程或其他场外资源的问题是 Stack Overflow 的题外话”当人们也考虑“因为他们倾向于吸引固执的答案和垃圾邮件”,那么我认为这个问题不应该被关闭。寻找所描述的此类库的人将很难找到任何东西,而这个问题的答案实际上总结了所有可用的选项。因此,这在“一般涵盖......程序员常用的软件工具”中。已接受答案的类别。

    最佳答案

    PortAudio 是您所描述的应用程序的绝佳选择——它可以在所有这些平台上运行,用 C 编写,提供低延迟,并且具有回调和阻塞 I/O 选项。它绝对满足您的要求,并且不是专门针对游戏的。事实上,我想说还有其他 api 更适合游戏,而 PortAudio 更适合通用音频 I/O,例如类似 voip 的应用程序,如您的应用程序、音频播放器、专业音频应用程序、录音、软件 radio ,等等。

    您可能会考虑的另一个选项是 RTAudio,我不太熟悉它。我的理解是它更简单(没有阻塞 I/O AFAIK),并且支持更多平台,包括移动操作系统,尽管 PortAudio 的人正在努力。

    您关于 FreeBSD 与 Linux 的问题:Linux 使用 ALSA,而其他 unix 使用 OSS。 OSS 和 ALSA 都提供了兼容层,所以 ALSA 也有 OSS 兼容,反之亦然,但根据我的经验,这两个兼容层都存在 bug。不过,也许自从我上次使用它以来情况已经好转了。

    一些 linux 桌面在 ALSA 之上运行 PulseAudio。我不确定这是否适用于 FreeBSD。出于某种原因,ALSA 在大多数系统上默认配置为独占模式。虽然这在理论上很容易解决,但配置文件很奇怪,大多数用户还没有这样做,而且永远不会这样做,这意味着一旦 PulseAudio 接管,您就无法再直接访问 ALSA 设备,因此您可能希望拥有PulseAudio 驱动程序也是如此,除非你想让你的用户改变他们的配置(如果你的应用程序需要非常低的延迟,你可能会这样做)。

    我很确定 PortAudio 支持 PulseAudio,尽管它可能会或可能不会在网站上说。我会在邮件列表上询问并在此处更新。

    更新:邮件列表上有人认为您可以使用 Alsa 驱动程序访问 PulseAudio。这对我来说是(很棒!)消息,但它就是这样。

    关于c++ - 跨平台声音API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11151278/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com