Чи можу я запитати, які процеси (якщо такі є) зараз мають доступ до мікрофона?


10

Я запускаю Debian (технічно Raspbian), намагаючись отримати систему голосових команд у стилі Star-Trek. Я в основному працює і працює, але в інтересах приватності та всього цього джазу я не хочу, щоб мій мікрофон завжди записувався.

Мені цікаво, чи існує спосіб опитування, які процеси, якщо такі є, зараз мають доступ до мікрофона? Ідея полягає в тому, щоб я зробив собі невеликий індикатор, щоб сказати, чи в даний час мікрофон записував звук чи ні.

Моя кінцева мета - увімкнути та вимкнути мікрофон за допомогою пульта дистанційного керування телевізором та встановити світлодіодний індикатор, якщо він увімкнено чи вимкнено. У мене все апаратне забезпечення працює, мені просто потрібне закінчення програмного забезпечення зараз.

Я вважаю, що зараз я налаштований на чисту ALSA, тобто не на PulseAudio, хоча я можу помилитися.

Відповіді:


6

Спочатку визначте файл пристрою мікрофона; повинно бути щось подібне /dev/snd/pcmC0D0c. Щоб допомогти вам знайти файл пристрою, ви можете розпочати пробну запис із arecordтаким чи іншим, потім зробіть lsof | grep '/dev/snd'; він перелічить усі програми та пов'язаний з ними файл пристрою.

Тоді ви можете заглянути за допомогою мікрофона за допомогою fuser /dev/snd/pcmC0D0c. Він поверне PID програми, що отримує доступ до пристрою, якщо зазначений пристрій відкрито.

Ви можете скористатись циклом inotifywait /dev/snd/pcmC0D0c, щоб виявити зміни в стані, а не постійно запитувати пристрій на статус.


4

Поле owner_pidу procfsфайлі 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.