सरकारी निर्देश एक नेटवर्क पर एक "सीधा संबंध" ज्यादातर लोगों के लिए उम्मीद है कि सिर्फ काम बनाने के लिए है, लेकिन यह पल्सऑडियो लगता है और मुझे लगता है कि अच्छी तरह से साथ नहीं मिलता है: यह मुझे ले गया घंटे । ["प्रत्यक्ष कनेक्शन" के अलावा, आप नीचे वर्णित "सुरंग" विधि का भी उपयोग कर सकते हैं, लेकिन मैं इसे पहले पढ़ने की सलाह देता हूं।]
अब मेरे पास एक (फेडोरा 17) डेस्कटॉप स्ट्रीमिंग साउंड टू पी है। मैंने /etc/pulse
दोनों तरफ की कॉन्फिग फाइलों को छोटा कर दिया है । डेस्कटॉप पक्ष पर:
/etc/pulse/client.conf
# See man pulse-client.conf
default-server = tcp:192.168.2.13:4713
डिफ़ॉल्ट pulseaudio पोर्ट के साथ मेरी पाई का LAN पता। लेकिन यहाँ कुछ है जो तब मुझे थोड़ी देर के लिए उलझन में था - निर्दिष्ट सर्वर के साथ, पल्सेडियो भी शुरू नहीं होगा:
> pulseaudio --start
N: [pulseaudio] main.c: User-configured server at tcp:192.168.2.13:4713, refusing to start/autospawn.
यह अग्रभूमि में चलेगा (शायद इसलिए कि यह पल्स-क्लाइंट.कॉन्फ़ नहीं पढ़ता है?)। हालाँकि , जैसा कि यह पता चला है, आपको इसे डेस्कटॉप (भेजने) की तरफ बिल्कुल भी चलाने की ज़रूरत नहीं है , ऐसा कुछ जो पल्सीडियो डॉक्स में नहीं है। lsof -i -P
इसका उपयोग करने से प्रतीत होता है कि विभिन्न मीडिया प्लेयर के लिए निचले स्तर के प्लगइन्स काम करते हैं।
तो, वह एक लाइन "client.conf" वास्तव में आप सभी को डेस्कटॉप / क्लाइंट साइड पर चाहिए, अगर आप जो करने जा रहे हैं वह नेटवर्क का उपयोग करना है (लेकिन नीचे "अभी भी अधिक जटिलताएं देखें")।
हालाँकि पल्सीडियो डेमॉन (प्राप्त करने / सर्वर की तरफ) को एक सिस्टम सेवा के रूप में चलाया जा सकता है, लेकिन पल्स के डेवलपर्स इसके खिलाफ सलाह देते हैं , और वास्तव में पाई इनिट स्क्रिप्ट पर सिर्फ चेतावनी जारी करने का कारण बनता है: आपको अभी भी शुरू करना है तुम्हरे द्वारा। फेडोरा में इसके लिए एक सिस्टम बूट सेवा प्रविष्टि भी शामिल नहीं है।
इसलिए, pi पक्ष पर, आपको स्पष्ट रूप से प्रारंभ करना चाहिए और इस तरह कॉन्फ़िगर किया गया pulseaudio सर्वर प्रक्रिया को रोकना चाहिए:
/etc/pulse/daemon.conf
# See man pulse-daemon.conf
log-level = info
exit-idle-time = 10800 # 3 hours
आप exit-idle-time
डेमन को अनिश्चित काल तक चालू रखने के लिए -1 का उपयोग कर सकते हैं । खबरदार है कि यह सेकंड है और डिफ़ॉल्ट 20 है (इसका अर्थ है कि अगर आप इसे सेट नहीं करते हैं तो "रहस्यमय तरीके से" मरते रहेंगे)।
/etc/pulse/default.pa
# See man default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.2.0/24
load-module module-alsa-sink device=hw:0,0
चूंकि यह एक नेटवर्क ऐप है, इसलिए इसे रूट के रूप में चलाना अच्छा नहीं है। हालांकि, जैसा कि उल्लेख किया गया है man pulseaudio
, इसे उच्च प्राथमिकता देने की प्रक्रिया को "त्याग" करना भी एक अच्छा विचार है। आप इसे मैन्युअल रूप से कर सकते हैं nice
, लेकिन pulseaudio यह रूट, या pulse-rt
समूह के सदस्यों के लिए स्वचालित रूप से करेगा , यदि निष्पादन योग्य "सेट्यूड" है, तो इसका अर्थ है कि यह कुछ रूट प्राइवेटिज का उपयोग कर सकता है और फिर सही अनप्रिडल यूआईडी में बदल सकता है ( ping
और passwd
यह भी करने की जरूरत है)। तो (रूट, या sudo के रूप में):
chmod u+s /usr/bin/pulseaudio
pulse-rt
जब रसियन पर पल्सेडियो स्थापित होता है, तब कोई समूह नहीं बनता है, इसलिए:
groupadd pulse-rt
यह आपको 1003 की तरह एक gid देगा। उस समूह में उपयोगकर्ता pi जोड़ें (जैसे):
usermod -aG pulse-rt pi
लेकिन रसियन पर, आप अभी भी पाई के रूप में त्याग नहीं कर पाएंगे। उसके लिए, इसमें जोड़ें /etc/security/limits.conf
:
@pulse-rt hard nice -20
@pulse-rt soft nice -20
इन परिवर्तनों को करने से पहले आपको वास्तव में एक लॉग चलाना होगा; यदि आप पीआई के साथ ssh का उपयोग करते हैं, तो उपयोग करें login
। अब आप pulseaudio शुरू कर सकते हैं और यह अपने आप -11 का नाम बदल देगा, जो कि संभवतः अन्य प्रक्रियाओं (एनआईसीई मूल्य को देखें top
) की तुलना में अधिक है ।
नेटवर्क से ध्वनि प्रवाहित करते हुए, pi पर pulseaudio लगभग 10% CPU और एक तुच्छ मेमोरी का उपयोग करता है। :) यह और मेरा डेस्कटॉप एक वायर्ड लैन पर हैं; पल्स स्ट्रीम पीएमसी डेटा (मेरा मानना है), इसलिए बैंडविड्थ उपयोग स्रोत के नमूना दर, 1 केबी / एस और ऊपर से मेल खाती है। यदि आप वीडियो देख रहे हैं, तो दुर्भाग्य से, ध्यान देने योग्य अंतराल है।
फिर भी अधिक जटिलताओं ...
दुर्भाग्य से, मेरे पीसी से विभिन्न ध्वनि अनुप्रयोगों में से किसी ने भी तुरंत काम नहीं किया; mpg123
बिल्कुल नहीं चलेगा। उसके लिए, फेडोरा पर, आपको mpg123-plugins-pulseaudio
पैकेज की आवश्यकता है । ब्राउज़र में फ्लैश सामान के लिए (उदाहरण के लिए, youtude) आपको ज़रूरत है alsa-plugins-pulseaudio
(ये वास्तव में रिमोट सर्वर से कनेक्ट होते हैं)। अन्य डिस्ट्रोस के पास अनुकरणीय पैकेज होना चाहिए। यदि आप पहले pulseaudio का उपयोग कर रहे हैं (मैं नहीं था), तो आप उन्हें पहले से ही स्थापित कर सकते हैं।
केडीई के डेस्कटॉप की घंटी और सीटी भी काम नहीं करती थी। यह हल करने के लिए एक कठिन मुद्दा है, क्योंकि यह एक स्थानीय पल्सएडियो सर्वर के लिए दिखता है, और जैसा कि वर्णित है, प्रत्यक्ष कनेक्शन का उपयोग करने का मतलब है कि कोई भी सर्वर स्थानीय रूप से नहीं चलाया जा सकता है। इसके आसपास का तरीका "सुरंग" विधि का उपयोग करना है।
मॉड्यूल-सुरंग-सिंक
यह पल्सीडियो डॉक्स में उल्लिखित दूसरा तरीका है। इस स्थिति में, आपके पास एक सर्वर होता है, जो दोनों तरफ से चलता है और एक हाथ से दूसरे हाथ पर होता है। ऐसा करने के लिए, "डिफ़ॉल्ट-सर्वर" में टिप्पणी करें /etc/client.conf
और एक स्थानीय /etc/default.pa
युक्त जोड़ें :
load-module module-tunnel-sink sink_name=rpi_tunnel server=tcp:192.168.2.13:4713 sink=bcm1
यदि आप एक डाल नहीं करते हैं sink_name
, तो pulseaudio शुरू नहीं होगा। sink
अनुकरणीय पक्ष है, जो तब भी एक नाम की आवश्यकता है पर सिंक नाम करने के लिए संदर्भित करता है; एक इसी जोड़ने sink_name
के लिए module-alsa-sink
में लाइन default.pa
वहाँ:
load-module module-alsa-sink device=hw:0,0 sink_name=bcm1
सर्वर को दोनों तरफ से शुरू करें और presto ... सॉर्ट करें। जबकि केडीई ब्लिप्स सहित सब कुछ अब किया गया था, ब्राउज़र फ्लैश प्लेबैक बुरी तरह से लड़खड़ा गया। हालांकि, एक अन्य डेस्कटॉप वातावरण के तहत (वास्तव में, सिर्फ एक खिड़की प्रबंधक, fvwm) यह ठीक था।
मैं केडीई को पसंद करता हूं, लेकिन बिना धुंधले रह सकता हूं, इसलिए अब मैं सीधे कनेक्शन के साथ रहना चाहता हूं।
समस्या निवारण
यदि आपको समस्या है, pulseaudio -vvvv --log-level=debug
तो पाई पर उपयोग करने से बहुत सारे डीबगिंग संदेश मिलते हैं। प्रारंभ में जब मुझे पाई पर ध्वनि नहीं मिल रही थी, तो यह एक समस्या "एएलएसए bcm2835 ड्राइवर में एक बग से संबंधित है" जो मुझे अजीब लग रहा था क्योंकि ध्वनि बस एल्सा के साथ ठीक थी, और मुझे यकीन है कि इसके चारों ओर पाई सॉफ्टवेयर है जो निर्भर करता है pulseaudio पर - apt-get remove pulseaudio
और फिर से स्थापित करने के apt-get install pulseaudio
लिए यह तय लग रहा था ... एक समाधान मुझे देखना पसंद नहीं है, लेकिन हे, कम से कम अब मैं हर बॉक्स में वक्ताओं को प्लग किए बिना टीश को सुन सकता हूं। अधिकतर।