ฉันสามารถค้นหาว่ากระบวนการใด (ถ้ามี) กำลังเข้าถึงไมโครโฟนอยู่หรือไม่


10

ฉันใช้ Debian (เทคนิค Raspbian) พยายามหาระบบสั่งงานด้วยเสียงแบบ Star-Trek ฉันได้รับมันส่วนใหญ่และทำงาน แต่เพื่อความเป็นส่วนตัวและแจ๊สที่ทั้งหมดฉันไม่ต้องการให้ไมโครโฟนของฉันบันทึกเสมอ

ฉันสงสัยว่ามีวิธีการสำรวจความคิดเห็นว่ามีกระบวนการใดบ้างที่กำลังเข้าถึงไมโครโฟนอยู่หรือไม่? แนวคิดก็คือฉันจะทำให้ตัวเองเป็นตัวบ่งชี้เล็กน้อยเพื่อบอกว่าไมโครโฟนกำลังบันทึกเสียงอยู่หรือไม่

เป้าหมายสูงสุดของฉันคือการเปิดและปิดไมโครโฟนโดยใช้รีโมททีวีและมีไฟ LED สำหรับเปิดหรือปิด ฉันมีฮาร์ดแวร์ทั้งหมดที่ทำงานได้ฉันเพียงแค่ต้องจบซอฟต์แวร์ตอนนี้

ฉันเชื่อว่าตอนนี้ฉันกำหนดค่าใน 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.