Kann ich abfragen, welche Prozesse (falls vorhanden) derzeit auf das Mikrofon zugreifen?

10

Ich verwende Debian (technisch Raspbian) und versuche, ein Sprachbefehlssystem im Star-Trek-Stil zu erhalten. Ich habe es größtenteils zum Laufen gebracht, aber im Interesse der Privatsphäre und des ganzen Jazz möchte ich nicht, dass mein Mikrofon immer aufzeichnet.

Ich frage mich, ob es eine Möglichkeit gibt, abzufragen, welche Prozesse, falls vorhanden, derzeit auf das Mikrofon zugreifen. Die Idee ist, dass ich mir einen kleinen Indikator machen würde, um festzustellen, ob das Mikrofon gerade Audio aufzeichnet oder nicht.

Mein oberstes Ziel ist es, das Mikrofon mit einer TV-Fernbedienung ein- und auszuschalten und eine LED-Anzeige zu haben, ob es ein- oder ausgeschaltet ist. Ich habe alle Hardware-Sachen zum Laufen gebracht, ich brauche nur das Software-Ende.

Ich glaube, dass ich im Moment in reinem ALSA konfiguriert bin, dh nicht in PulseAudio, obwohl ich mich irren könnte.

jmite
quelle

Antworten:

6

Identifizieren Sie zuerst die Datei Ihres Mikrofongeräts. sollte etwas ähnliches sein /dev/snd/pcmC0D0c. Um Ihnen beim Auffinden der Gerätedatei zu helfen, können Sie eine Testaufzeichnung mit arecordoder ähnlichem starten und dann Folgendes tun lsof | grep '/dev/snd': Es werden alle Programme und die zugehörige Gerätedatei aufgelistet.

Dann können Sie die Verwendung des Mikrofons mit überprüfen fuser /dev/snd/pcmC0D0c. Es wird die PID des Programms zurückgegeben, das auf das Gerät zugreift, wenn das Gerät geöffnet ist.

Möglicherweise möchten Sie inotifywait /dev/snd/pcmC0D0calternativ eine Schleife verwenden, um Statusänderungen zu erkennen, anstatt das Gerät ständig nach dem Status abzufragen.

Patrice Levesque
quelle
4

Das Feld owner_pidin der procfsDatei statuseines PCM-Geräts zeigt an, welches Programm es geöffnet hat:

$ 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
CL.
quelle