Posso interrogare quali processi (se presenti) stanno attualmente accedendo al microfono?


10

Sto eseguendo Debian (tecnicamente Raspbian), cercando di ottenere un sistema di comando vocale in stile Star-Trek. L'ho principalmente installato e funzionante, ma nell'interesse della privacy e di tutto quel jazz, non voglio che il mio microfono registri sempre.

Mi chiedo, c'è un modo per sondare quali processi, attualmente, stanno accedendo al microfono? L'idea è che mi farei un piccolo indicatore per dire se il microfono stava attualmente registrando l'audio o no.

Il mio obiettivo finale è quello di accendere e spegnere il microfono usando un telecomando TV e di avere un indicatore LED per se è acceso o spento. Ho tutto il materiale hardware funzionante, ho solo bisogno che il software finisca ora.

Credo che in questo momento sono configurato in ALSA puro, cioè non PulseAudio, anche se potrei sbagliarmi.

Risposte:


6

Innanzitutto identifica il file del dispositivo del microfono; dovrebbe essere qualcosa di simile a /dev/snd/pcmC0D0c. Per aiutarti a trovare il file del dispositivo, puoi avviare una registrazione di prova con arecordo simili, quindi fare lsof | grep '/dev/snd'; elencherà tutti i programmi e il file del dispositivo associato.

Quindi puoi sbirciare l'utilizzo del microfono usando fuser /dev/snd/pcmC0D0c. Restituirà il PID del programma che accede al dispositivo, se detto dispositivo è aperto.

È possibile preferire eseguire il loop in inotifywait /dev/snd/pcmC0D0calternativa, per rilevare i cambiamenti di stato anziché eseguire costantemente il polling dello stato del dispositivo.


4

Il campo owner_pidnel procfsfile statusdi un dispositivo PCM mostra quale programma lo ha aperto:

$ 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.