Заметка: Контроль звуковых выходов для программ

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Иногда надо иметь отдельный виртуальный "выход" для звука из некоторых программ. Например, на стриме через OBS. Эта программа не поддерживает такое "нативно", но это возможно сделать с помощью PulseAudio.


Делается это с помощью null sinks и модуля loopback, про которые я немножко расскажу.


Понадоблятся утилиты pactl и pavucontrol, которые должны быть установлены.


Первый шаг. Создание Sink


В PulseAudio есть такая вещь, как sinks, которые представляют собой выходы для звука. Нам нужен такой, чтобы не был привязан к наушникам или ещё чему-то. Создаётся такой командой:


pactl load-module module-null-sink sink_name="web_sink" sink_properties=device.description="a sink for the web browser"

Мы вызываем утилиту pactl, чтобы создать так называемый null sink, который представлен отдельным модулем в PulseAudio. Ему мы передаём параметры:


  • название sink: я выбрал web_sink, так как использовать буду для Firefox;
  • настройки:
    • описание: тут всё понятно с названия, a sink for the web browser


Это то что нам надо — sink (выход), не привязанный к устройству.


Шаг второй. Перенаправление


Теперь нам нужен pavucontrol, чтобы назначить приложению данный sink.


Предупреждение: это НОРМАЛЬНО, что вы не будете слышать звук из того приложение, которое выбрали!


Открываем pavucontrol и видим список приложений с настройками громкости и sink-ами:
скриншот


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


Как я уже сказал, его не будет слышно — это знак того, что вы сделали всё правильно.


Третий (последний) шаг. Возвращение звука


Для "подключения" null sink к наушникам, используется модуль loopback, который только этим и занимается.


Сначала, надо узнать, как сам PulseAudio называет это устройство. Для этого выполняем команду:


pactl list short sinks

Надо найти строку, где в конце пишет RUNNING, и получить оттуда название (у меня оно выглядит как-то так: alsa_output.INTERFACE-NAME.analog-[stereo/mono]).


Потом загружаем нужный модуль, и не забываем проставить правильные названия sink-ов:


pactl load-module module-loopback source="web_sink".monitor sink="OUTPUTDEVICENAME"

Теперь должно быть всё слышно. А если зайти в тот же OBS, sink web должен появиться в списке устройств выхода звука.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Продолжать?

  • 0,0%да, понравилось!0
  • 100,0%ничего не понятно, но очень интересно1
  • 0,0%лучше не надо0
  • 0,0%ты забыл про предыдущий пост!0
Источник: https://habr.com/ru/post/565816/


Интересные статьи

Интересные статьи

Linux — это отличная платформа для занятий программированием. На нашей стороне — логичность, высокая эффективность, лёгкость работы с исходным кодом. В 2021 году Linux выглядит как ник...
Функциональное программирование (ФП) существует уже лет 60, но до сих пор оно всегда имело достаточно узкую сферу использования. Хотя компании, меняющие мир, вроде Google, полагаются ...
Мы заинтересованы в том, чтобы повышать образовательный уровень в IT-сфере,  и готовы строить высшее образование вместе с вузом. В этом посте мы расскажем об образовательных проект...
Как говорится, если тебе не стыдно за свой старый код, значит, ты не растешь как программист — и я согласна с таким мнением. Я начала программировать для развлечения более 40 лет назад, а 30 ле...
Вечная конкуренция Для многих из нас уже давно не секрет, что найти заказчика на проект краткосрочный или долгосрочный на ресурсах интернета — это очень непростая задача. В основном, потому чт...