Linux声音:如何“聆听”任意来源播放的任意声音?

时间:2020-07-10 16:47:08

标签: linux audio kernel userland

好的,您好,极客和其他人^^

我一直想知道在Linux上是否有一种“好的”(又名普遍接受)的方式来挂接/拦截数据流和操作。 “如何编写一段有关文件的创建/修改/删除的信息?”,“如何编写一段可以注册到处理按键,鼠标移动,触摸屏操作的东西的代码?” ,“如何编写一段有关CPU / GPU /内存/光盘/电池主题的代码?”等等。

也许您就像“好吧,老兄,读一下effing文档!”现在,但是实际上与我有关的是流血的事实,即Linux应该是开放的。就来源而言,当然是这样。但是就行为而言,它只是一块11维的泥土。什么东西少了?正确:一个(意思是:一个!)API。

好吧,呼吸,呼吸,让我们再次冷静下来。

返回主题。我怎样才能挂接到Linux的音频系统上,以收听从任何来源到任何目标的当前正在播放的声音?当然,它必须是实时的(与我们常用的操作系统所能接近的时间一样。)

要变得愚蠢(这不是我当前要解决的问题,但这是一个简单而直接的示例),我该如何收听系统上播放的任何音频,并让Raspberry上的每个节拍的LED闪烁,就像这样低于40 Hz,大于-6 dB,小于100 ms?

仅添加一个提示,为什么所有这些都可以使Linux成为更好的系统...假设您可以按照我所说的方式截取视频流的音频。甚至不是最近的硬件也能够进行语音到文本的识别,并使用一些外部API(例如google或open *)进行翻译。因此,您可以编写一个应用程序来截取电影的音频部分,将其语音转换为文本,并在屏幕上以字幕显示翻译,而无需编写一个全新的播放器。

在相同的方向上,让我们由内核处理音频。硬件供应商可以拦截Userland中的音频路由,以根据其板,扬声器,耳机来优化声音,而无需复杂的驱动程序模块。假设有一个扬声器.sa库,可以将其安装到mono_speakers.sa库或phones.sa库中,通过配置进行组装,然后由sound.sa库使用,该库可能会像一个phone.sa或7+ 1个mono_speakers.sa,依次可以使用1、2、3个扬声器,每个扬声器由XML oder JSON配置进行配置。

对不起,我在做梦...;)

0 个答案:

没有答案