Şu anda mikrofona hangi işlemlerin (varsa) eriştiğini sorgulayabilir miyim?


10

Debian'ı (teknik olarak Raspbian) çalıştırıyorum, bir Star-Trek tarzı sesli komut sistemi almaya çalışıyorum. Çoğunlukla çalışmaya başladım, ancak gizlilik ve tüm bu cazın çıkarları için, mikrofonumun her zaman kayıt yapmasını istemiyorum.

Merak ediyorum, şu anda mikrofona hangi işlemlerin eriştiğini sorgulamanın bir yolu var mı? Fikir şu ki, mikrofonun şu anda ses kaydedip kaydetmediğini söylemek için kendime küçük bir gösterge yapacağım.

Nihai hedefim, bir TV uzaktan kumandası kullanarak mikrofonu açmak ve kapatmak ve açık veya kapalı olması için bir LED göstergesine sahip olmaktır. Tüm donanımları çalıştırdım, sadece yazılıma ihtiyacım var.

Şu anda saf ALSA'da yapılandırıldığına inanıyorum, yani PulseAudio değil, yanlış olabilirim.

Yanıtlar:


6

Önce mikrofon cihazı dosyanızı tanımlayın; benzer bir şey olmalıdır /dev/snd/pcmC0D0c. Aygıt dosyasını bulmanıza yardımcı olmak için, arecordveya benzeri bir test kaydı başlatabilir , sonra yapabilirsiniz lsof | grep '/dev/snd'; tüm programları ve ilişkili aygıt dosyalarını listeler.

Ardından kullanarak mikrofonun kullanımını inceleyebilirsiniz fuser /dev/snd/pcmC0D0c. Bahsedilen cihaz açılırsa, cihaza erişen programın PID'sini döndürecektir.

inotifywait /dev/snd/pcmC0D0cCihazı durum için sürekli sorgulamak yerine durum değişikliklerini tespit etmek için alternatif olarak döngü yapmayı tercih edebilirsiniz .


4

Alan owner_pidiçinde procfsdosyanın statusprogramı o açtı bir PCM cihazı gösterileri:

$ 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.