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


10

我正在运行Debian(技术上是Raspbian),试图获得Star-Trek风格的语音命令系统。我已经开始运行它了,但是出于隐私和爵士乐的考虑,我不希望麦克风一直在录音。

我想知道,是否有一种方法可以轮询当前正在访问麦克风的进程(如果有)?我的想法是让自己成为一个指示器,以告诉麦克风当前是否正在录制音频。

我的最终目标是使用电视遥控器打开和关闭麦克风,并通过LED指示灯指示其打开或关闭。我已经完成所有硬件工作,现在只需要软件结束即可。

我相信,虽然我可能是错的,但现在我已配置为纯ALSA,即不是PulseAudio。

Answers:


6

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

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

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


4

领域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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.