मैं पल्सअडियो और मल्टीसेट के साथ ध्वनि कैसे कॉन्फ़िगर करूं?


12

पूर्ण प्रकटीकरण की भावना में, मैंने अभी यह सवाल ubuntu मंचों पर पोस्ट किया है , लेकिन मुझे लगता है कि इस पर काम करने वाले अधिक प्रमुखों को चोट नहीं पहुंच सकती है।

मेरे पास एक मल्टी-सीट सेटअप है जो काफी अच्छा काम कर रहा है। हॉट प्लगिंग इनपुट डिवाइस अपेक्षित और इस तरह से काम करता है। एकमात्र मुद्दा मैं अभी भी हल नहीं कर पा रहा हूं प्रत्येक सीट के लिए ऑडियो मिल रहा है।

यहाँ काम करने के लिए ऑडियो प्राप्त करने के मेरे प्रयासों का सारांश है:

  1. ~ / .Pulse / default.pa को गतिशील रूप से कॉन्फ़िगर किया गया है जिसके आधार पर उपयोगकर्ता लॉग ऑन करता है

  2. सिस्टम-वाइड उदाहरण के रूप में पल्सेडियो लोड करें।

    • यह काम नहीं कर सका। कोई भी ऑडियो हार्डवेयर उपयोगकर्ताओं के लिए सुलभ नहीं था।
  3. ConsoleKit में सीटें चिह्नित करने के लिए udev नियमों का उपयोग करें। Udv दिशानिर्देशों का पालन यहां पाया गया: http://www.freedesktop.org/wiki/Software/systemd/multiseat

    • मुझे नहीं लगा कि यह काम करेगा, हालांकि यह irc.freenode #pulseaudio में किसी के द्वारा काम करने की "गारंटी" थी

उन प्रयासों में से कोई भी सफलता नहीं मिली, यही वजह है कि मैं अब मदद के लिए समुदाय की ओर रुख करता हूं। यह काफी संभव है कि सुझाए गए तरीके काम करते हैं और मैंने इसके कुछ पहलू को गड़बड़ कर दिया है, आइडीके। यह उस पहेली का अंतिम टुकड़ा है जिसकी आवश्यकता है इससे पहले कि मैं जाऊं और MultiseatX पेज को अपडेट करूं, उबंटू 12.04 के लिए निर्देश शामिल कर सकता हूं।

स्थिति पर मेरी समझ: कॉन्सोलकिट (एक एसी के बारे में कुछ) द्वारा चिह्नित के रूप में पल्सेडियो तक पहुंच सक्रिय सत्र तक ही सीमित है। CK एक समय में केवल एक सत्र को सक्रिय के रूप में चिह्नित कर सकता है। जीवन का यह सरल सा तथ्य मुझे विश्वास दिलाता है कि समाधान में सिस्टम-वाइड उदाहरण के रूप में चलाया जा रहा पल्सीडियो शामिल होना चाहिए। प्रत्येक उपयोगकर्ता को पल्स सर्वर से कनेक्ट होना चाहिए और सभी हार्डवेयर के सबसेट तक सीमित होना चाहिए। हो सकता है कि प्रत्येक उपयोगकर्ता लोकलहोस्ट, आईडीके के माध्यम से पल्स सर्वर से कनेक्ट हो। मुझे पता है कि मेरे प्रयासों और उनके असफल परिणामों की परवाह किए बिना, मैं हमेशा sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wavकिसी भी हार्डवेयर में कुछ खेलने के लिए उपयोग करने में सक्षम था ।

मैं तिनके पर लोभी हूँ और अब पिछले कुछ बालों के नीचे हूँ, जिन्हें मैं अपने सिर से बाहर निकाल सकता हूँ। कृपया, मुझे यह पता लगाने में मदद करें ताकि हम धन साझा कर सकें। आपके अनुरोध पर किसी भी अतिरिक्त जानकारी की आवश्यकता होगी।


क्या मैं सही ढंग से समझ पाया: यह 2 सीट 2 साउंडकार्ड है? क्या आपने छोटे कस्टम फ़ाइलों के साथ default.pa को बदल दिया है या कस्टम लाइनों को अन्यथा अपरिवर्तित default.pa में जोड़ दिया है?
५२ पर तक्षक

