LINUX.ORG.RU

Pulseaudio over Network. Остановка воспроизведённого времени.

 


2

2

Запускаю воспроизведение в qmmp, перебрасываю воспроизведение на удалённый сервер pulseaudio. В момент переброски звука, время воспроизведения останавливается.

Аналогичный эффект можно наблюдать на youtube, правда вместе со звуком останавливается и картинка.

Последствия: youtube (при просмотре через html5, через флеш звук вообще хрипит тыц, тыц) не проигрывается видео, при этом загрузка всего файла приостанавливается.

Изначально вся задумка была для yandex.музыки, но там всё точно так. Таймер воспроизведённого не работает, загружается не вся песня, но даже если её и загрузить предварительно при локальном воспроизведении, то следующая всё равно не начинает проигрываться.

Какие будут мысли у ЛОР'а? Можно ли что-то подкрутить в пульсе, чтобы таймер пошёл, песни продолжили закачиваться.

★★★★★

Последнее исправление: Jurik_Phys (всего исправлений: 1)

Давно сталкивался с таким. Они сейчас перепиливают (с нуля) модуль передачи звука по сети, новая реализация работает гораздо лучше.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Давно сталкивался с таким.

В какую сторону копать, чтобы починить?

новая реализация работает гораздо лучше.

У меня 7-я пульса из бэкпортов дебиана.

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от intelfx

Разобрался. У меня на сервере в default.pa прописано

load-module module-zeroconf-publish
благодаря чему наличие/отсутствие данного pulseaudio сервера в локальной сети определяется автоматически, без настройки на клиенте:
load-module module-tunnel-sink-new sink_name=edifier   server=server_name rate=96000

Надо покопать ещё немного.

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

Вот в том и дело, что модуль автообнаружения подгружает module-tunnel-sink (т. е. старую реализацию). Попробуй отключить автообнаружение и вручную подгрузить -new.

У меня таким образом решились все проблемы со стримингом звука. Если не поможет — останется только скастовать AEP и/или зарепортить баг.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Jurik_Phys

7-я пульса из бэкпортов

Это не имеет значения. Новая реализация стриминга ещё нигде не используется по дефолту.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Да, есть авто обнаружение через zeroconf и есть ручное поднятие тунеля.

При ручном поднятии, действительно время бежит (согласно qmmp) и предполагается, что всё работает.

Но для того, чтобы на клиенте был поднят тунель, необходимо, чтобы сервер уже был включен, а у меня это условие очень редко выполняется. После включения сервера, требуется вручную сделать рестарт пульсы на клиенте. Пока оставляю этот вариант.

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

Зачем рестартить пульсу на клиенте? Делай pacmd load-module ....

Ещё можно пропатчить модуль обнаружения zeroconf, если охота добиться совсем автоматизма.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Зачем рестартить пульсу на клиенте? Делай pacmd load-module

pacmd load-module module-tunnel-sink-new sink_name=edifier server=dirac rate=96000
pacmd update-sink-proplist "edifier" device.description="Edifier.R2800"

То, что нужно, правда надо обратить внимание, что имя устройства - «Edifier.2800» в терминале надо писать без пробела, хотя в конфиге можно и с пробелом. При наличии пробела вылазит ошибка «Failed to parse proplist.»

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

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от intelfx

ребята. а можете показать ваш конфиг пульса с этой новой реализацией (клиент и сервер с поверхностным описанием этих двух-трех строк в конфиге). что-то я колдовал пытаясь перебросить звук на малинку и закончилось это постоянным хрипом при воспроизведении любых звуков с удаленной машины (сама малинка при этом могла играть не хрипя). увы сейчас не помню точно какой модуль использовал но точно не новый module-tunnel-sink-new.

txe
()
Ответ на: комментарий от txe

пока все так сервер: (Debian 8.0. 4.1.18+. pulseaudio 5.0) load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 auth-anonymous=1 load-module module-zeroconf-publish

клиент: (Linux Mint 17.3 Rosa. 3.19.0-32-generic. pulseaudio 4.0) load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 auth-anonymous=1 load-module module-zeroconf-discover

так все хрипит. ps. написал и увидел что в минте 4ый пульс. а module-tunnel-sink-new кажись появился только в 5ом. может по этому не работало.

txe
()
Ответ на: комментарий от txe

На сервере pulseaudio (/etc/pulse/default.pa) включаем поддержку сети.

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16

На клиенте (источнике звука) создаём вручную тунель (etc/pulse/default.pa).

load-module module-tunnel-sink-new sink_name=sname server=server_name rate=96000
update-sink-proplist sname    device.description="Remote.Super.Bum.Bum"

Если pulseaudio сервер запущен до клиента, то при загрузке клиента, тунель будет поднят автоматически.

Если клиент загружажется раньше сервера, то после загрузки сервера тунель можно поднять вручную с помощью скриптов.

#!/bin/bash
pacmd load-module module-tunnel-sink-new sink_name=sname server=server_name rate=96000
pacmd update-sink-proplist "sname" device.description="Super.Bum.Bum"

