3

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

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

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

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

我一直在阅读本指南,并且(不)令人惊讶的是它说:

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

那么,你推荐我什么?

4

1 回答 1

4

考虑到其他选项,PortAudio 是一个奇怪的选择。

我个人会从所有东西中抽象出来并使用 GStreamer。音频在 Linux 上可能是一个可怕的混乱(作为一个长期的受害者)。让 Gstreamer 处理它可以让您忘记它,继续前进,而不必再考虑它。

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

我肯定会确保您正在为最受欢迎的设置进行开发(我认为目前是 PulseAudio),这样您就不会最终陷入释放并且陷入抱怨的人池中关于声音不起作用。

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

于 2010-06-13T22:17:46.453 回答