काश मैं यहाँ टिप्पणी पर ध्यान दिया होता ... तो हाँ, यह 2 साउंड कार्ड है। एक ऑनबोर्ड ऑडियो है, दूसरा जीपीयू में एचडीएमआई से ऑडियो है। छोटे कस्टम फ़ाइल ~ / .pulse में हैं लेकिन /etc/pulse/default.pa अछूता है। तो उस स्थिति में, जहाँ तक मैं समझता हूँ, ~ / .pulse / default.pa /etc/pulse/default.pa को प्रतिस्थापित नहीं करेगा, बल्कि इसके साथ विलय करेगा।
एंथनी

दो कस्टम .pa फ़ाइलों के साथ डिफ़ॉल्ट की पूरी सामग्री के साथ प्रयास करें। जहाँ दो मौजूदा फ़ाइलों में भिन्न डिवाइस खंड जोड़ा जाता है (यदि वे विलय नहीं किए जाते हैं)।
ताकत

इसके अलावा, सिस्टम-वाइड मोड में pulseaudio रन द्वारा पढ़ा गया default.pa /etc/pulseघर में नहीं होना चाहिए ।
ताकत

मैं इसे ज्यादातर काम कर रहा हूँ। मैं रिपोर्ट करूँगा जब मेरे पास यह सब होगा।
एंथनी

जवाबों:


7

मैंने कई घंटों तक ऑनलाइन शोध किया है, विभिन्न सेटअपों का परीक्षण किया है और पल्सीडियो देवों से बात की है। इस सब की निचली रेखा यह है कि सामान्य उपयोगकर्ता मोड में चल रहे पल्सीडियो केवल सक्रिय सत्र को अनुमति देगा जैसा कि ConsoleKit द्वारा ऑडियो हार्डवेयर तक पहुंचने के लिए चिह्नित है। चूंकि वर्तमान कंसोलकिट केवल एक समय में एक सत्र को सक्रिय करने के लिए चिह्नित करने में सक्षम है, इसका मतलब है कि हमें सिस्टम-वाइड पल्सेडियो का चलना चाहिए। उल्टा: प्रत्येक सीट में व्यक्तिगत ऑडियो हो सकता है। नकारात्मक पक्ष: सभी ऑडियो हार्डवेयर किसी भी उपयोगकर्ता के लिए उपलब्ध हैं और एटी विल में हेरफेर किया जा सकता है। यह एक इंटरनेट कैफे या अन्य सार्वजनिक सेटिंग के लिए एक आदर्श स्थिति नहीं है जहां सुरक्षा एक वास्तविक चिंता है। अपनी साइट सुरक्षा नीति बनाते समय इसे ध्यान में रखें। यह केवल प्रशंसापत्र के लिए pucucontrol निष्पादन को सीमित करने के लिए विवेकपूर्ण हो सकता है।

हमेशा की तरह, अपनी सभी डिफ़ॉल्ट कॉन्फिग फाइलों का बैकअप बना लें। यदि आपने बैक अप के बिना अपने कॉन्फिगर्स के साथ छेड़छाड़ की है, तो आप apt-get -d install pulseaudio के साथ pulseaudio पैकेज पुनः प्राप्त कर सकते हैं। यह केवल पैकेज (/ to / var / cache / archives / apt) डाउनलोड करेगा और आप डिफ़ॉल्ट कॉन्फिगर को पुनः प्राप्त करने के लिए सामग्री निकाल सकते हैं। ध्यान रखें कि client.conf वहां शामिल नहीं है।

पल्सेडियो को सिस्टम-वाइड डेमॉन के रूप में चलाने के लिए, हमें कुछ फ़ाइलों को संपादित करने की आवश्यकता है।

1.) / आदि / डिफ़ॉल्ट / pulseaudio

    PULSEAUDIO_SYSTEM_START=1

2.) /etc/pulse/daemon.conf - अधिक जानकारी के लिए आदमी पल्स-डेमन.कॉन देखें।

    daemonize = yes
    local-server-type = system

3.) /etc/pulse/client.conf

    autospawn = no

हमें उपयोगकर्ताओं को पल्स-एक्सेस समूह में जोड़ने की भी आवश्यकता है।

sudo usermod -a -G pulse-access <username>

