Як налаштувати мийку PulseAudio?


16

Я намагаюся налаштувати мийку PulseAudio на свій Raspberry Pi, щоб передавати туди всі системні звуки з мого ПК. Який найкращий спосіб зробити це?

Наприклад, чи можна дивитись фільми чи затримка занадто висока? Я спробував це деякий час тому, використовуючи gstreamer, але з затримкою близько 2 секунд, що марно для моїх вимог.


1
Я отримую другу або дві затримки.
goldilocks

Відповіді:


19

В офіційній інструкції по створенню «прямого зв'язку» в мережі , ми сподіваємося , просто робота для більшості людей, але це , здається , 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здавалося, виправила це ... Не рішення, яке я люблю бачити, але ей, принаймні зараз я можу слухати тиш, не маючи підключаючи динаміки до кожної скриньки. Переважно.


Дякую за обширну відповідь. Хоча одне питання: що відбувається з аудіо, що надходить прямо з Pi?
Вінсент

Данно, якщо я коли-небудь пробував це (я більше цього не роблю), але pulseaudio повинен бути мультиплексором, тому він повинен працювати.
золотинки
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.