Linux下C ++audio捕获API的最佳实践?

我需要从麦克风function创build一个简单的录音C + +应用程序。

我不能说有没有足够的audioAPI来做到这一点! Pulse,ALSA,/ dev / dsp,OpenAL等。我的问题是目前的“最佳实践”API是什么?

脉冲似乎支持大多数现代发行,但似乎几乎没有文件。 OpenAL是否支持不同的发行版,还是太模糊了? 我错过了吗?
有没有一个简单的答案?

Solutions Collecting From Web of "Linux下C ++audio捕获API的最佳实践?"


Lennart Pottering在这里有一个指导:

http://0pointer.de/blog/projects/guide-to-sound-apis

基本上使用alsa的“安全”子集,那么所有其他重要的子集也应该工作。

除了OpenAL在Linux上工作

编辑:另外pulseaudio有相当不错的doxygen生成的文档在这里和一些其他的东西在这里和一些工具是很好的例子,你可以看到他们在gitweb 这里

此外,我已经写了一些使用脉冲音频输入的代码,你可以在这里看看,但我不知道我处理一切都完全正确,我知道我缺少处理某些情况下的代码…但应该让你开始,如果你去脉冲。

没有简单的答案; 最佳实践取决于您的应用程序将暴露给的上下文和特定用例。

为了最大限度的轻松编程和最广泛的受众,我会选择gstreamer,因为它很快捷,很好地集成在gnome和ubuntu中,并且支持广泛的音频子系统和配置。 这是非常灵活的。

例如,命令:

gst-launch autoaudiosrc ! audioconvert ! flacenc ! filesink location="foo.flac" 

将从麦克风输入创建.flac文件,而不管音频系统(Pulse,ALSA,ESD …)如何。 可以使用这里记录的c / gobject绑定来编写等效的管道。

ps上面的命令需要gstreamer-tools

GStreamer将允许您和最终用户在声音捕获方面拥有最大的灵活性,但其跨平台可行性并不是很好,特别是在OS X上。