अब जब सभी उपयोगकर्ता ऑडियो हार्डवेयर का उपयोग करने में सक्षम हैं, तो हमें प्रत्येक उपयोगकर्ता द्वारा उपयोग किए जाने वाले हार्डवेयर का चयन करने की आवश्यकता है। यह pavucontrol का उपयोग करके किया जा सकता है। कृपया ध्यान रखें कि सेटिंग्स प्रति USER संग्रहीत हैं और सीट का पालन नहीं करेंगे। यदि उपयोगकर्ता सीटें बदलते हैं, तो आपको वांछित ऑडियो हार्डवेयर को फिर से चुनना होगा।

Pulseaudio पर अतिरिक्त टिप्पणियाँ

मुझे उम्मीद थी कि सीट ऑडियो काम करने के लिए एक और अधिक सुंदर समाधान होगा। मल्टीसेट में एक सिस्टमवाइड पल्सीडियो का उपयोग करने से कई कमियां हैं और रिबूट के बीच पूरी तरह से स्थिर नहीं है। मैंने एक सिस्टमवाइड इंस्टेंस शुरू करने का प्रयास किया था और उपयोगकर्ता के उदाहरण इसे लोकलहोस्ट के माध्यम से सर्वर के रूप में कनेक्ट करते हैं। जब से pulseaudio --start इसे स्रोत daemon.conf चलाया जाता है तब से काम नहीं लगता है।

सांत्वना के बारे में

एक सामान्य प्रति-उपयोगकर्ता pulseaudio चलाते समय हम जो मुद्दा देखते हैं, वह यह है कि एक सीट पर हार्डवेयर की पहुंच होती है और अन्य सभी में डमी आउटपुट होता है। यह ConsoleKit के पूरी तरह से जागरूक नहीं होने के कारण है। सीके हमारी सभी सीटों को सीट 1 के सत्र के रूप में मानता है और केवल एक सत्र को सक्रिय के रूप में चिह्नित कर सकता है। इस तथ्य को getfacl / dev / snd / * चलाकर देखा जा सकता है। यह विचार मेरे साथ हुआ कि हम उपयुक्त / देव / snd / फाइलों के acl को संपादित करने में सक्षम हो सकते हैं, जिनके आधार पर $ $ एक विशेष उपयोगकर्ता का उपयोग कर रहा है। यह एक विकल्प है जो मैंने नहीं खोजा है। कृपया इस परिकल्पना की खोज करके और अपने निष्कर्षों के साथ दस्तावेज़ को संपादित करके मल्टीसेट कारण में योगदान करने पर विचार करें।

के लिए Multiseat शाखाओं ConsoleKit , GDM-2.3 और GDM-3.x मौजूद हैं, जो स्वत: multiseat कार्यक्षमता के लिए प्रदान करना चाहिए है।

अतिरिक्त नोट्स

1.) यह समझदारी होगी कि उपयोगकर्ताओं को लोडिंग मॉड्यूल DISALLOW_MODULE_LOADING = 1 से हटा दिया जाए।

2.) ऑटोस्कोप = नहीं पूरी तरह से आवश्यक नहीं है जैसा कि मेरे उदाहरण फ़ाइल में देखा गया है। यह कोई समस्या नहीं है।


1
एंथनी, आपकी पोस्ट के लिए धन्यवाद यह मददगार था! मैंने उसी मुद्दे का सामना किया और पाया कि सिस्टम मोड में पल्सीडियो को चलाने के बिना वांछित परिणाम कैसे प्राप्त किया जा सकता है। एक नज़र डालें: unix.stackexchange.com/a/104344/34581 । मुझे उम्मीद है कि यह उपयोगी होगा।
इलिया रोस्तोवत्सेव

1

स्थिति पर मेरी समझ: कॉन्सोलकिट (एक एसी के बारे में कुछ) द्वारा चिह्नित के रूप में पल्सेडियो तक पहुंच सक्रिय सत्र तक ही सीमित है। CK एक समय में केवल एक सत्र को सक्रिय के रूप में चिह्नित कर सकता है।

मल्टीसैट समर्थन को जोड़ने के लिए कंसोल कंसोल पर एक पैच है ; इससे यह सभी सक्रिय सीटों को रिपोर्ट करने की अनुमति देगा। शायद इससे आपकी समस्या ठीक हो जाएगी। इसे प्रदर्शन प्रबंधक के साथ सहयोग की आवश्यकता है, और जीडीएम के पुराने संस्करणों में एक पैच है जो इस समर्थन को जोड़ता है।

