Ответ на этот вопрос: "Да, можно."
Однако есть некоторые тонкости.
1. Система должна иметь pipewire как основной звуковой сервер, и pipewire-pulse как слой совместимости с фичами от pulseaudio. Причем, хотя теоретически это решение может работать и с родной ему пульсой, но на практике оно непригодно для вывода через пульсу ВСЕГО звука, разве что музыку из файлов слушать. Latency у пульсы уж слишком большое, приходится обязательно ставить большой буфер, а это ведет к отставанию звука от изображения. У pipewire с этим НАМНОГО лучше. Хотя результат будет так же сильно зависеть от п. 2.
2. Wi-Fi должно быть как минимум по стандарту 802.11g. а лучше - более новым (т.е. n, aс и т.д.) Только в этом случае сам wi-fi линк не будет вносить неприемлемую задержку. Хоть сам по себе g ныне и достаточно стар и есть у всех, но WI-FI устройства любят автоматически скидывать скорость и протокол "назад в прошлое" если качество канала становится плохим, либо "не договорились" из за личной несовместимости. Так что бывает, что по характеритикам железок там ожидается ac, а по факту - аж до b откатилось.
3. Решение для внутренней локальной доверенной сети - никакой авторизации там нету. Компьютер начинает транслировать свой звук любому желающему (клиенту). Можно лишь обрезать доступ к порту всем кроме какого-то набора адресов (или даже одного адреса) с помощью firewall но это все равно не "запертая на ключ дверь" а "крючочек на калитке". Так что не стоит такое делать, если у вас компьютер голым интерфейсом в интернет.
Если эти требования есть, можно переходить к практике.
- На телефон/планшет ставим вот это: https://play.google.com/store/apps/deta ... ocolplayer - сие есть просто плеер, который умеет играть поток нужного формата.
- Запускаем, настройки оставляем по умолчанию за исключением адреса - туда надо вбить IP вашего компьютера который будет транслировать звук, и порта - туда лучше вбить что-то нестандартное т.к. на стандартном порту 4711 у многих почему-то не работает. Так что вбиваем 12345, например. Так же желательно поставить галку Enable network retries. Далее жмем иконку "играть" (треугольник). С телефоном пока все.
- На компьютере ставим пакет pipewire-pulse если еще нету.
- Делаем проверку возможностей:
systemctl --user restart pipewire-pulse
pactl load-module module-simple-protocol-tcp port=12345 record=true
Если все сделано верно и pipewire достаточно свежий - звук играющий в этот момент на компьютере начнет дублироваться на телефоне. Но пока мы лишь проверили систему, работать будет до перезагрузки.
Чтобы оно работало постоянно надо сделать вот что:
- Идем в /etc/pipewire и смотрим есть ли там что-то похожее на файл pipewire-pulse.conf. Если нету даже самого каталога /etc/pipewire - не страшно. Тогда:
- Идем в /usr/share/pipewire, и ищем там образец все того-же pipewire-pulse.conf.
- Копируем этот файл (откуда нашли) себе в ~/.config/pipewire - место где лежит индивидуальная настройка каждого пользователя.
- Открываем его на редактором, и ищем строчку
context.modules = [
, и сразу после нее вставляем вот такой кусок конфига:
Код: Выделить всё
{ name = libpipewire-module-protocol-simple
args = {
# Provide capture stream, clients can capture data from PipeWire
capture = true
#
# Provide playback stream, client can send data to PipeWire for playback
#playback = true
#
# The node name or id to use for capture.
#capture.node = null
#
# The node name or id to use for playback.
#playback.node = null
#
#audio.rate = 44100
#audio.format = S16
#audio.channels = 2
#audio.position = [ FL FR ]
#
# The addresses this server listens on for new
# client connections
server.address = [
"tcp:12345"
]
}
}
Далее делаем рестарт pipewire-pulse -
systemctl --user restart pipewire-pulse
и если сделано правильно - телефон будет цепляться сразу без команды pactl...Убедившись что все работает как надо подводим черту:
systemctl --user enable pipewire-pulse
- запускать автоматически при входе пользователя в систему. Да, это не общесистемный сервис а частный, одного пользователя. Кстати, по этому - не вздумайте делать это от root или использовать где-то в процессе sudo. root здесь не только не нужен но и вреден.
И с точки зрения сети - сервером у нас здесь является компьютер, а клиентом - телефон (точнее особый плеер на нем), т.е. как бы "наоборот" от видимого функционала.
Дополнительные материалы: https://gitlab.freedesktop.org/pipewire ... PulseAudio
Далее остаются твики: на телефоне имеет смысл пробовать уменьшать настройку Buffer Size до тех пор пока сохраняется устойчивое качество звука - чем она меньше, тем меньше отставание звука от изображения. У меня звук сораняется даже при 10-15 ms, а вот если меньше - уже начинается треск или прерывания.
Можно поиграться с настройками rate, format, channels - это уже надо делать синхронно и на компе и на телефоне. (Каналы - это моно или стерео. А position - куда какой канал, если скажем левый начнет в правом ухе играть).
Тестировалось на manjaro. Но в минте, по идее тоже должно работать с переходом на pipewire. Ну и в других системах где он есть или возможен как вариант. Ну и разумеется решение чувствительно к качеству Wi-Fi. Не столько скорости, сколько отсутствие потерь пакетов и "класс" линка, т.е задержка ему критична - ping-ом можно померять. У меня между телефоном и компом те самые 10-15ms получаются...