Или удалить тунель

#! /bin/bash
pacmd unload-module module-tunnel-sink-new

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от txe

Да, такой способ у меня тоже хрипел.

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys
pacmd load-module module-tunnel-sink-new sink_name=alsa_output.pci-0000_00_1b.0.analog-stereo server=192.168.1.136 rate=96000

Module load failed.

как узнать на что он ругается? и server=192.168.1.136 так же тоже правильно?

txe
()
Ответ на: комментарий от txe
~ pulseaudio --dump-modules | grep module-tunnel-sink-new
~

потому что его нет ) а как его поставить?

pulseaudio --version
pulseaudio 5.0-rebootstrapped

txe
()
Ответ на: комментарий от intelfx

боюсь мне тут знаний пока не хватит. в ubuntu trusty (минт на ее базе) стоит 4ый. единственный тестовый ппа дал 5ый но там нет module-tunnel-sink-new. как-то можно подключить репозитории vivid или wily или xenial с целью скачать только пулс? (при этом не поломав все остальное)

txe
()
Ответ на: комментарий от Jurik_Phys
pulseaudio --dump-modules  
module-alsa-card                        ALSA Card
module-alsa-sink                        ALSA Sink
module-alsa-source                      ALSA Source
module-always-sink                      Всегда оставлять хотя бы один аудиоприёмник загруженным, даже если он пустой.
module-augment-properties               Augment the property sets of streams with additional static information
module-card-restore                     Automatically restore profile of cards
module-cli                              Command line interface
module-cli-protocol-tcp                 Command line interface protocol (TCP sockets)
module-cli-protocol-unix                Command line interface protocol (UNIX sockets)
module-combine                          Compatibility module (module-combine rename)
module-combine-sink                     Combine multiple sinks to one
module-dbus-protocol                    D-Bus interface
module-default-device-restore           Automatically restore the default sink and source
module-detect                           Detect available audio hardware and load matching drivers
module-device-manager                   Keep track of devices (and their descriptions) both past and present and prioritise by role
module-device-restore                   Automatically restore the volume/mute state of devices
module-echo-cancel                      Echo Cancellation
module-equalizer-sink                   Эквалайзер общего назначения
module-esound-sink                      ESOUND Sink
module-filter-apply                     Load filter sinks automatically when needed
module-filter-heuristics                Detect when various filters are desirable
module-gconf                            GConf Adapter
module-http-protocol-tcp                HTTP (TCP sockets)
module-http-protocol-unix               HTTP (UNIX sockets)
module-intended-roles                   Automatically set device of streams based on intended roles of devices
module-ladspa-sink                      Виртуальный аудиоприёмник LADSPA
module-loopback                         Loopback from source to sink
module-match                            Playback stream expression matching module
module-mmkbd-evdev                      Multimedia keyboard support via Linux evdev
module-native-protocol-fd               Native protocol autospawn helper
module-native-protocol-tcp              Native protocol (TCP sockets)
module-native-protocol-unix             Native protocol (UNIX sockets)
module-null-sink                        Синхронный пустой аудиоприёмник
module-null-source                      Clocked NULL source
module-oss                              OSS Sink/Source
module-pipe-sink                        UNIX pipe sink
module-pipe-source                      UNIX pipe source
module-position-event-sounds            Position event sounds between L and R depending on the position on screen of the widget triggering them.
module-remap-sink                       Virtual channel remapping sink
module-remap-source                     Virtual channel remapping source
module-rescue-streams                   When a sink/source is removed, try to move its streams to the default sink/source
module-role-cork                        Mute & cork streams with certain roles while others exist
module-rtp-recv                         Receive data from a network via RTP/SAP/SDP
module-rtp-send                         Read data from source and send it to the network via RTP/SAP/SDP
module-rygel-media-server               UPnP MediaServer Plugin for Rygel
module-simple-protocol-tcp              Simple protocol (TCP sockets)
module-simple-protocol-unix             Simple protocol (UNIX sockets)
module-sine                             Sine wave generator
module-sine-source                      Sine wave generator source
module-stream-restore                   Automatically restore the volume/mute/device state of streams
module-suspend-on-idle                  When a sink/source is idle for too long, suspend it
module-switch-on-connect                When a sink/source is added, switch to it
module-switch-on-port-available         n/a
module-systemd-login                    Create a client for each login session of this user
module-tunnel-sink                      Tunnel module for sinks
module-tunnel-source                    Tunnel module for sources
module-udev-detect                      Detect available audio hardware and load matching drivers
module-virtual-sink                     Virtual sink
module-virtual-source                   Virtual source
module-virtual-surround-sink            Виртуальный аудиоприёмник объёмного звука
module-volume-restore                   Compatibility module
module-x11-bell                         X11 bell interceptor
module-x11-cork-request                 Synthesize X11 media key events when cork/uncork is requested
module-x11-publish                      X11 credential publisher
module-x11-xsmp                         X11 session management
module-zeroconf-discover                mDNS/DNS-SD Service Discovery
module-zeroconf-publish                 mDNS/DNS-SD Service Publisher