मुझे एक पीपीए से संशोधित कंसोलकिट और जीडीएम पैकेजों का उपयोग करते हुए नैट्टी (11.04) में काम करने वाली मल्टीसीट मिली । मैंने अभी तक नेट्टी से अपग्रेड नहीं किया है - मुझे यह पता लगाने में बहुत समय लगा कि इसे कैसे काम करना है, और मुझे चिंता है कि लाइटकैम पैच कंसोल के साथ काम नहीं करेगा।

EDIT: मुझे ध्यान देना चाहिए कि फेडोरा 17 में कुछ प्रभावशाली मल्टीसिट फीचर हैं, जिनमें से कुछ क्वांटल में होंगे। उनके पास एक विकी पेज है जो उनके दृष्टिकोण का वर्णन करता है । उबंटू बस फेडोरा के दृष्टिकोण की नकल नहीं कर सकता क्योंकि इसके लिए महत्वपूर्ण परिवर्तनों की आवश्यकता होगी; फेडोरा सिस्टमड और जीडीएम का उपयोग करता है जबकि उबंटू अपस्टार्ट और लाइटडीएम का उपयोग करता है।


जबरदस्त हंसी। मैंने मल्टीसेट कंसोल और जीडीएम शाखाओं के बारे में जाना है। आप देखेंगे कि मैंने उन्हें Ubuntu MultiseatX पृष्ठ में जोड़ा है जिसे मैं अपडेट करने की प्रक्रिया में हूं। दरअसल, ck शाखा gdm शाखा पर निर्भर करती है। वे ओरेकल के एक ही व्यक्ति द्वारा बनाए रखा जाता है। आपके द्वारा संदर्भित PPA भी कुछ ऐसा है जिसके बारे में मुझे पता है और 12.04 के लिए नहीं है। मैं इसे एक तरह से करने की कोशिश कर रहा हूं जिसमें मानक रिपोज के बाहर जाना शामिल नहीं है। फेडोरा और सिस्टमड के बारे में ... सिस्टम मल्टीसैट दृष्टिकोण एनवीडिया बाइनरी के साथ काम नहीं करेगा।
एंथनी

0

मैं हाल ही में PulseAudio और Multiseat के साथ समस्या को हल करने की कोशिश कर रहा था। यह देखते हुए कि कोई सुंदर समाधान नहीं था, मेरा काम नेटवर्क का उपयोग करना था।

यह समाधान मेरे परिदृश्य को सूट करता है क्योंकि मैं वह उपयोगकर्ता हूं जो अक्सर मशीन में होता है और मेरी सीट सबसे अधिक बार लॉग इन होती है। और मेरी सीट बाएं हाथ से कॉन्फ़िगर की जाती है और कोई अन्य इसका उपयोग नहीं करता है।

~/.config/pulse/default.paमैंने अपने सिस्टम कॉन्फ़िगरेशन की प्रतिलिपि बनाई /etc/pulse/default.paऔर निम्न पंक्ति जोड़ी:

load-module module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

अन्य उपयोगकर्ताओं की pulseaudio सेटिंग में, एक सुरंग जोड़ें - और कई लोगों को, यदि आपकी जरूरत है - कुछ के साथ -

load-module module-tunnel-sink server=127.0.0.1 sink=alsa_output.pci-0000_00_XX.X.iec958-stereo

अपनी मशीन में मैच करने के लिए सिंक नाम बदलें। आप एक फ्रेंडली नाम कॉन्फ़िगर करने का निर्णय ले सकते हैं - जिसका अर्थ है कि आपको अपनी pulseaudio सेटिंग्स फ़ाइल में कॉन्फ़िगर करना चाहिए - लेकिन मैंने अभी दिए गए नाम को इसके साथ देखकर उपयोग किया है pacmd list-sinks

यह एक सुरुचिपूर्ण समाधान नहीं है, मैं शायद अपने अगले रिग में @Anthony द्वारा सुझाए गए सिस्टम-वाइड कॉन्फ़िगरेशन का उपयोग करने की कोशिश करूंगा, लेकिन अगर आपके पास बहुत सारे कार्ड हैं और बस एक या कुछ सिंक / स्रोत साझा करना चाहते हैं, तो यह एक है अधिक "सर्जिकल" समाधान।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.