1

Я хочу отправить звук по сети. Мне удалось сделать это с помощью установки переменной окружения PULSE_SERVER=$IP на клиенте. На стороне сервера я запустил paprefs и включил сетевой доступ к глобальным звуковым устройствам.

Это в значительной степени сработало из коробки и имело смысл для меня - я просто перенаправляю звук на удаленный разъем вместо локального разъема.

Тем не менее, в различных руководствах общая настройка, по-видимому, должна быть запущена на клиенте и в качестве экземпляра pulseaudio :

Кто-нибудь может объяснить разницу между двумя настройками? Какие преимущества и недостатки?

1 ответ1

1

Насколько я понимаю

  • Наличие локального сервера позволяет вам использовать различные транспорты (для чего-либо, для чего в PulseAdio есть модуль - например, вы можете загрузить модули RTP или AirPlay для сжатого аудио), тогда как сам libpulse ограничен несжатым "родным" протоколом PulseAudio.

  • Наличие локального сервера позволяет вам прозрачно переключаться между локальным и удаленным выходами. Вы можете добавить удаленный приемник на лету, без необходимости перезапуска программ с новым набором $ PULSE_SERVER. Я думаю, что вы даже можете использовать модуль-объединить-приемник для вывода одного и того же звука через оба устройства (если он может справиться с различиями в задержке, то есть).

  • В этом отношении локальный сервер может даже автоматически обнаруживать удаленные приемники через Avahi (mDNS) - вы включаете его, и они просто появляются в списке.

  • Наличие локального сервера позволяет вам выбрать, какое устройство должно запускать фильтры с интенсивным использованием ЦП (эквалайзер, модули эффектов и т.д.) - вы можете загружать их локально при потоковой передаче на Raspberry Potato вместо того, чтобы получатель делал всю работу.

  • Наличие локального сервера также может улучшить производительность программы, так как некоторые операции libpulse получают локальные ответы вместо того, чтобы ждать удаленного сервера. (Тем не менее, я не уверен, какие операции будут затронуты в реальности. Но я думаю, что это может иметь очень заметное значение, когда сервер не работает.)

Это похоже на использование Xpra или RDP/VNC по сравнению с необработанной пересылкой X11. Наличие промежуточного X-сервера на "удаленной" стороне позволяет ему быть более умным в отношении состояния сети (например, Xpra динамически включает сжатие JPEG, когда обнаруживает задержку), обеспечивает восстановление после ошибок и отсоединение / повторное подключение по требованию, и даже ускорение графического процессора; в то время как прямое указание $ DISPLAY на другой хост означает передачу огромных необработанных растровых изображений и сбой и запись каждый раз, когда соединение прерывается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .