Linux,C ++音频捕获(只是麦克风)库

时间:2010-06-13 22:06:50

标签: c++ linux audio signal-processing alsa

我正在开发一个音乐游戏,它就像一个明星,但不是唱歌,你必须玩recorder。它被称为oFlute,它仍处于早期开发阶段。

在游戏中,我捕捉麦克风输入,然后进行简单的FFT分析,并将结果与​​典型录音机的频率进行比较,从而得到播放音符。

一开始,我使用的音频库是RtAudio,但我不记得为什么我切换到PortAudio,这正是我目前使用的。 问题是指,它会不时地随机崩溃或停止捕获,就像麦克风没有声音一样。

我的问题是,在Linux上捕获麦克风输入的最佳选择是什么?我只需要打开,读取和关闭来自麦克风的字节流。

我一直在阅读this guide,而且(un)令人惊讶的是它说:

  

我不认为PortAudio对于类Unix操作系统来说是非常好的API。

那么,你推荐我什么?

1 个答案:

答案 0 :(得分:6)

鉴于其他选项,PortAudio是一个奇怪的选择。

我个人会抽象出一切并使用GStreamer。音频在Linux上可能是一个可怕的混乱(作为长期受害者说话)。让Gstreamer处理这个让你忘记它,继续前进而不必再考虑它。

OpenAL可能是游戏开发者中最受欢迎的,它应该支持大多数系统(尽管你 会有“乐趣”让它与PulseAudio一起玩得很好)。

我肯定会确保你正在开发最受欢迎的设置(目前是PulseAudio,我估计)所以你不会在你发布的情况下最终陷入困境人们抱怨声音不起作用。

不要听听关于PulseAudio的废话 - 它可能是新的,它可能会占用比准系统ALSA系统更多的资源,但它肯定不会陷入延迟问题。要求人们删除它不是现代桌面发行版的选择,因为它是如此紧密集成(并且也很有用)。