在Ubuntu Linux上操作音频输入缓冲区 假设我想在C++中编写一个音频过滤器,它应用在每个音频或特定麦克风/源上,我应该从Ubuntu?

在Ubuntu Linux上操作音频输入缓冲区 假设我想在C++中编写一个音频过滤器,它应用在每个音频或特定麦克风/源上,我应该从Ubuntu?,linux,audio,ubuntu,buffer,audio-recording,Linux,Audio,Ubuntu,Buffer,Audio Recording,编辑,很明显我不知道怎么做,Pulseaudio、ALSA和Gstreamer的角色是什么。提供了访问和控制音频和MIDI硬件的API。ALSA的一部分是一系列内核模式设备驱动程序,而另一部分是应用程序链接的用户空间库。Alsa是单客户机 是一个框架,可帮助多个客户端应用程序访问单个音频接口(alsa是单个客户端)。它提供了一个守护进程,该进程“拥有”音频接口,并为守护进程和使用它的应用程序之间的音频提供IPC传输。这在开源桌面环境中被大量使用。Pulse的使用在很大程度上对应用程序是透明的-他

编辑,很明显我不知道怎么做,Pulseaudio、ALSA和Gstreamer的角色是什么。

提供了访问和控制音频和MIDI硬件的API。ALSA的一部分是一系列内核模式设备驱动程序,而另一部分是应用程序链接的用户空间库。Alsa是单客户机

是一个框架,可帮助多个客户端应用程序访问单个音频接口(alsa是单个客户端)。它提供了一个守护进程,该进程“拥有”音频接口,并为守护进程和使用它的应用程序之间的音频提供IPC传输。这在开源桌面环境中被大量使用。Pulse的使用在很大程度上对应用程序是透明的-他们继续使用alsa API访问音频输入和输出,并进行音频传输和混音。此外,还有一种更针对“专业”音频应用的工具,可能有点用词不当,尽管这里所指的是低延迟音乐制作工具

是一种基于信号图模式的通用多媒体框架,其中组件具有多个输入和输出引脚,并提供转换功能。构建这些组件的图以实现诸如媒体解码之类的操作,并使用特殊节点进行音频和视频输入或输出。它在概念上类似于CoreAudio和DirectShow。这两种都是开源的替代方案,它们的运作路线相似。您在这两者之间的选择取决于API风格和实现语言。特别是,在C语言中实现了一个面向对象的API,VLC是C++。p> 实现您描述的问题的明显方法是实现gStreamer/libAV/VLC组件。如果您想处理音频,然后将其路由到另一个应用程序,可以通过Pulse或Jack将其循环返回

Alsa提供了一个解决方案,但我怀疑从Alsa文档中实现这一点会很困难

您所描述类型的building effects插件的实际体系结构是Steinberg的。有很多开源主机和插件示例可以在Linux上使用,最重要的是,有相当好的文档。与gStreamer/libAV/VLC一样,您可以将音频以不同的方式发送出去


其中,VST可能是最容易掌握的

VST的问题是,主机应该有一个VST插件基础结构,我只想编写一个过滤器,然后让用户决定是否使用此过滤器,而不切换到其他应用程序,同时继续使用他所使用的录制应用程序。@user1824407从您的描述和此评论中,我知道您希望将筛选器应用于现有应用程序。由于Linux台式机的普及和缺乏标准化,我非常确定您将需要截取音频输入,将其路由到运行过滤器的应用程序,然后通过Jack或Pulse返回到应用程序。