Unix音频系统API

时间:2012-03-26 14:57:41

标签: unix audio

我想将现有的Windows应用程序移植到Unix,我找不到有关Unix音频系统的某些信息,如果有人可以分享他们的经验,我将不胜感激。

我怎么能:

  • 获取所有连接到PC的声卡?
  • 获取声卡频道数?
  • 获取每个频道的当前声卡音量?
  • 挂钩音频系统并计算正在播放的声音的响度(类似于Windows 7音量控制 - 它用绿色条绘制“响度”)。 (我理解所涉及的数学但是看系统是否已提供类似的包)?

是否可以为每个Unix系统执行此操作,或者我是否必须以不同的方式为每个系统执行此操作(在FreeBSD,Ubuntu上...)?

2 个答案:

答案 0 :(得分:1)

Unix有很多混乱的音频框架。您可能最终必须以平台/框架相关的方式进行一些工作。我建议开始使用PortAudio / PortMixer。 Audacity使用它,希望它可以满足您的大多数需求。但它应该支持最常见的Unix变种,如Mac OS X,Linux-Alsa,Linux-OSS,FreeBSD以及我想更多。

答案 1 :(得分:1)

在各种现存的Unix上有许多不同的竞争声音API。

Linux似乎已经融合在PulseAudio API上,用于通用声音输出;我的理解是它具有与DirectSound类似的功能。您还应该调查ALSA,这是一个仍然广泛使用的低级API,以及JACK,它与PulseAudio处于同一级别,但专门用于录制工作室类型的工作。这些应该适用于所有合理的Linux最新发行版。 (注意:如果您尝试为Linux作为第三方软件供应商分发已编译代码,那么您正在做错了。分发源代码,分发版将为您编译它。)

文档 PulseAudio和JACK也适用于FreeBSD,但我不知道它们是如何流行的。我不知道任何其他BSD或剩余的专有Unix。

远离任何称自己为“OSS”的东西,除非你别无选择。这本来是一个旧的,过时的内核级声音API的名称,仅适用于Linux。最近一次复活它的尝试(“OSSv4”)AFAICT只设法生产了一个僵尸。