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

时间:2010-05-26 19:30:05

标签: c++ linux audio audio-recording

我需要创建一个带有麦克风功能的简单录音的C ++应用程序。

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

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

3 个答案:

答案 0 :(得分:4)


Lennart Pottering在这里有一个指南:

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

基本上使用alsa的'safe'子集,然后所有其他重要的子集也应该工作。

禁止OpenAL在Linux上运行

编辑: 另外,pulseaudio有相当好的doxygen生成文档here和其他一些东西here,其中一些实用程序是很好的例子,你可以在gitweb中看到它们here

此外,我已经编写了一些使用脉冲进行音频输入的代码,您可以查看它here,但是我不确定我是否完全正确地处理了所有内容,而且我知道我缺少处理某些代码的代码情况......但是,如果你选择脉搏,这应该可以让你开始。

答案 1 :(得分:1)

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

为了最方便的编程和最广泛的受众,我会选择gstreamer因为它快速而直接,很好地集成在gnome和ubuntu中,并支持各种音频子系统和配置。它非常灵活。

例如,命令:

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

将从麦克风输入创建.flac文件,无论音频系统如何(Pulse,ALSA,ESD ...)。可以使用文档here中的c / gobject绑定编写等效的管道。

p.s上面的命令需要gstreamer-tools

答案 2 :(得分:0)

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

相关问题