Unix 音频系统 API
Posted
技术标签:
【中文标题】Unix 音频系统 API【英文标题】:Unix audio system API 【发布时间】:2012-03-26 14:57:41 【问题描述】:我想将现有的 Windows 应用程序移植到 Unix,但我找不到有关 Unix 音频系统的某些信息,如果有人能分享他们在这方面的经验,我将不胜感激。
我该怎么做:
获取所有连接到 PC 的声卡? 获取声卡通道数? 获取每个声道的当前声卡音量? 连接到音频系统并计算正在播放的声音的响度(类似于 Windows 7 音量控制 - 它用绿色条绘制“响度”)。 (我了解所涉及的数学,但看看系统是否已经提供了类似的包)?是否可以为每个 Unix 系统执行此操作,或者我必须为每个系统执行此操作(在 FreeBSD、Ubuntu...上)?
【问题讨论】:
这里有一个类似的问题和答案:***.com/questions/9345766/… 【参考方案1】:Unix 有一大堆音频框架。您可能最终不得不以平台/框架相关的方式做一些工作。我建议开始使用 PortAudio/PortMixer。它由 Audacity 使用,因此希望它可以满足您的大部分需求。但它应该支持最常见的 Unix 变体,例如 Mac OS X、Linux-Alsa、Linux-OSS、FreeBSD,我想还有更多。
【讨论】:
【参考方案2】:在各种仍然存在的 Unix 上有许多不同的竞争声音 API。
Linux 似乎已经融合了PulseAudio API 用于通用的声音输出;我的理解是,这与 DirectSound 具有相似的功能。您还应该研究ALSA,它是一个仍然被广泛使用的较低级别的API,以及JACK,它与PulseAudio 处于同一级别,但专门用于录音棚类型的工作。这些应该可以在所有最近的 Linux 发行版上使用。 (注意:如果您试图以第三方软件供应商的身份分发 Linux 的编译代码,那么您做错了。分发源代码,分发版将为您编译它。)
文档说PulseAudio 和JACK 也可以在FreeBSD 上使用,但我不知道它们在哪里受欢迎。我不知道任何其他 BSD 或剩余的专有 Unix。
远离任何自称为“OSS”的东西,除非你别无选择。这最初是一个古老的、早已过时的内核级声音 API 的名称,仅适用于 Linux。最近一次尝试复活它(“OSSv4”)AFAICT 只成功地产生了一个僵尸。
【讨论】:
您是否知道获取声音流(使用数字信号处理来计算响度)甚至更好的当前音频的声音“响度”的最简单方法(哪个 API)? 不,抱歉,我从来没有真正用这些编程过。以上是关于Unix 音频系统 API的主要内容,如果未能解决你的问题,请参考以下文章
如何将图像、pdf、音频、视频和任何文件系统从 iphone 本地内存上传到服务器(API)
Android 音频系统:从 AudioTrack 到 AudioFlinger
Unity 音频插件 - MasterAudio 实现音频管理系统