代码之家  ›  专栏  ›  技术社区  ›  José Tomás Tocino

Linux,C++音频捕捉(只需麦克风)库

  •  3
  • José Tomás Tocino  · 技术社区  · 15 年前

    我正在开发一个音乐游戏,它就像一个歌星,但不是唱歌,你必须玩 recorder . 它叫 oFlute 还处于早期发展阶段。

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

    一开始,我使用的音频库是 RtAudio 但是我不记得我为什么要换 PortAudio ,这是我当前使用的。这个 问题 就是说,有时它会随机崩溃,或者停止捕捉,就像麦克风没有声音一样。

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

    我一直在读书 this guide 令人惊讶的是,它说:

    我不认为portaudio对于类Unix操作系统是很好的API。

    那么,你推荐我什么?

    1 回复  |  直到 15 年前
        1
  •  6
  •   Oli    15 年前

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

    我个人会从所有东西中抽象出来,使用gstreamer。在Linux上,音频可能是一个可怕的混乱(说起来像个长期受苦的人)。让gstreamer处理这件事让你忘记它,继续前进,而不必再去想它。

    不过,Openal可能是游戏开发者最受欢迎的,它应该支持大多数系统(尽管 享受“乐趣”,让它和普尔西乌迪奥一起玩得愉快。

    我肯定会确保你正在开发最流行的设置(我估计现在是Pulseaudio),这样你就不会在一个你释放的情况下,你会陷入一个对声音不起作用的抱怨的人群中。

    不要听关于Pulseaudio的胡说八道——它可能是新的,可能比一个准系统需要更多的资源,但它肯定不会陷入延迟问题。要求人们删除它不是现代桌面发行版的一个选择,因为它是如此紧密集成(也很有用)。