我可以查询当前正在访问麦克风的进程(如果有)吗?

jmi*_*ite 12 alsa audio recording devices

我正在运行 Debian(技术上是 Raspbian),试图获得星际迷航风格的语音命令系统。我已经启动并运行了它,但为了隐私和所有爵士乐,我不希望我的麦克风总是录音。

我想知道,有没有办法轮询当前正在访问麦克风的进程(如果有)?我的想法是让自己做一个小指示器来判断麦克风当前是否正在录制音频。

我的最终目标是使用电视遥控器打开和关闭麦克风,并有一个 LED 指示灯来指示它是打开还是关闭。我已经让所有硬件工作正常,我现在只需要软件端。

我相信现在我是在纯 ALSA 中配置的,即不是 PulseAudio,尽管我可能是错的。

Pat*_*que 9

首先识别你的麦克风设备文件;应该类似于/dev/snd/pcmC0D0c. 为了帮助您找到设备文件,您可以使用arecord或 之类的方式开始测试录制,然后执行lsof | grep '/dev/snd'; 它将列出所有程序及其关联的设备文件。

然后您可以使用 来查看麦克风的使用情况fuser /dev/snd/pcmC0D0c。如果该设备被打开,它将返回访问该设备的程序的 PID。

您可能更喜欢循环inotifywait /dev/snd/pcmC0D0c,以检测状态的变化,而不是不断轮询设备的状态。


CL.*_*CL. 6

领域owner_pidprocfs文件status的PCM装置显示哪个程序已经打开它:

$ grep owner_pid /proc/asound/card*/pcm*/sub*/status
/proc/asound/card2/pcm0p/sub0/status:owner_pid   : 1803
$ ps -p 1803
  PID TTY          TIME CMD
 1803 pts/0    00:00:00 aplay
Run Code Online (Sandbox Code Playgroud)