PipeWire (Русский)

PipeWire — это новый низкоуровневый мультимедийный фреймворк. Он предназначен для захвата и воспроизведения аудио и видео с минимальной задержкой и поддерживает PulseAudio, JACK, ALSA и приложения, использующие GStreamer.

Состояние перевода: На этой странице представлен перевод статьи PipeWire. Дата последней синхронизации: 6 октября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Демон, основанный на этом фреймровке, может быть использован как звуковой сервер (с поддержкой возможностей PulseAudio и JACK) и как сервер для захвата видео.

PipeWire также поддерживает контейнеры по типу Flatpak и не зависит от пользовательских групп audio и video. Вместо них он использует модель безопасности, основанную на Polkit, для запроса у Flatpak или Wayland разрешений для записи экрана или звука.

Установка

Установите пакет pipewire. Также есть пакет lib32-pipewire для поддержки multilib.

PipeWire использует пользовательский экземпляр systemd для управления сервером и автоматической активации через сокет.

Документация есть в пакете pipewire-docs.

Pipewire может работать как прозрачная замена других звуковых серверов; подробнее в разделе #Аудио.

Менеджер сеансов

Как и JACK, PipeWire не реализует никакой внутренней логики подключения. Бремя отслеживания новых потоков и подключения их к соответствующему устройству вывода или приложению возлагается на внешний компонент, известный как менеджер сеансов.

На данный момент доступны два менеджера сеансов:

  • WirePlumber Менеджер, основанный на модульной конструкции, с плагинами Lua, которые реализуют фактическую функциональность управления. Он более мощный чем PipeWire Media Session и рекомендуется к использованию по умолчанию.