~ apt-cache search pulseaudio-module
pulseaudio-module-bluetooth - Модуль Bluetooth для звукового сервера PulseAudio
pulseaudio-module-bluetooth-dbg - Модуль Bluetooth для звукового сервера PulseAudio (отладочные символы)
pulseaudio-module-gconf - Модуль GConf для звукового сервера PulseAudio
pulseaudio-module-gconf-dbg - Модуль GConf для звукового сервера PulseAudio (отладочные символы)
pulseaudio-module-jack - Модули jackd для звукового сервера PulseAudio
pulseaudio-module-jack-dbg - Модули jackd для звукового сервера PulseAudio (отладочные символы)
pulseaudio-module-lirc - Модуль lirc для звукового сервера PulseAudio
pulseaudio-module-lirc-dbg - Модуль lirc для звукового сервера PulseAudio (отладочные символы)
pulseaudio-module-raop - Модуль RAOP для звукового сервера PulseAudio
pulseaudio-module-raop-dbg - Модуль RAOP для звукового сервера PulseAudio (отладочные символы)
pulseaudio-module-x11 - Модуль X11 для звукового сервера PulseAudio
pulseaudio-module-x11-dbg - Модуль X11 для звукового сервера PulseAudio (отладочные символы)
pulseaudio-module-zeroconf - Модуль Zeroconf для звукового сервера PulseAudio
pulseaudio-module-zeroconf-dbg - Модуль Zeroconf для звукового сервера PulseAudio (отладочные символы)
pulseaudio - PulseAudio sound server

 

кажись нет.

txe
()
Ответ на: комментарий от Jurik_Phys

Значит, недособрали. В любом случае лучше обновиться.

intelfx ★★★★★
()
Ответ на: комментарий от Jurik_Phys

что-то через /etc/pulse/default.pa и etc/pulse/default.pa у меня не заработало. те. просто при старте (рестарте) пульса на клиенте туннель не поднимается. но поднимается если на клиенте выполнить:

pacmd load-module module-tunnel-sink-new sink_name=123123 server=192.168.1.136 rate=96000
но хрипит. хрипит как только пытаешься что-то проиграть через туннель. и где-то через 7 секунд после простоя затихает. что может быть? куда копать?

txe
()
Ответ на: комментарий от intelfx

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

txe
()
Ответ на: комментарий от Jurik_Phys

в общем пока две беды. это шум. и задержки. у вас получается что-то смотреть на юутубе при этом пробрасывая звук на колонки? если в фильме еще можно сместить звуковую дорожку.. то как это в браузере и играх делать? ну и что делать с шумом не понятно. кто-то из вас пытался это делать на малинке? и если да то что за система у вас на ней крутиться?

txe
()
Ответ на: комментарий от txe

Седьмая пульса, дебиан и на клиенте, и на сервере. Все работает, ни задержек, ни хрипа. Правда в настройках сервера sample_rate = 96000, собственно, отсюда и rate в параметрах. Клиент и сервер - x86, но не думаю, что это важно.

Следы автоподнимаемого туннеля закомментированы.

Jurik_Phys ★★★★★
() автор топика
Последнее исправление: Jurik_Phys (всего исправлений: 1)
18 февраля 2018 г.
Ответ на: комментарий от Jurik_Phys

Как это вообще у вас работает? У меня идет звук пол минутки, иногда больше, иногда меньше и перестает. Причем пофигу какой модуль, старый, new, еще как то alsa канал пробрасывал для PulseAudio Device Chooser, но результат идентичен.

ZugDuk
()
Ответ на: комментарий от ZugDuk

Странно, до сих пор активно использую метод из поста. Единственное что можно добавить, через wi-fi звук трещит т.к., задержки слишком большие.

Jurik_Phys ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

У меня на сервере (малина 2) 10ая пульса, а на клиенте 5ая. Видимо из за этого заморочки с tcp соединением. Попробую по новее какую нибудь.

Но уже сейчас очевидны проблемы на сервере - когда использую модуль rtp, то или через 1 сек вырубается, или через несколько. Иногда получается запустить удачно и пол часа может поиграть. В случае с rtp клиент может вообще отсутствовать, а то что вырубается слышно по пропаданию шипа из колонок. Вырубается в смысле звук пропадет, а не демон падает. А вот чтобы перезапустить звук, надо перезапускать пульсу.

ZugDuk
()
Ответ на: комментарий от ZugDuk

Ну что за поделие? Какого фига прога запущенная от рута, не видит демона, запущенного от юзера pulse

pactl stat
Connection failure: Connection refused
pa_context_connect() failed: Connection refused

pacmd stat
No PulseAudio daemon running, or not running as session daemon.
ZugDuk
()
Ответ на: комментарий от ZugDuk
pulse     1629  0.0  0.7 102068  7472 ?        S<l  11:14   0:00 /usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit
ZugDuk
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.