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

Jos*_*ino 4 c++ linux audio signal-processing alsa

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

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

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

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

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

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

那么,你推荐我什么?

Oli*_*Oli 5

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

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

OpenAL的是可能是最流行的游戏开发者,虽然它应该支持大多数系统(虽然你拥有"趣味"得到它打很好用的PulseAudio).

我肯定会确保你正在开发最流行的设置(目前是PulseAudio,我估计)所以你不会在你释放的情况下陷入困境,而你却陷入了人们的呻吟声关于声音不起作用.

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