В офіційній інструкції по створенню «прямого зв'язку» в мережі , ми сподіваємося , просто робота для більшості людей, але це , здається , PulseAudio і я не ладнають , що добре: у мене пішло години . [Крім "прямого з'єднання", ви можете також використовувати метод "тунель", описаний далі, але рекомендую ознайомитися з цим спочатку.]
Зараз у мене є (fedora 17) стільниковий потік звуку до пі. Я мінімізував /etc/pulse
конфігураційні файли з обох сторін. З боку робочого столу:
/etc/pulse/client.conf
# See man pulse-client.conf
default-server = tcp:192.168.2.13:4713
LAN-адреса мого пі з типовим імпульсним аудіо портом. Але ось щось мене тоді на деякий час плутало - із вказаним сервером pulseaudio навіть не запускався:
> pulseaudio --start
N: [pulseaudio] main.c: User-configured server at tcp:192.168.2.13:4713, refusing to start/autospawn.
Вона буде працювати на передньому плані (можливо, тому, що тоді не читається імпульс-client.conf?). Однак , як виявляється, вам зовсім не доведеться запускати його на робочому столі (відправляючій) стороні , що не прописано в документах pulseaudio. З lsof -i -P
його допомогою виходить, що плагіни нижчого рівня для різних медіаплеєрів виконують свою роботу.
Отже, цей рядок "client.conf" - це фактично все, що вам потрібно на робочому столі / клієнті, якщо все, що ви збираєтеся зробити, це використовувати мережу (але див. "Ще більше ускладнень" нижче).
Хоча демон pulseaudio (на стороні прийому / сервера) може бути запущений як системний сервіс, розробники імпульсів рекомендують проти нього , а насправді для pi сценарій init просто викликає попередження: вам все одно доведеться запускати це самі. Fedora навіть не включає системний запис служби завантаження для нього.
Отже, з боку pi, ви повинні явно запустити і зупинити процес імпульсного сервера, налаштований таким чином:
/etc/pulse/daemon.conf
# See man pulse-daemon.conf
log-level = info
exit-idle-time = 10800 # 3 hours
Ви можете використовувати -1 для, exit-idle-time
щоб тримати демон нескінченно. Остерігайтеся, це секунди, а за замовчуванням - 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
Оскільки це мережевий додаток, не дуже добре запускати його як root. Однак, як згадувалося в man pulseaudio
, це також хороша ідея "відновлювати" процес, щоб надати йому більш високий пріоритет. Це можна зробити вручну nice
, але pulseaudio зробить це автоматично для root або членів pulse-rt
групи, якщо виконуваний файл "встановлений", це означає, що він може скористатися деякими кореневими привілеями, а потім змінитись на правильний непривірений uid ( ping
і passwd
також потрібно це зробити). Отже (як root, або sudo):
chmod u+s /usr/bin/pulseaudio
Немає pulse-rt
групи, створеної під час встановлення pulseaudio на raspbian, тож:
groupadd pulse-rt
Це дасть вам такий gid, як 1003. Додайте (наприклад) користувача pi до цієї групи:
usermod -aG pulse-rt pi
Але на raspbian ви все одно не зможете відновитись як пі. Для цього додайте до /etc/security/limits.conf
:
@pulse-rt hard nice -20
@pulse-rt soft nice -20
Ви повинні фактично зайти в систему, перш ніж відбудуться ці зміни; якщо ви використовуєте ssh з pi, просто використовуйте login
. Тепер ви можете запустити pulseaudio, і він змінить себе -11, що, мабуть, є більш пріоритетним, ніж більшість інших процесів (дивіться значення NICE у top
).
Під час відтворення звуку, що передається з мережі, pulseaudio на пі використовує близько 10% процесора та тривіальний об'єм пам'яті. :) Він і мій робочий стіл знаходяться в дротовій локальній мережі; імпульсний потік необроблених даних в кубометрі (я вважаю), тому використання смуги пропускання відповідає швидкості вибірки джерела, 1 кБ / с і вище. На жаль, помітний відставання в звуці, якщо ви переглядаєте відео.
Ще більше ускладнень ...
На жаль, жодна з різних звукових програм з мого ПК не працювала відразу; mpg123
не бігав би зовсім. Для цього на Fedora вам потрібен mpg123-plugins-pulseaudio
пакет. Для флеш-файлів у браузері (наприклад, youtude) вам потрібні alsa-plugins-pulseaudio
(ось що насправді підключається до віддаленого сервера). Інші дистрибутиви повинні мати подібні пакети. Якщо ви раніше використовували pulseaudio (я не був), можливо, вони вже встановлені.
Дзвіночки та свистки KDE також не спрацювали. Це важче вирішити, тому що він шукає локальний сервер 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
Запустіть сервер з обох сторін і встановіть ... Хоча зараз все, включаючи помилки KDE, виконувались, відтворення спалаху браузера погано заїкало. Однак, в іншому середовищі робочого столу (насправді, просто менеджер вікон, fvwm) було добре.
Мені подобається KDE, але я можу жити без перерв, тому зараз я буду дотримуватися прямого зв'язку.
Вирішення проблем
Якщо у вас є проблеми, використання pulseaudio -vvvv --log-level=debug
на pi надає безліч повідомлень про налагодження. Спочатку, коли я не зміг отримати звук на пі, це повідомило про проблему, "пов’язану з помилкою в драйвері ALSA bcm2835", яка мені здавалася дивною, оскільки звук був чудовим із просто альзаю, і я впевнений, що навколо цього програмного забезпечення pi є. на pulseaudio - apt-get remove pulseaudio
і повторна установка, apt-get install pulseaudio
здавалося, виправила це ... Не рішення, яке я люблю бачити, але ей, принаймні зараз я можу слухати тиш, не маючи підключаючи динаміки до кожної скриньки. Переважно.