मैं एक पीसीएम डिवाइस पर ALSA का उपयोग करके कुछ ऑडियो डेटा प्लेबैक करना चाहता हूं। उदाहरण के तौर पर मैंने this sample example डाउनलोड किया है और इसे अपने पीसी में चलाया है। यह ठीक काम करता है जब कोई अन्य प्रक्रिया वर्तमान में ध्वनि कार्ड का उपयोग नहीं कर रही है। लेकिन यह कुछ भी नहीं चलता है जब किसी अन्य प्रक्रिया ऑडियो डिवाइस का उपयोग करता है (यानी, मीडिया गीत खेलने खिलाड़ी) और शो त्रुटि निम्न -ALSA: साझा मोड में एक पीसीएम डिवाइस खोलें
Playback open error: Device or resource busy
इस उदाहरण के स्रोत कोड को देखते हुए मैं कह सकते हैं कि snd_pcm_open समारोह लाइन 882 पर इस त्रुटि को फेंक रहा है। यह डिवाइस व्यस्त है क्योंकि वर्तमान में एक और प्रक्रिया इसका उपयोग कर रही है।
मैंने रिवर्स तरीके से भी कोशिश की - पहली बार उदाहरण शुरू किया, फिर एक गीत शुरू करने का प्रयास किया। इस मामले में मीडिया प्लेयर निष्क्रिय रहता है, प्रगति पट्टी के बगल में "निष्क्रिय" दिखा रहा है (मैं बंशी का उपयोग कर रहा हूं)। मुझे लगता है कि snd_pcm_open
डिवाइस संसाधन का अनन्य अधिकार प्राप्त करता है ताकि कोई अन्य प्रक्रिया इसका उपयोग न कर सके।
लेकिन मुझे यह नहीं चाहिए। मैं किसी विशेष डिवाइस की आवश्यकता के बिना ऑडियो डिवाइस पर ध्वनि बजाना चाहता हूं ताकि पीसी में अन्य प्रक्रियाएं ऑडियो डेटा को आउटपुट करने के लिए एक ही डिवाइस साझा कर सकें।
मैं यह कैसे कर सकता हूं? मैं एक पीसीएम डिवाइस कैसे खोल सकता हूं ताकि अन्य प्रक्रियाएं एक ही डिवाइस को साझा कर सकें?
नहीं, मेरे पास ओएसएस संगतता परत सक्षम नहीं है, और मैं वास्तव में इस पर भरोसा नहीं करना चाहता हूं। मैंने भी/proc/asound/devices की जांच की और वहां डिवाइस सूची देखी (हालांकि मैं उस सूची को प्रोग्रामेटिक रूप से ला सकता हूं)। मैं विभिन्न प्लेबैक उपकरणों तक भी पहुंच सकता हूं। लेकिन इनमें से कोई भी वास्तव में यहां मुद्दा नहीं है। मैं जानना चाहता था कि क्या मैं साझा मोड में एक ही डिवाइस खोल सकता हूं। –