Czy mogę zapytać, które procesy (jeśli istnieją) uzyskują obecnie dostęp do mikrofonu?


10

Używam Debiana (technicznie Raspbian), próbując uzyskać system poleceń głosowych w stylu Star-Trek. Mam go głównie uruchomionego, ale w trosce o prywatność i cały ten jazz nie chcę, żeby mój mikrofon zawsze nagrywał.

Zastanawiam się, czy istnieje sposób na sprawdzenie, które procesy, jeśli w ogóle, uzyskują obecnie dostęp do mikrofonu? Chodzi o to, że stworzyłem sobie mały wskaźnik, aby stwierdzić, czy mikrofon nagrywa dźwięk, czy nie.

Moim ostatecznym celem jest włączanie i wyłączanie mikrofonu za pomocą pilota do telewizora oraz posiadanie wskaźnika LED sygnalizującego włączenie lub wyłączenie. Mam działający sprzęt, potrzebuję teraz oprogramowania.

Wierzę, że teraz jestem skonfigurowany w czystym ALSA, tj. Nie w PulseAudio, chociaż mogę się mylić.

Odpowiedzi:


6

Najpierw zidentyfikuj plik urządzenia mikrofonu; powinno być coś podobnego do /dev/snd/pcmC0D0c. Aby pomóc Ci znaleźć plik urządzenia, możesz rozpocząć nagranie testowe za pomocą arecordlub podobnego, a następnie wykonaj lsof | grep '/dev/snd'; wyświetli listę wszystkich programów i powiązanych z nimi plików urządzeń.

Następnie możesz zerknąć na użycie mikrofonu fuser /dev/snd/pcmC0D0c. Zwróci PID programu uzyskującego dostęp do urządzenia, jeśli to urządzenie zostanie otwarte.

Wolisz zapętlać się inotifywait /dev/snd/pcmC0D0cnaprzemiennie, aby wykryć zmiany stanu, zamiast stale sprawdzać status urządzenia.


4

Pole owner_pidw procfspliku statusurządzenia PCM pokazuje, który program go otworzył:

$ 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.