আমি কি জিজ্ঞাসা করতে পারি কোন প্রসেসগুলি (যদি থাকে) বর্তমানে মাইক্রোফোনটি অ্যাক্সেস করছে?


10

আমি দেবিয়ান (প্রযুক্তিগতভাবে রাস্পবিয়ান) চালাচ্ছি, স্টার-ট্র্যাক স্টাইলে ভয়েস-কমান্ড সিস্টেম পাওয়ার চেষ্টা করছি। আমি বেশিরভাগ ক্ষেত্রে এটি চালু এবং চলমান পেয়েছি তবে গোপনীয়তা এবং সমস্ত জাজের স্বার্থে, আমি চাই না যে আমার মাইক্রোফোন সর্বদা রেকর্ডিং হয়।

আমি ভাবছি, পোল করার কোনও উপায় কি কোন প্রক্রিয়াগুলি, যদি থাকে তবে বর্তমানে মাইক্রোফোনটি অ্যাক্সেস করছে? ধারণাটি হ'ল মাইক্রোফোনটি বর্তমানে অডিও রেকর্ড করছে কিনা তা জানাতে আমি নিজেকে একটু সূচক তৈরি করব।

আমার চূড়ান্ত লক্ষ্য হ'ল একটি টিভি-রিমোট ব্যবহার করে মাইক্রোফোনটি চালু এবং বন্ধ করা এবং এটি চালু বা বন্ধ থাকে কিনা তার জন্য একটি এলইডি সূচক রাখা। আমার কাছে সমস্ত হার্ডওয়্যার স্টাফ কাজ করছে, আমার এখনই সফ্টওয়্যারটি শেষ হওয়া দরকার।

আমি বিশ্বাস করি যে এই মুহুর্তে আমি খাঁটি ALSA অর্থাৎ পালস অডিওতে নয়, যদিও আমি ভুল হতে পারি config

উত্তর:


6

প্রথমে আপনার মাইক্রোফোন ডিভাইস ফাইলটি সনাক্ত করুন; এর মতো কিছু হওয়া উচিত /dev/snd/pcmC0D0c। আপনাকে ডিভাইস ফাইলটি সন্ধান করতে, আপনি arecordবা এর সাথে একটি পরীক্ষা রেকর্ডিং শুরু করতে পারেন , তারপরে lsof | grep '/dev/snd'; এটি সমস্ত প্রোগ্রাম এবং তাদের সম্পর্কিত ডিভাইস ফাইলের তালিকা প্রদর্শন করবে।

তারপরে আপনি মাইক্রোফোন ব্যবহার করে উঁকি দিতে পারেন fuser /dev/snd/pcmC0D0c। এটি ডিভাইসটি অ্যাক্সেস করা প্রোগ্রামের পিআইডি ফিরিয়ে দেবে, যদি বলা হয় ডিভাইসটি খোলা থাকে।

আপনি inotifywait /dev/snd/pcmC0D0cস্থিতির জন্য নিয়মিত ডিভাইসটি পোলিংয়ের পরিবর্তে রাজ্যে পরিবর্তনগুলি সনাক্ত করতে বিকল্প হিসাবে লুপ করতে পছন্দ করতে পারেন ।


4

ক্ষেত্র owner_pidমধ্যে procfsফাইল statusকোন প্রোগ্রাম এটা চালু করেছে একটি পিসিএম ডিভাইস শো:

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