https://pipewire.pages.freedesktop.org/wireplumber/ || wireplumber

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

    GUI

    Настройка

    Пакет PipeWire предоставляет начальный набор конфигурационных файлов в . Не редактируйте эти файлы напрямую, так как обновления пакета перезапишут ваши изменения. Для настройки PipeWire можно скопировать файлы из в другой общесистемный каталог /etc/pipewire или в пользовательский каталог ~/.config/pipewire. Файл из каталога с более высоким приоритетом заменяет собой файлы с таким же именем из других каталогов.

    Профили

    Pipewire добавляет пользовательский профиль "Pro Audio" в дополнение к профилям PulseAudio, выбираемым через pavucontrol. Эффект от этого описан здесь: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-is-the-pro-audio-profile

    Использование

    Аудио

    PipeWire может быть использован как звуковой сервер наподобие PulseAudio и JACK. Он нацелен их на полную замену путем предоставления реализации PulseAudio-совместимого сервера и ABI-совместимых библиотек для клиентов JACK. Подробнее смотреть здесь.

    Клиенты ALSA

    Установите (и удалите , если он установлен) для перенаправления приложений, использующих ALSA API, через PipeWire.

    Клиенты PulseAudio

    Установите . Этот пакет заменит установленные и . Необходимо перезагрузиться или запустить пользовательский юнит для работы.

    Как правило, этого достаточно для дальнейшей работы, так как сервис должен быть автоматически включен. Для проверки работоспособности, выполните следующую команду и изучите вывод:

    Информация о дальнейшей настройке (например, касательно модулей) есть в официальной Wiki проекта: Migration from PulseAudio, Configuration of Pipewire-Pulse.

    Клиенты JACK

    Установите пакет pipewire-jack. Также есть пакет lib32-pipewire-jack для поддержки multilib.

    Можно использовать для запуска клиентов JACK, но технически это не обязательно, так как он служит лишь обёрткой для переменных окружения , и .

    Также вы можете использовать другой размер буфера путем установления нужного соотношения размера буфера и частоты дискретизации (что равно задержке в секнудах):

    PIPEWIRE_LATENCY="128/48000" приложение

    Устройства Bluetooth

    Для управления Bluetooth audio устройствами PipeWire использует . Говоря более конкретно, сервис PipeWire проверяет наличие и подключает модуль автоматически, если он установлен в системе.

    Автоматический выбор профиля

    И , и WirePlumber могут автоматически переключаться между профилями HSP/HFP и A2DP при обнаружении входного потока.

    В это по умолчанию отключено. Для включения установите параметр в значение true:

    /etc/pipewire/media-session.d/bluez-monitor.conf (или ~/.config/pipewire/media-session.d/bluez-monitor.conf)
    ...
    rules = [
        {
            ...
            actions = {
                update-props = {
                    ...
                    '''bluez5.autoswitch-profile = true'''
    ...

    В WirePlumber это по умолчанию включено. Отключить можно так:

    PipeWire native patch sets

    У нас есть Helvum для графической визуализации и создания соединений, но всего остального пока нет. Ниже приведены bash-скрипты, которые сохраняют наборы связей, загружают их и разрывают все соединения. Для сохранения и загрузки укажите имя файла в качестве аргумента.

    Совместное использование аудиоустройств по сети

    Хотя в само́м PipeWire нет сетевой прозрачности, его реализация PulseAudio поддерживает передачу звука по сети. Простым способом обмена аудио между компьютерами в сети является использование демона Avahi для обнаружения устройств. Убедитесь, что служба запущена на всех компьютерах, которые будут совместно использовать аудио.

    Чтобы сделать аудиоустройства доступными через сеть, загрузите соответствующие модули на хосте (убедитесь, что используется локальный IP-адрес):

    $ pactl load-module module-native-protocol-tcp listen=192.168.1.10
    $ pactl load-module module-zeroconf-publish

    А на клиентах загрузите модуль обнаружения:

    $ pactl load-module module-zeroconf-discover

    Работа PipeWire поверх JACK

    PipeWire также может работать как клиент JACK, если это необходимо. Подробнее смотреть здесь

    Использование ALSA dmix в качестве вывода PipeWire

    Можно использовать сервер PipeWire (или несколько, отдельно для каждого пользователя) для вывода звука на ALSA через ALSA dmix. Это позволяет использовать ALSA в качестве основной системы вывода звука, но при этом использовать устройства, не относящиеся к ALSA, например Bluetooth-наушники.

    Настройка dmix в ALSA

    Допустим, у вас есть две звуковые карты, PCH и :

    и PCM выглядит примерно так:

    и настройки ALSA примерно такие:

    /etc/asound.conf
    ctl.!default {
      type hw
      card PCH
    }
    
    pcm.!default {
      type plug
      slave.pcm "'''dmix:PCH,0'''"
    }
    
    pcm.dhdmi {
      type plug
      slave.pcm "'''dmix:HDMI,9'''"
    }
    

    В примерах ниже будут использоваться dmix-устройства и .

    Настройка dmix в PipeWire

    Сперва нужно отключить автоматический мониторинг устройств ALSA в WirePlumber. Закомментируйте строку :

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

    Добавьте свой элемент в массив :

    /etc/pipewire/pipewire.conf.d/alsa-dmix.conf (или ~/.config/pipewire/pipewire.conf.d/alsa-dmix.conf)
    context.objects = [
        # Начинаем не с dmix, а с устройства ввода. Не забудьте его добавить.
        # Без настроенного устройства ввода наблюдались проблемы в Zoom.
        { factory = adapter
            args = {
                factory.name           = api.alsa.pcm.source
                node.name              = "alsa-mic-internal" # название устройства pulse (mpv)
                node.description       = "Mic Internal" # название устройства pulse (pavucontrol)
                media.class            = "Audio/Source"
                api.alsa.path          = "'''hw:PCH,0'''"
            }
        }
        # Теперь можно добавить dmix PCM
        { factory = adapter
            args = {
                factory.name           = api.alsa.pcm.sink # Вывод в dmix
                node.name              = "alsa-dmix-internal" # название устройства pulse (mpv)
                node.description       = "PCM Internal" # название устройства pulse (pavucontrol)
                media.class            = "Audio/Sink" # Вывод в dmix
                api.alsa.path          = "'''dmix:PCH,0'''"
            }
        }
    
        { factory = adapter
            args = {
                factory.name           = api.alsa.pcm.sink # Вывод в dmix
                node.name              = "alsa-dmix-hdmi" # название устройства pulse (mpv)
                node.description       = "PCM HDMI" # название устройства pulse (pavucontrol)
                media.class            = "Audio/Sink" # Вывод в dmix
                # это dmix из файла /etc/asound.conf
                api.alsa.path          = "'''dmix:HDMI,9'''"
            }
        }
    ]

    Как обычный пользователь (не root) проверьте вывод и настройте источник (source) и вывод (sink) устройства по умолчанию по своему вкусу с помощью , где - это число перед именем источника/вывода.

    Теперь можно полноценно протестировать изменения.

    Демонстрация экрана WebRTC

    Большинство браузеров для работы WebRTC и захвата рабочего стола или отдельных приложений используют X11. На Wayland используется подход, основанный на механизме разрешений.

    Для этого требуются пакет xdg-desktop-portal и один из следующих бэкендов:

    • для GNOME, который зависит от
    • для приложений GTK.
    • для KDE.
    • for LXQt.
    • для оболочек, использующих композитор wlroots (напр. Sway, )

    После установки бэкенда перезапустите пользовательский юнит .

    Примечание: В xdg-desktop-portal 1.10.0 исправлено несоответствие между спецификацией и реализацией интерфейса D-Bus. Как следствие, некоторые клиенты могут не работать с xdg-desktop-portal 1.10.0 или более новыми версиями.

    Firefox (84+) поддерживает данный механизм по умолчанию. Для Chromium (73+) нужно активировать поддержку вручную включением экспериментального флага:

    chrome://flags/#enable-webrtc-pipewire-capturer

    В (27+) этот метод реализован в виде источника «Захват экрана (PipeWire)».

    Обратите внимание, что поддерживается только захват экрана целиком, а не отдельного окна/приложения .

    xdg-desktop-portal-wlr

    Для работы необходимо, чтобы в пользовательском сеансе systemd присутствовали переменные окружения XDG_CURRENT_DESKTOP и . Переменная XDG_CURRENT_DESKTOP должна содержать название используемого вами композитора, например . Переменную композитор прописывает автоматически. Рекомендуемый способ перенести эти переменные окружения в пользовательский сеанс systemd — выполнить команду после запуска композитора, например, в файле настроек композитора. Смотрите и для более подробной информации.

    Видео

    Большинство приложений, которые полагаются на GStreamer для обработки, например, видеопотоков, должны работать «из коробки», используя плагин PipeWire GStreamer; смотрите GStreamer#PipeWire. Поэтому такие приложения, как, например, , уже могут использовать его для захвата видео.

    Скрипт из пакета выполняет предзагрузку библиотеки (/lib/pipewire-0.3/v4l2/libpw-v4l2.so), которая перехватывает вызовы v4l2 и направляет видео через pipewire.

    Постобработка аудио

    EasyEffects

    EasyEffects (ранее PulseEffects) это GTK утилита предоставляющая большой набор аудио эффектов и фильтров для использования в потоках отдельных приложений и микрофона. Присутствуют большинство основных эффектов, таких как эквалайзер, выравнивание громкости, усиления низких частот, дэ-эссер и подавления шумов. Полный список эффектов и фильтров можно посмотреть на GitHub.

    Для использования установите . Так же можете посмотреть коллекцию пользовательских пресетов для настройки. Смотрите также AutoEq — коллекция предустановок эквалайзера для наушников, созданная искусственным интеллектом.

    NoiseTorch

    NoiseTorch это альтернативный способ для шумоподавления. Для использования установите noisetorchAUR, либо одну из этих версий пакета

    После запуска модуля требуется выбрать нужный микрофон. Имеется возможность выбора нужного порога активации. Для того, что бы не фильтровать голос, установите максимальный уровень.

    Можно сделать автозапуск с помощью systemd; смотрите . Обратите внимание, что путь к исполняемому файлу noisetorch другой при установке из AUR.

    Шумоподавление для голоса

    Установите и смотрите https://github.com/werman/noise-suppression-for-voice#pipewire для настройки. После, установите источник подавления шумов по умолчанию в настройках аудио. Возможно потребуется перезапустить приложение.

    JamesDSP

    JamesDSP for Linux (пакет ) предоставляет звуковые эффекты с открытым исходным кодом для PipeWire и PulseAudio. Он использует свой собственный движок эффектов и не зависит от LADSPA, Calf и т.д. Изначально JamesDSP был опубликован как обработчик звуковых эффектов для устройств Android.

    Плагины LADSPA, LV2 и VST

    Если вы хотите использовать плагины LADSPA, LV2 и VST, вы можете применить их используя виртуальный аудиовход Pulseaudio и хост Jack Carla. Установите , pipewire-jack и . Для начала создайте новый аудиовход в Pulseaudio под названием .

    pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=default_null_sink channel_map=FL,FR

    Запустите Carla через PipeWire pw-jack carla-rack. Во вкладке Rack добавьте плагины по желанию. Удостоверьтесь, что они имеют тип stereo. Вы можете поменять их очередность, в которой они будут работать, начиная с верха списка. После этого переместитесь во вкладку Patchbay и подключите к вводу Carla, а вывод Carla к нужному устройству воспроизведения (наушники, колонки, HDMI и т.п.). Сохраните конфигурацию в домашнюю директорию, напр. в .

    Вы можете протестировать эффекты в любом медиа приложение, производящем звук, например просмотром видео в браузере. Есть два способа сделать это. Открыть в Carla вкладку Patchbay, и перенаправить соединения нужного приложения к . Второй способ через , так же перенаправить аудио поток нужного приложения к аудиовходу (Этот способ запомнит перенаправление, поэтому последующие экземпляры приложения автоматически перенаправится на ).

    Для применения вышеописанных настроек, необходимо создать два пользовательских systemd юнита:

    Затем измените сервис jack-carla-rack, указав полный путь к вашему сохраненному файлу конфигурации в строке Environment:

    И наконец, включите пользовательские юниты pulseaudio-null-sink@default_null_sink.service и .

    Обратите внимание, если вы установите как устройство по умолчанию, все приложения будут автоматически перенаправляться к этому аудиовходу и клавиши громкости будут менять его уровень, а не громкость устройств воспроизведения. Для того, чтобы изменять клавишами уровень громкости устройства, необходимо оставить его по умолчанию и перенаправлять аудиопоток приложения к через pavucontrol. (PipeWire запомнит перенаправление и использует его для последующих экземпляров приложений).

    Решение проблем

    PipeWire не видит микрофон

    Модуль по умолчанию использует для обнаружения устройств. Если этот метод не работает, попробуйте выключить и/или включить api.alsa.use-ucm.

    Если используется :

    Если используется :

    Затем перезапустите PipeWire и проверьте список доступных устройств:

    Другой вариант решения, предложенный в баг-трекере — добавить микрофон вручную. Сперва убедитесь, что ALSA видит микрофон.

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

    Если успешно записывает микрофон, но PipeWire его не видит, попробуйте добавить файл настроек для ручного добавления микрофона.

    /etc/pipewire/pipewire.conf.d/microphone.conf (или ~/.config/pipewire/pipewire.conf.d/microphone.conf)
    context.objects = [
        { factory = adapter
            args = {
                factory.name           = api.alsa.pcm.source
                node.name              = "microphone"
                node.description       = "Undetected Microphone"
                media.class            = "Audio/Source"
                api.alsa.path          = "hw:''номер_карты'',''номер_устройства''"
            }
        }
    ]

    Перезапустите PipeWire для применения изменений.

    Звук не переключается автоматически при подключении нового устройства

    Чтобы автоматически переключаться на вновь подключенные устройства, раскомментируйте следующую строку (выделена жирным):

    Перезапустите пользовательские юниты и для применения изменений.

    Звук не переключается автоматически на наушники Bluetooth

    Выполните pactl load-module module-switch-on-connect и настройте среду рабочего стола на автоматический запуск этой команды при входе в систему. Возможно, вам потребуется выполнить . Найти можно в выводе команды . Смотрите wireplumber issue #89 для более подробной информации.

    Нет звука после подключения устройства Bluetooth

    По состоянию на 2020-12-07, если у вас нет звука после подключения Bluetooth устройства, вам скорее всего потребуется переключить стандартный аудиопоток или перенаправить его к требуемому. Воспользуйтесь для просмотра доступных потоков и для смены стандартного потока на bluetooth устройство. Можно автоматизировать через udev, используя данный скрипт как пример.

    Обсуждение данной проблемы можно посмотреть здесь. По словам автора скрипта, профиль гарнитуры (HSP) все еще может иметь проблемы.

    Маленькая громкость

    После замены PulseAudio на Pipewire громкость была как задумано, но после перезагрузки звук невыносимо тихий.

    Откройте , нажимайте F6 для выбора нужной звуковой карты и удостоверьтесь, что уровень громкости стоит на 100%. должен сохранить настройки после перезагрузки.

    Увеличение RLIMIT_MEMLOCK

    Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK

    Установите и добавьте пользователя в группу .

    Также, увеличение memlock с 64кБ до 128кБ должно хватить для решение проблемы. Если вы запускаете через systemd/User (Русский), допишите:

    имя_пользователя	soft	memlock	64
    имя_пользователя	hard	memlock	128

    в /etc/security/limits.d/username.conf

    Изменение частоты дискретизации

    По умолчанию PipeWire глобально устанавливает частоту дискретизации равную 48КГц. Если вы хотите изменить ее (например если ваш ЦАП поддерживает более высокое значение), можно прописать своё значение по умолчанию:

    Изменение разрешённых частот дискретизации

    PipeWire также может динамически изменять выходную частоту дискретизации, поддерживаемую вашим ЦАП. Частота дискретизации соответствует частоте дискретизации воспроизводимого аудиопотока.

    например, . Поддерживаемые значения должны быть описаны в инструкции к вашему ЦАП.

    По словам разработчика,PipeWire допускает до 16 различных частот дискретизации и переключается по возможности. Это означает, что с приведёнными выше настройками передискретизация не производится, если используемая в аудиопотоке частота поддерживается устройством.

    Чтобы проверить, с какой выходной частотой дискретизации и форматом дискретизации данные отправляются на ЦАП (возможно, вам понадобится изменить цифры):

    $ cat /proc/asound/card0/pcm0p/sub0/hw_params

    Чтобы проверить, какая частота дискретизации используется на входе, измените на pcm0c. ( означает «capture» — захват, означает «playback» — воспроизведение).

    Качество звука (качество передискретизации)

    Если вы использовали PulseAudio с или , то вам стоит раскомментировать и изменить строку на или максимальное 15 в блоке в файлах и . (скопируйте их из , если они не существуют). Не забудьте перезапустить пользовательские юниты и (никогда не забывайте про перезапуск , если хотите применить изменения настроек).

    Разница в качестве между и 15 незначительна, но разница в загрузке процессора составляет 2-3 раза. А разница в задержке между 4, , 15 ещё никем не исследована. Использование на 44100→48000 Гц на Ryzen 2600 приводит к тому, что процессы или нагружают одно ядро CPU на 4.0%.

    Вы можете сравнить ресемплеры здесь: https://src.infinitewave.ca/ (не обращайте внимания на всё, что выше 18 КГц и более 120 дБ). speex указан как "Xiph.org Speex".

    PipeWire использует свой собственный алгоритм передискретизации под названием Spa. Как и в случае и Speex , алгоритм PipeWire доступен в виде автономной версии: . Использование:

    $ spa-resample -q 15 -f s24 -r 48000 input16bit44100orAnythingElse.wav output24bit48000hz.wav

    Вероятно, можно как-то использовать другие ресемплеры, создав свой собственный выход. Или просто использовать плагин в проигрывателе (например, в Qmmp есть плагин SoX).

    Внешняя звуковая карта не включается после переподключения

    Проверьте . Если присутствуют значения с стандартным профилем "off", удалите их. Если же это не поможет, удалите все файлы из ~/.config/pipewire/media-session.d/ и перезапустите пользовательскую службу .

    Нет звука или pactl info показывает Failure: Connection refused

    Эта ошибка говорит о том, что приложение не может присоединиться к службе PipeWire-Pulse. Убедитесь, что существует и файл не пустой, и перезапустите пользовательскую службу .

    Если этот способ не исправит ошибку, запустите для дебага и используйте для помощи в IRC чате #pipewire или списках рассылки.

    Низкое качество звука через Bluetooth

    В случае, если звук через Bluetooth заикается, проверьте статус пользовательского юнита . Если у вас есть ошибки по типу:

    Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered

    проверьте используемый кодек командой и попробуйте поменять его изменением bluez5.codecs на один из следующих: . Также можно попробовать включить поддержку mSBC (исправляет микрофон на Sony 1000XM3, то есть Headphones WH-1000XM3 и Earbuds WF-1000XM3), и кодек SBC-XQ.

    Если используется :

    Если используется :

    Перезапустите пользовательскую службу для применения изменений.

    Заметная задержка звука при воспроизведении

    Обычно это происходит после отключения узла в период неактивности.

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

    Либо же закомментируйте строку suspend-node в файле .

    Перезапустите службы и для применения изменений, или перезагрузитесь.

    Если вы используете , создайте новый файл для переопределения настроек по умолчанию:

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

    Пропадание звука при проигрывании других потоков

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

    pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940

    Согласно официальному гайду PipeWire по решению проблем, для решения проблемы при использовании измените следующие настройки:

    При использовании :

    /etc/wireplumber/main.lua.d/50-alsa-config.lua (или ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)
    apply_properties = {
        ["api.alsa.headroom"] = 1024,
    },

    Если звук заикается из-за блокировки страниц в ядре или создаваемых планировщиком задержек, смотрите Gaming#Tweaking kernel parameters for response time consistency.

    Искажённый звук

    • Для микрофонов, найдите проблемную звуковую карту в и уменьшите уровень "Mic Boost" или "Internal Mic Boost".
    • Попробуйте уменьшить частоту дискретизации до (44.1 кГц), как описано в разделе #Изменение частоты дискретизации.

    Различные проблемы после простоя

    Если звук пропал или исказился после пробуждения системы после сна, возможно потребуется реинициализировать ALSA:

    # alsactl init

    Большая задержка при использовании USB ЦАП (например, ЦАП Schiit)

    Изменение частоты дискретизации или формата может помочь уменьшить задержку с некоторыми ЦАП, такими как Schiit Hel 2. Используя правила соответствия в pipewire-media-session, мы можем установить свойства для устройств.

    Скопируйте стандартный файл настроек в или ~/.config/pipewire/media-session.d/. Затем добавьте примерно такой блок правил:

    Узнать можно с помощью pw-top.

    Ваш ЦАП может поддерживать другой формат или частоту дискретизации. Можно проверить, что поддерживает ЦАП, через ALSA:

    Сначала узнайте номер карты вашего ЦАП:

    В данном примере это карта 3. Получите все поддерживаемые частоты дискретизации и форматы:

    В данном случае случае — это поддерживаемые форматы, а — поддерживаемые частоты дискретизации для всех форматов.

    Нет звука от USB ЦАП до 30% громкости

    Некоторые USB ЦАП не выдают звук, если громкость ниже определённой . Обычно это около 25-30%, что приводит к некомфортному начальному уровню громкости и невозможности поддерживать низкий уровень громкости. Решением является игнорирование аппаратного управления громкостью путём установки ["api.alsa.soft-mixer"] в true.

    Если используется , можно обновить конфигурацию , добавив туда фрагмент с помощью :

    Затем перезапустите pipewire. Установите мастер-громкость в , а затем сохраните настройки с помощью . Теперь микшер громкости должен работать без проблем.

    Аудио в режиме реального времени не работает

    Если в статусе пользовательского юнита есть ошибка , это означает, что демон pipewire не получил приоритет реального времени. Смотрите для более подробной информации.

    Одновременный вывод на несколько выходов на одной звуковой карте

    Создайте копию файла /usr/share/alsa-card-profile/mixer/profile-sets/default.conf, чтобы изменения были постоянными. В нём мы определим профиль, объединяющий два стандартных отображения для аналогового и HDMI выводов.

    Теперь настроим pipewire-media-session на использование нового профиля карты для нужных устройств. Идентификаторы можно узнать с помощью .

    Нет звуков уведомлений в Discord

    Это может быть вызвано слишком низким значением min.quantum, попробуйте установить его на более чем 700. Можно сделать переопределение специально для Discord, добавив следующее правило в раздел pulse.rules в pipewire-pulse.conf.

    OBS ничего не показывает, даже если спрашивает окно/экран

    Если вы уверены, что у вас установлен xdg-desktop-portal, а также или , проверьте статус этих демонов.

    В OBS, если всё работает, в стандартном выводе должно быть что-то такое:

    ...
    info: [pipewire] desktop selected, setting up screencast
    info: [pipewire] created stream 0x5632d7456850
    info: [pipewire] playing stream…

    Для многомониторных установок пакет позволит захватить все экраны.

    Смотрите также

    gollark: e.g. if you have some JS code, and you see that the author used ```javascriptfunction deployBee(){}```brackets and not```javascriptfunction deployBee() {}```ones, you need to know a bit about what JS code normally looks like to infer anything like that.
    gollark: I don't think so. Things like variable names and formatting are *fairly* obvious, although you may need to read a decent sample of code in language X to learn what people generally do there regarding those, but stuff like what constructs are generally used for tasks in language X are not.
    gollark: Wait, he said it *wasn't* good, oh dear.
    gollark: I just implemented bubble sort, since I heard Obama saying it was good.
    gollark: But working out things like "how is this styled" and "is this done idiomatically by someone who knows the language well" can require even deeper knowledge than just working out the algorithm.
    This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.