LINUX.ORG.RU

Источники звука в pipewire/pulseaudio

 debian pipewire pulseaudio


0

1

Доброго времени суток, народ! Продолжаю ковырять Pipewire и наткнулся на интересную особенность связанную с тем, что источники звука ведут себя неожиданным образом. Заранее прошу прощения, я не очень хорошо ориентируюсь в терминологии. Если у нас есть выход (наушники или монитор с динамиком), то у нас есть такая сущность как @DEFAULT_AUDIO_SINK@. Мы можем упоминать ее в различных командах для изменения уровня громкости звука.

pamixer --source @DEFAULT_AUDIO_SINK@ -i 1
pamixer --source @DEFAULT_AUDIO_SINK@ -d 1
wpctl get-volume @DEFAULT_AUDIO_SINK@

Такая же история с @DEFAULT_AUDIO_SOURCE@ если у нас есть микрофон:

pamixer --source @DEFAULT_AUDIO_SOURCE@ -i 1
pamixer --source @DEFAULT_AUDIO_SOURCE@ -d 1
wpctl get-volume @DEFAULT_AUDIO_SOURCE@

А вот если у нас нет микрофоно, но есть монитор с динамиком, подключенный по HDMI, то @DEFAULT_AUDIO_SINK@ == @DEFAULT_AUDIO_SOURCE@ и если выолнить команды:

wpctl get-volume @DEFAULT_AUDIO_SINK@
wpctl get-volume @DEFAULT_AUDIO_SOURCE@

то мы получим результат соответствующий данным с @DEFAULT_AUDIO_SINK@:

➜  wpctl get-volume @DEFAULT_AUDIO_SINK@
Volume: 0.49

~
➜  wpctl get-volume @DEFAULT_AUDIO_SOURCE@
Volume: 0.49

А команда:

wpctl set-mute @DEFAULT_AUDIO_SOURCE@ 0

отключает динамик.

Как можно отключать\запрещать @DEFAULT_AUDIO_SOURCE@ при его реальном отсутствии?

★★

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

wpctl status можно посмотреть все id для sink и для source. Он точно одинаковый номер имеет? Там вроде сквозная нумерация и у sink и source не может быть один id.

Я, например, включаю нужный sink командой wpctl set-default 57(прям вручную смотрю цифру в статусе и включаю). Подозреваю, что @DEFAULT_AUDIO_SINK@ это просто переменная, хранящая этот номер.

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

Да вот в том и дело, что ID у него нет.

У меня сегодня похожая фигня была после обновления wp до версии 0.5. Исчезли наушники. Я поставил через pavucontrol их устройством по умолчанию, перезагрузился и они начали появляться как sink в wpctl. А то уже думал придется wp с waybar'ом откатывать.

Loki13 ★★★★★
()

Этот source не монитор с динамиком, а виртуальное устройство monitor of. Т.е. этот source позволяет записать то, что сейчас выведено на динамики, такой source автоматически создается для каждого sink.

wpctl - команда для управления нативным wireplumber/pipewire интерфейсом. С pamixer имеет смысл ориентировать на выхлоп pactl, т.к. pamixer работает с pulseaudio интерфейсом.

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

Я тут после очередной перезагрузки, а точнее выключения компа на ночь, увидел что у меня опять пропал SINK с наушниками. А потом вспомнил, что мне помогло вчера - перетыкание гарнитуры в USB после загрузки. После чего появляется для этого устройства профиль в pavucontrol. Проверь, есть ли у твоего отсутствующего синка профиль. Похоже в wireplumber 0.5, что-то всё таки сломали.

Loki13 ★★★★★
()

Нашел временное решение моей проблемы через кастомный модуль для waybar link.

Код пока крайне сырой, не реализовал поддержку bluetooth-гарнитуры, пока не разобрался как через dbus отлавливать изменение уровня громкости и особо не тестировал. Но уже вроде понятно как решить мою проблему.

nuxster ★★
() автор топика