LINUX.ORG.RU

Тормоза при передаче звука через pulseaudio по сети

 ,


0

2

Тормозит передача звука по сети, когда в качестве сервера у меня малинка:

/etc/pulse/default.pa:

...
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.88.0/24 auth-anonymous=1
load-module module-zeroconf-publish
load-module module-rtp-recv

а на клиенте синкпад:

/etc/pulse/client.conf:

default-server = tcp:192.168.88.183:4713

Что бы не включил - работает прерывисто. Секунды 4 проигрывает, потом ступор на секунды 3 и до бесконечности так. Чего ему не хватает?

★★★★★

У малинки ethernet висит на черезжопном usb-хабе, который в свою очередь висит на черезжопном synopsys dwc-otg usb-хосте.
Юзеры малинки должны страдать.

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

Он всегда стабильно работает, проблема думаю не в устройстве.

coyotl ()

Если я не ошибаюсь, то проблема была в том, что zeroconf работает со старой версией module-tunnel-sink, которая очень кривая.

Выход - использовать новую версию «module-tunnel-sink-new», для этого на источнике звука /etc/pulse/default.pa

load-module module-tunnel-sink-new sink_name=edifier server=dirac rate=96000

update-sink-proplist edifier device.description=«Edifier.R2800»

На dirac'е у пульсы настройка:

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

Dirac должен быть запущен до того момента, как загрузится комп с «источником звука», в противном случае, при работающем «Dirac'е» на источнике звука надо сделать:

pacmd load-module module-tunnel-sink-new sink_name=edifier server=dirac rate=96000

pacmd update-sink-proplist «edifier» device.description=«Edifier.R2800»

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

pacmd update-sink-proplist «edifier» device.description=«Edifier.R2800»

Чёт не выполняется эта команда. Кавычки не те исправил и всё равно хрень какая-то. Что есть Edifier.R2800?

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

В логе примерно такое:

D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 1504 bytes ago (2908 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 1504 bytes ago (2908 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 1504 bytes ago (2908 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 1504 bytes ago (2908 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 3268 bytes ago (1144 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] protocol-native.c: Requesting rewind due to end of underrun.
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: Requested to rewind 15624 bytes.
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: Limited to 4156 bytes.
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: before: 1039
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: after: 1039
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: Rewound 4156 bytes.
D: [alsa-sink-bcm2835 ALSA] sink.c: Processing rewind...
D: [alsa-sink-bcm2835 ALSA] sink.c: latency = 1911
D: [alsa-sink-bcm2835 ALSA] sink-input.c: Have to rewind 4156 bytes on render memblockq.
D: [alsa-sink-bcm2835 ALSA] source.c: Processing rewind...
D: [alsa-sink-bcm2835 ALSA] protocol-native.c: Implicit underrun of 'AudioStream'
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 56 bytes ago (4356 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 56 bytes ago (4356 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 1820 bytes ago (2592 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 3584 bytes ago (828 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] sink.c: Found underrun 3584 bytes ago (828 bytes ahead in playback buffer)
D: [alsa-sink-bcm2835 ALSA] protocol-native.c: Requesting rewind due to end of underrun.
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: Requested to rewind 12368 bytes.
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: Limited to 3572 bytes.
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: before: 893
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: after: 893
D: [alsa-sink-bcm2835 ALSA] alsa-sink.c: Rewound 3572 bytes.
D: [alsa-sink-bcm2835 ALSA] sink.c: Processing rewind...
D: [alsa-sink-bcm2835 ALSA] sink.c: latency = 0

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

а чего в нём плохого

Кривой. Может сейчас с помощью костылей оно как-то и работает, но от рождения оно такое, как я написал.

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

device.description

Это просто переименование устройства для удобочитаемости в регуляторе громкости, у меня kmix.

«Edifier» - произвольное название, в моем случае колонки в зале так называются, соответственно, ориентир, куда перебросить звук; dirac - hostname компьютера, можно заменить ip адресом. У меня последние цитированные команды живут в баш скрипте.

Через zeroconf звук сначала шел нормальный, а потом с хрипом.

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

А есть вообще какой нибудь вменяемый мануал по настройке этого добра? Общий по пульсе найти не проблема, а вот примера с передачей звука по сети я не видел вменяемого, особенно с использованием module-tunnel-sink-new.

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

Дык, я считай полную версию выложил. На компе, который является источником звука, например, проигрывает Яндекс.Музыку.

/etc/pulse/default.pa

# Manual tunel to DIRAC
load-module module-tunnel-sink-new sink_name=edifier server=dirac rate=96000
update-sink-proplist edifier    device.description="Edifier.R2800"

ip адрес у dirac'а - 192.168.73.255

На dirac'е /etc/pulse/default.pa

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

Перезапустить обе пульсы на всякий случай. Если пульса на dirac'е запускается после пульсы с источника звука, то в работу включается баш скрипт на источнике звука panet.up

#!/bin/bash

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

Собственно, на источнике звука /etc/pulse/default.pa можно и не редактировать, а запускать всё вручную. С последним, если не ошибаюсь, тоже были проблемы, заработало из скрипта, а отдельные команды хотели чего-то ещё (общего окружения?).

Есть скрипт и на выключение тунеля panet.down

#! /bin/bash

pacmd unload-module module-tunnel-sink-new

Соответсвенно, если dirac был запущен до источника звука, то дополнительное устройство на которое можно будет перенаправить звук появится в pavucontrol и подобных регуляторах звука автоматически, если же dirac был запущен после источника звука, то устройство появится после старта panet.up.

Т.е., заменяешь dirac на ip сервера с пульсой, которая будет вещать звук.

А есть вообще какой нибудь вменяемый мануал по настройке этого добра? Общий по пульсе найти не проблема, а вот примера с передачей звука по сети я не видел вменяемого, особенно с использованием module-tunnel-sink-new.

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

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

tunnel-sink-new

Появилось, если верить мануалу в пульсе 5.0. В debian stable пульса версии 4.0, требуется обновление до соответствующей версии.

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

В общем, получилось твоим способом замутить передачу звука :)

Но хрень в том, что это никак не помогло. Сейчас звук идёт где-то 10 секунд (прогрес!), а потом стопорится и с концами...

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

Значит надо искать причину дальше. Я бы сначала определился с тем, кто из участников процесса самое слабое звено, заменив каким-нибудь ноутбуком, а потом уже крутил частоту дискретизации, буферы у пульсы. Но прогноз не благоприятный, слишком требователен к железу звук по сети.

Jurik_Phys ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.