Jump to content

PipeWire (Magyar)

From ArchWiki

A PipeWire egy új, alacsonyszintű multimédiás keretrendszer. A célja az, hogy minimális késleltetéssel rögzítse és játssza le mind a hangot, mind a videót, és támogassa a PulseAudio, JACK, ALSA és GStreamer alapú alkalmazásokat.

A keretrendszeren alapuló szolgáltatás beállítható úgy, hogy egyszerre legyen audio szerver (PulseAudio és JACK funkciókkal) és videorögzítő szerver is.

A PipeWire olyan konténereket is támogat, mint a Flatpak, és nem támaszkodik az audio és video felhasználói csoportokra. Ehelyett egy Polkit-szerű biztonsági modellt használ, amely a Flatpaktól vagy a Waylandtől kér engedélyt a képernyő vagy hang rögzítésére.

Telepítés

Telepítse a pipewire szoftvercsomagot a hivatalos szoftvercsomag-tárolókból. Létezik egy lib32-pipewire nevű szoftvercsomag is a multilib támogatás számára.

A Pipewire a systemd/User szolgáltatást használja a szerver kezelésére és az automatikus socket aktiválásra.

Opcionális lehetőségként telepítse a pipewire-docs szoftvercsomagot a dokumentáció áttekintése érdekében.

A Pipewire képes más hangszerverek helyettesítésére beilleszthető módon. A részletekért tekintse meg a #Hang leírást.

Session manager

A JACK szoftverhez hasonlóan a PipeWire se nem valósít meg belső kapcsolati logikát. Az új adatfolyamok figyelése és azok megfelelő kimeneti eszközhöz vagy alkalmazáshoz való csatlakoztatása egy külső összetevő, az úgynevezett munkamenet-kezelő (session manager) feladata.

WirePlumber

A WirePlumber a javasolt munkamenet-kezelő. Moduláris felépítésen alapul, Lua-bővítményeket használ, amelyek a tényleges menedzsment funkciókat valósítják meg.

Az alapértelmezett beállításfájlok a /usr/share/wireplumber könyvtárban találhatóak meg. A Wireplumber testreszabásának ajánlott módja az, hogy kis szövegrészeket ad hozzá, amelyek felülírják az adott beállításokat az /etc/wireplumber vagy a ~/.config/wireplumber könyvtárban [1].

A WirePlumber 0.5-ös verziójában megváltozott a beállításfájlok formátuma: A korábbi .lua fájlokat .conf fájlok váltották fel. Az átállás részletes útmutatóját a https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/migration.html#config-migration oldalon találja meg.

PipeWire Media Session

A pipewire-media-session szoftvercsomag el van avulva, és már nem ajánlott a használata. Ezt a szoftvercsomagot elsősorban tesztelési célokra, valamint új munkamenet-kezelők fejlesztésének a példájaként hozták létre.

GUI (Grafikus felhasználói felülettel rendelkező szoftverek)

  • coppwr — Alacsony szintű vezérlő- és diagnosztikai grafikus felhasználói felület a PipeWire számára.
https://github.com/dimtpap/coppwr || coppwrAUR
  • Helvum — GTK-alapú csatlakozótábla a PipeWire számára, amelyet a JACK szoftver, a catia inspirált. A kábelezési beállításokat nem menti el.
https://gitlab.freedesktop.org/pipewire/helvum || helvum
  • qpwgraph — Qt-alapú grafikus felületel rendelkezik. Csatlakozótábla a PipeWire számára, a JACK QjackCtl szoftvere által inspirálva. Elmenti a kábelezési beállításokat.
https://gitlab.freedesktop.org/rncbc/qpwgraph || qpwgraph
  • pwvucontrol — PipeWire hangerőszabályzója. A pavucontrol alternatívája.
https://github.com/saivert/pwvucontrol || pwvucontrolAUR
  • sonusmix — PipeWire hangirányítószoftver.
https://codeberg.org/sonusmix/sonusmix || sonusmixAUR

Beállítás

A PipeWire szoftvercsomag egy kezdeti beállításfájl-készletet biztosít a /usr/share/pipewire könyvtárban. Ezeket a fájlokat Önnek nem ajánlott, hogy közvetlenül szerkessze, mivel a szoftvercsomag-frissítések felülírhatják a módosításokat. A PipeWire beállításához a fájlokat át lehet másolni a /usr/share/pipewire könyvtárból a rendszer szintű /etc/pipewire könyvtárba, vagy a felhasználói ~/.config/pipewire könyvtárba. Egy azonos nevű fájl egy magasabb prioritású könyvtárban felülírja és hatástalanítja az eredeti fájlokat [2].

Profilok

A PipeWire a PulseAudio profilokon felül egy egyedi "Pro Audio" profilt is biztosít, amely a pavucontrol segítségével választható ki. Ennek hatását a PipeWire wiki ismerteti.

Használat

Hang

A PipeWire hangszerverként használható, hasonlóan a PulseAudio és a JACK szoftverekhez. Célja, hogy mind a PulseAudio szoftvert, mind a JACK szoftvert leváltsa, egy PulseAudio-kompatibilis szervermegvalósítással és JACK kliensekhez ABI-kompatibilis könyvtárakkal. További információkért tekintse meg a PipeWire Late Summer Update 2020 blogbejegyzést.

Először telepítse a pipewire-audio szoftvercsomagot. Az audiokliensek típusától függően további lépésekre is szükség lehet. Az is elképzelhető, hogy további firmware szoftvert kell telepíteni az Ön audioeszközéhez. A részletekért tekintse meg az Advanced Linux Sound Architecture (Magyar)#Firmware leírást.

ALSA kliensek

Telepítse a pipewire-alsa szoftvercsomagot (és amennyiben előzőleg a pulseaudio-alsa szoftvercsomag telepítve lett, akkor távolítsa azt el), annak érdekében, hogy az ALSA API interfészt használó összes alkalmazást Ön a PipeWire szoftveren keresztül irányítsa.

PulseAudio kliensek

Telepítse a pipewire-pulse szoftvercsomagot. Ez lecseréli a pulseaudio és a pulseaudio-bluetooth szoftvercsomagokat. Indítsa újra a számítógépet, jelentkezzen be újra, vagy állítsa le a pulseaudio.service szolgáltatást, és indítsa el a pipewire-pulse.service user unitot a változás érvényesítése érdekében.

Általában nincs szükség további lépésekre, mivel a pipewire-pulse.socket felhasználói szolgáltatásnak automatikusan engedélyezve kell, hogy legyen a szoftvercsomag által. Annak ellenőrzéséhez, hogy a csere működik-e, futtassa a következő parancsot a Server Name és az alapértelmezett bemenet/kimenet megjelenítéséhez:

$ pactl info
...
Server Name: PulseAudio (on PipeWire x.y.z)
...
Default Sink: alsa_output.{bus}-{device}.{profile}
Default Source: alsa_input.{bus}-{device}.{profile}
...

A pactl(1) parancsot a PulseAudio klienskönyvtár szoftvercsomagja (libpulse) biztosítja, amely a pipewire-pulse szoftvercsomag szoftvercsomag-függőségeként kerül telepítésre.

Általános vagy az egyes csatornák hangerejének a beállítása

A kimeneti csatorna hangerejének beállításához meg kell adni a sink nevű eszközt a pactl get-sink-volume {sink} parancs használatával. Ez lehet a Default Sink: (fentebb) vagy a Name: (lentebb) értéke. Az alapértelmezett sink eszköz (@DEFAULT_SINK@), vagy a Sink # (pl. 1 lentebb) :

$ pactl list sinks | grep -B1 -A9 State:
Sink #1
        State: RUNNING
        Name: alsa_output.pci-0000_2d_00.4.analog-surround-51
...
        Driver: PipeWire
...
        Mute: no
        Volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB,   rear-left: 65536 / 100% / 0.00 dB,   rear-right: 65536 / 100% / 0.00 dB,   front-center: 65536 / 100% / 0.00 dB,   lfe: 65536 / 100% / 0.00 dB
                balance 0.00

Tipp: Amennyiben folyamatban van hanglejátszás, akkor használja a grep(1) parancsot a RUNNING állapot kereséséhez, mivel a többi eszköz SUSPENDED (felfüggesztett) állapotban lesz.

A balansz aránya automatikusan kerül kiszámításra. Az alapértelmezett eszköz általános hangerőszintjének beállításához használja a következőt:

pactl set-sink-volume @DEFAULT_SINK@ 75%

Az egyes csatornák beállításához adja meg külön-külön mindegyik csatorna hangerőszintjét:

pactl set-sink-volume @DEFAULT_SINK@ 100% 75% 100% 75% 100% 100%

A bemeneti forrásokat hasonló módon kell kezelni. További beállításokkal kapcsolatban (például a modulokra vonatkozóan) tekintse meg a hivatalos upstream Wiki oldalt a PulseAudio szoftverről való áttérésről és a Pipewire-Pulse beállításáról.

JACK kliensek

Telepítse a pipewire-jack szoftvercsomagot a JACK támogatás érdekében. Létezik továbbá a lib32-pipewire-jack szoftvercsomag is a multilib támogatás számára.

A pw-jack(1) használható a JACK kliensek indításához, de technikailag nem kötelező, mivel csupán egy burkolóként szolgál a PIPEWIRE_REMOTE, PIPEWIRE_DEBUG és PIPEWIRE_LATENCY környezeti változók körül.

Lehetőség van egy egyéni pufferméret beállítására a buffersize/samplerate hányados megadásával (ami másodpercekben adja meg a blokk késleltetését):

PIPEWIRE_LATENCY="128/48000" application

Bluetooth eszközök

Ha a pipewire-audio szoftvercsomag telepítve van, akkor a PipeWire kezeli a Bluetooth hangkészülékeket.

Automatikus profilválasztás

A WirePlumber alapértelmezés szerint engedélyezi a profil automatikus váltását. Képes automatikusan váltani a HSP/HFP és A2DP profilok között, amikor bemeneti adatfolyamot érzékel. Az alábbi parancs segítségével le lehet tiltani ezt a viselkedést:

$ wpctl settings --save bluetooth.autoswitch-to-headset-profile false

A pipewire-media-session szoftvercsomag ezt alapértelmezés szerint letiltva tartalmazza. Ön az bluez5.autoswitch-profile tulajdonságot true értékre állíthatja az engedélyezés érdekében:

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

PipeWire patch készletek a parancssor számára

A qpwgraph használható kapcsolatok megjelenítésére és létrehozására, valamint patch készletek mentésére és betöltésére is.

Nem grafikus felületű igényekhez az alábbi bash parancsfájlok használhatóak a huzalkészletek mentésére, betöltésére és az összes kapcsolat eltávolítására. A mentéshez és betöltéshez használjon egy parancssori paramétert a fájlnév megadásához.

Parancsfájlok a PipeWire 0.3.57-es vagy újabb verziójához
pw-savewires
#!/bin/bash

if [[ "$#" -ne 1 ]]; then
    echo
    echo 'usage: pw-savewires filename'
    echo
    exit 0
fi

rm $1 &> /dev/null

link_nodeOutput=''

while IFS= read -r line; do
    if [[ "$line" =~ [|] ]];
    then
        link_nodeInput=`echo $line | cut -d ">" -f 2`
        echo "Saving $link_nodeOutput, ${link_nodeInput//' '}"
        echo "$link_nodeOutput ${link_nodeInput//' '}">> $1
    else
        link_nodeOutput="$line"
    fi
done < <(pw-link -lo)
pw-loadwires
#!/bin/bash

if [[ "$#" -ne 1 ]]; then
    echo
    echo 'usage: pw-loadwires filename'
    echo
    exit 0
fi

while IFS= read -r line; do
    echo "Connecting $line"
    pw-link $line
done < <(cat $1)
pw-dewire
#!/bin/bash
link_nodeOutput=''

while IFS= read -r line; do
    if [[ "$line" =~ [|] ]];
    then
        link_nodeInput=`echo $line | cut -d ">" -f 2`
        echo "Removing $link_nodeOutput, ${link_nodeInput//' '}"
        pw-link -d $link_nodeOutput ${link_nodeInput//' '}
    else
        link_nodeOutput="$line"
    fi
done < <(pw-link -lo)
Parancsfájlok a PipeWire 0.3.56-os vagy korábbi verziójához

This article or section is being considered for removal.

Reason: A PipeWire 0.3.57-es verziójától kezdve a pw-cli dump parancs már nem támogatott. (Discuss in Talk:PipeWire (Magyar))
pw-savewires
#!/bin/bash

if [[ "$#" -ne 1 ]]; then
	echo
	echo 'usage: pw-savewires filename'
	echo
	exit 0
fi

rm $1 &> /dev/null
while IFS= read -r line; do
	link_on=`echo $line | cut -f 4 -d '"'`
	link_op=`echo $line | cut -f 6 -d '"'`
	link_in=`echo $line | cut -f 8 -d '"'`
	link_ip=`echo $line | cut -f 10 -d '"'`
	echo "Saving: " "'"$link_on:$link_op"','"$link_in:$link_ip"'"
	echo "'"$link_on:$link_op"','"$link_in:$link_ip"'" >> $1
done < <(pw-cli dump short link)
pw-loadwires
#!/bin/python

import sys
import csv
import os

if len(sys.argv) < 2:
	print('\n usage: pw-loadwires filename\n')
	quit()

with open(sys.argv[1], newline='') as csvfile:
	pwwreader = csv.reader(csvfile, delimiter=',', quotechar='"')
	for row in pwwreader:
		print('Loading:  ' + row[0] + ' --> ' + row[1])
		process = os.popen('pw-link ' + row[0] + ' ' + row[1])
pw-dewire
#!/bin/bash
while read -r line; do
	echo 'Dewiring: ' $line '...'
	pw-link -d $line
done < <(pw-cli dump short link {{!}} grep -Eo '^[0-9]+')

Hangkészülékek megosztása a hálózaton lévő számítógépekkel

A PipeWire többféle mechanizmust is támogat a hang hálózaton keresztül történő megosztás számára. Többek között a következőket támogatja:

A PipeWire wiki tartalmaz egy áttekintő és összehasonlító oldalt a különböző hálózati protokollokról.

Az alábbiakban a Pulse Tunnel módszer kerül bemutatásra. A PipeWire PulseAudio megvalósítása támogatja a hálózati streamelést. Az egyik legegyszerűbb módja a hang megosztásának a hálózaton lévő számítógépek között az Avahi szolgáltatás használata a streaming felfedezése számára. Ennek a funkciónak az engedélyezéséhez telepítse a pipewire-zeroconf szoftvercsomagot.

Győződjön meg arról, hogy az avahi-daemon.service szolgáltatás fut (és amennyiben Ön tűzfalat használ, akkor a 5353-as UDP port nyitva van) minden olyan számítógépen, amely hangot fog megosztani.

Note: Egyes grafikus felhasználói felülettel rendelkező hangerőszabályzók alapértelmezetten elrejtik a hálózati kártyákat. (Például a Plasma környezetben a "Hangbeállítások szerkesztése..." menüpontban be kell jelölni a "Virtuális eszközök megjelenítése" opciót).

A helyi hangeszközök megosztása érdekében töltse be a megfelelő modulokat a host számítógépen (ügyeljen arra, hogy a helyi IP-címet használja):

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

Majd töltse be a felderítő modult a klienseken:

$ pactl load-module module-zeroconf-discover

Egy dedikált beállításfájl létrehozásával lehetőség van a modulok automatikus betöltésére is:

/etc/pipewire/pipewire-pulse.conf.d/50-network-party.conf (vagy ~/.config/pipewire/pipewire-pulse.conf.d/50-network-party.conf)
pulse.cmd = [
    { cmd = "load-module" args = "module-native-protocol-tcp listen=192.168.1.10" }
    { cmd = "load-module" args = "module-zeroconf-discover" }
    { cmd = "load-module" args = "module-zeroconf-publish" }
]
Hang streamelése egy AirPlay vevőre

Lehetséges hangot streamelni egy olyan eszközre, amely AirPlay vevőként azonosítja magát. Ennek a funkciónak az engedélyezéséhez töltse be az RAOP Discover modult:

$ pactl load-module module-raop-discover

Lehetséges ezt a modult automatikusan is betölteni egy dedikált beállításfájl létrehozásával:

/etc/pipewire/pipewire.conf.d/raop-discover.conf (or ~/.config/pipewire/pipewire.conf.d/raop-discover.conf)
context.modules = [
   {
       name = libpipewire-module-raop-discover
       args = { }
   }
]

Egyes hangszórók AirPlay-megvalósításai (például a Sonos AirPlay 2 hangszórók) megkövetelhetik a 6001-es és 6002-es portok megnyitását bejövő UDP-forgalom számára a forrást jelentő eszközön.

PipeWire futtatása a natív JACK réteg felett

Ha erre szükség van, akkor a PipeWire szintén képes JACK kliensként futni a natív JACK szolgáltatás fölött.

Tekintse meg a JACK és PipeWire (PipeWire wiki) valamint a JACK Bridge (PipeWire wiki) oldalakat további információkért és kiegészítő beállítási lehetőségekért (például az elérhető csatornákat illetően).

A használatához telepítse a pipewire-jack-client szoftvercsomagot, és indítsa el a JACK-et. A PipeWire-nek automatikusan csatlakoznia kell a hídon keresztül.

Note: Mivel a pipewire 0.3.81-es verziójától kezdődően a jackdbus modul betöltése automatikusan történik, ezért többé nincs rá szükség.

Manuális úton is betölthető (a pactl(1) leírása szerint), hasonlóan egy PulseAudio modulhoz: A jack elindítása előtt a pactl load-module module-jackdbus-detect parancsot kell használni.

ALSA dmix eszközök használata PipeWire kimenetként

Lehetőség van arra, hogy egy PipeWire szerver (vagy több szerver, tehát felhasználónként egy szerver) az ALSA rendszerre továbbítsa a hangot az ALSA dmix eszközök segítségével. Ez a megoldás lehetővé teszi az Ön számára, hogy az ALSA legyen a fő hangkimeneti rendszer, miközben nem ALSA-alapú eszközöket, például Bluetooth fejhallgatókat is használni tud.

ALSA dmix beállítása

Tegyük fel, hogy Önnek van kettő hangkártyája (PCH és HDMI) :

/proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xdff40000 irq 146
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI
                      HDA ATI HDMI at 0xdfe60000 irq 147

Az Ön PCM -je így néz ki:

/proc/asound/pcm
00-00: ALC1220 Analog : ALC1220 Analog : playback 1 : capture 1
00-02: ALC1220 Alt Analog : ALC1220 Alt Analog : capture 1
01-03: HDMI 0 : HDMI 0 : playback 1
01-07: HDMI 1 : HDMI 1 : playback 1
01-08: HDMI 2 : HDMI 2 : playback 1
01-09: HDMI 3 : HDMI 3 : playback 1
01-10: HDMI 4 : HDMI 4 : playback 1
01-11: HDMI 5 : HDMI 5 : playback 1

Továbbá tegyük fel, hogy az Ön ALSA beállítása valahogy így néz ki:

/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"
}

Ebben a konkrét példában a dmix eszközök a dmix:PCH,0 és dmix:HDMI,9 lennének.

PipeWire dmix beállítás

Először is, a monitor.alsa funkció leállításával állítsa le a WirePlumber számára a hardveres ALSA eszközök figyelését és hozzáadását:

/etc/wireplumber/wireplumber.conf.d/10-disable-alsa-monitor.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/10-disable-alsa-monitor.conf)
wireplumber.profiles = {
  main = {
    monitor.alsa = disabled
  }
}

Most állítsa be a PipeWire szoftver úgy, hogy dmix eszközöket használjon. Az alapértelmezett beállításfájl (/usr/share/pipewire/pipewire.conf) tartalmaz egy kikommentelt példát, amelyet Ön alapként felhasználhat.

Adjon hozzá egy saját elemet a context.objects tömbhöz:

/etc/pipewire/pipewire.conf.d/alsa-dmix.conf (vagy ~/.config/pipewire/pipewire.conf.d/alsa-dmix.conf)
context.objects = [
    # Nem a dmix használatával kezdünk, hanem egy bemeneti eszközzel.
    # Ne feledje el hozzáadni a bemeneti eszközt.
    # Egy barátom laptopján láttam, ahogy a Zoom teljesen
    # összeomlik és vég nélkül sírt, mert nem volt
    # bemeneti eszköz beállítva! Ön most figyelmeztetve lett.
    { factory = adapter
        args = {
            factory.name           = api.alsa.pcm.source
            node.name              = "alsa-mic-internal" # A pulse eszköz neve (mpv esetén).
            node.description       = "Mic Internal" # A pulse eszköz neve (pavucontrol esetén).
            media.class            = "Audio/Source"
            api.alsa.path          = "hw:PCH,0"
        }
    }
    # Rendben, most hozzáadjuk a dmix PCM-eket.
    { factory = adapter
        args = {
            factory.name           = api.alsa.pcm.sink # sink for dmix
            node.name              = "alsa-dmix-internal" # A pulse eszköz neve (mpv esetén).
            node.description       = "PCM Internal" # A pulse eszköz neve (pavucontrol esetén).
            media.class            = "Audio/Sink" # Kimenet a dmix számára.
            api.alsa.path          = "dmix:PCH,0"
        }
    }

    { factory = adapter
        args = {
            factory.name           = api.alsa.pcm.sink # Kimenet a dmix számára.
            node.name              = "alsa-dmix-hdmi" # A pulse eszköz neve (mpv esetén).
            node.description       = "PCM HDMI" # A pulse eszköz neve (pavucontrol esetén).
            media.class            = "Audio/Sink" # Kimenet a dmix számára.
            # Emlékezzen arra, hogy ez egy nem alapértelmezett dmix az /etc/asound.conf fájlból.
            api.alsa.path          = "dmix:HDMI,9"
        }
    }
]

Közönséges felhasználóként (nem root jogosultsággal rendelkező felhasználóként) nézze meg a wpctl status parancs kimenetét, és állítsa be az alapértelmezett bemeneti (forrás) és kimeneti (nyelő) eszközöket a wpctl set-default ID paranccsal. Az ID az a szám, amely a nyelő/forrás nevek előtt szerepel.

Most már teljes mértékben tesztelheti az Ön beállítását.

Eszközprofilok közötti váltás

Egyes hardveres hangeszközök, például a snd_hda_intel, eltérően működnek attól függően, hogy melyik profilban fut az eszköz. A snd_hda_intel esetében külön profilok léteznek a HDMI és az analóg kimenet számára.

HDMI kimenetre való átváltás WirePlumber használatával:

$ wpctl set-profile <device-ID> 3
$ wpctl status
...
├─ Sinks:
│  *   53. Built-in Audio Digital Stereo (HDMI) [vol: 1.00]
...

Analóg kimenetre való átváltás WirePlumber használatával:

$ wpctl set-profile <device-ID> 1
$ wpctl status
...
├─ Sinks:
│  *   51. Built-in Audio Analog Stereo        [vol: 0.60]
...

WebRTC képernyőmegosztás

A legtöbb alkalmazás korábban az X11 rendszert használta az asztal (vagy az egyes alkalmazások) képernyőrögzítésére, például amikor WebRTC-t használtak a webböngészőkben (például a Google Meet esetében). A Wayland alatt a képernyőmegosztási mechanizmust az XDG Desktop Portal és a PipeWire kezeli, amely lehetővé teszi a tartalmak megosztását Wayland környezetben, részletes hozzáférés-szabályozással.

Tip: Tesztelje, hogy működik-e a WebRTC képernyőmegosztás a Mozilla GetUserMedia WebRTC tesztoldalának használatával.
Note: Az xdg-desktop-portal 1.10.0 verziója kijavított egy eltérést a specifikáció és a D-Bus interfész implementációja között [3]. Ezért előfordulhat, hogy egyes kliensek nem működnek az xdg-desktop-portal 1.10.0 vagy újabb verzióival.

A Firefox (84-es vagy újabb verzió) és a Chromium (110-es vagy újabb verzió) alapértelmezetten támogatja ezt a módszert, míg a Chromium régebbi (73-as vagy újabb) verzióiban engedélyezni kell a WebRTC PipeWire támogatást a megfelelő (kísérleti) jelölő beállításával a chrome://flags/#enable-webrtc-pipewire-capturer URL-címen, vagy a --enable-features=WebRTCPipeWireCapturer parancssori argumentummal.

Az obs-studio (27-es vagy újabb verzió) támogatja ezt a módszert az új PipeWire rögzítési forrás használatával.

Videó

This article or section needs expansion.

Bár a szoftver még nem készült el teljesen a gyártási környezetre, biztonságosan lehet vele kísérletezni. A legtöbb olyan alkalmazás, amely a GStreamer keretrendszert használja például videófolyamok kezelésére, várhatóan gond nélkül működik a PipeWire GStreamer bővítménnyel. Részletekért tekintse meg a GStreamer#PipeWire leírást. Az olyan alkalmazások, mint például a cheese, már képesek videobemenetet megosztani ezen keresztül.

A pipewire-v4l2 szoftvercsomag használatával lehetséges a pw-v4l2 szkript segítségével betölteni egy könyvtárat (/lib/pipewire-0.3/v4l2/libpw-v4l2.so), amely elfogja a v4l2 hívásokat, és a videót a pipewire rendszeren keresztül irányítja.

Hang utófeldolgozása

Pipewire module-filter-chain

A PipeWire rendelkezik egy belső modullal, amelynek neve filter-chain, és amely képes olyan csomópontokat létrehozni, amelyek hangbemenet és hangkimenet feldolgozására szolgálnak. Példákat a /usr/share/pipewire/filter-chain/ könyvtárban talál. Ezek a példák többek között hangkiegyenlítést, virtuális térhangzást, LADSPA bővítményeket és csatornakeverést tartalmaznak.

LADSPA

Számos LADSPA bővítmény telepíthető a hivatalos szoftvercsomag-tárolókból, és ezek használhatóak a PipeWire szűrőláncaiban. Egy adott fájl által biztosított bővítménycímkék és elérhető vezérlők listázásához használja a ladspa szoftvercsomagban található analyseplugin segédprogramot:

$ analyseplugin /usr/lib/ladspa/lsp-plugins-ladspa.so

Rendszerszintű parametrikus hangkiegyenlítés

Másolja a /usr/share/pipewire/filter-chain/sink-eq6.conf fájlt az /etc/pipewire/pipewire.conf.d/ könyvtárba (vagy a ~/.config/pipewire/pipewire.conf.d/ könyvtárba).

Ezután szerkessze a sink-eq6.conf fájlt a kívánt paraméterek beillesztéséhez. Fejhallgatók esetén ezek beszerezhetőek az Oratory1990 adatbázisából, vagy ha ott nem szerepelnek, akkor az AutoEQ projektből.

Ha előerősítőre van szükség, akkor módosítsa az eq_band_1 beállítást úgy, hogy egy bq_highshelf szűrőt alkalmazzon 0 Hz frekvencián negatív erősítéssel (a támogatott erősítés -120 dB és +20 dB között van):

label = bq_highshelf
control = { "Freq" = 0 "Q" = 1.0 "Gain" = -7.5 }

Több mint 6 sáv esetén adjon hozzá további bejegyzéseket a nodes listához, valamint a megfelelő linkeket, amelyek az egyik szűrő ":Out" kimenetét a következő szűrő ":In" bemenetéhez kapcsolják, például amikor 11 sávra (előerősítő + 10) szeretné növelni a számukat.

                    { output = "eq_band_6:Out" input = "eq_band_7:In" }
                    { output = "eq_band_7:Out" input = "eq_band_8:In" }
                    { output = "eq_band_8:Out" input = "eq_band_9:In" }
                    { output = "eq_band_9:Out" input = "eq_band_10:In" }
                    { output = "eq_band_10:Out" input = "eq_band_11:In" }

Indítsa újra a Pipewire szoftvert, válassza az "Equalizer Sink" lehetőséget alapértelmezett hangkimeneti eszközként. Ennek ezután minden alkalmazásra érvényesnek kell lennie.

EasyEffects

Az EasyEffects (korábbi nevén PulseEffects) egy GTK-alapú segédprogram, amely számos hangeffektust és szűrőt biztosít az egyes alkalmazások kimeneti hangeszközeire és a mikrofon bemeneti csatornáira. Figyelemre méltó effektusai közé tartozik a bemeneti/kimeneti hangszínszabályzó, a kimeneti hangerő-kiegyenlítés és a basszuskiemelés, valamint a bemeneti de-esser és zajcsökkentő bővítmény. A hatások teljes listájáért tekintse meg ezt a GitHub weboldalt.

Note: A Firefox böngészőnél probléma adódhat a mikrofon stream kezelésével. Részletekért tekintse meg ezt a Github oldalt hol a problémát tárgyalják.

Az EasyEffects használatának érdekében telepítse az easyeffects szoftvercsomagot. A Community Presets részben előre elkészített beállításgyűjtemény található. Az AutoEq gyűjteményében algoritmikusan generált fejhallgató EQ-beállítások érhetőek el.

Note: Az EasyEffects indítás után összeomolhat, GTK hibákat dobhat. A megkerülési megoldásért tekintse meg a kapcsolódó Github bejegyzést a problémával kapcsolatban.
Note: A PulseEffects korábbi verziójához tekintse meg a PulseAudio#PulseEffects leírást.

NoiseTorch

A NoiseTorch egy alternatív megoldás a zajcsökkentésre, amely a noisetorchAUR szoftvercsomag részeként érhető el. Létezik továbbá a noisetorch-gitAUR verzió is.

A program elindítása után a modul betölthető a kiválasztott mikrofonhoz. Lehetőség van a hangaktiválási küszöb beállítására is, amelyet a legmagasabb szintre kell állítani, hogy ne szűrje ki a valódi beszédhangot.

A hangfeldolgozás automatikusan elindítható a systemd segítségével. Ezzel kapcsolatban tekintse meg a [4] leírást. Vegye figyelembe, hogy amennyiben a noisetorch az AUR szoftvercsomag-tárolóból lett telepítve, akkor a bináris fájl elérési útvonala eltérő.

Zajelnyomás a beszéd számára

Telepítse a noise-suppression-for-voice szoftvercsomagot.

A telepítés után kövesse a GitHub weboldalon megadott utasításokat.

JamesDSP

A JamesDSP for Linux (elérhető jamesdspAUR néven) nyílt forráskódú hangeffekteket biztosít a PipeWire és a PulseAudio rendszerek számára. Saját effektmotorját használja, függetlenül a LADSPA, Calf és hasonlóktól. A JamesDSP eredetileg Android eszközökre készült hanghatás-feldolgozóként jelent meg.

LADSPA, LV2 és VST bővítmények használata

Ha az elérhető LADSPA, LV2 és VST bővítmények teljes listájából szeretne választani, akkor ezeket alkalmazhatja a carla segítségével a pipewire-jack használatával.

Indítsa el a Carla szoftvert, majd lépjen a Beállítások > Carla beállítása > Motor menüpontra. Győződjön meg róla, hogy a Audio driver JACK-re van állítva, és válasszon egy feldolgozási módot az igényeinek megfelelően. A feldolgozási módot úgy is kiválaszthatja, ha a Carla szoftvert egy adott paranccsal indítja el, például a carla-rack paranccsal a Continuous Rack módhoz.

Az alkalmazások kimeneteit kézzel is csatlakoztathatja a Carla szoftverhez, azonban ha több alkalmazást is a Carla szoftveren keresztül kíván átvezetni, akkor kényelmesebb lehet egyetlen virtuális eszköz létrehozása az alkalmazások és a Carla között, és ezt opcionálisan alapértelmezett eszközként is használhatja. Kezdetben hozzon létre egy új null sinket default_null_sink néven.

/etc/pipewire/pipewire.conf.d/10-default-null-sink.conf (vagy ~/.config/pipewire/pipewire.conf.d/10-default-null-sink.conf)
context.objects = [
  {
    factory = adapter
    args = {
      factory.name = support.null-audio-sink
      node.name = "default_null_sink"
      media.class = Audio/Sink
      audio.position = [ FL FR ]
      monitor.channel-volumes = true
      monitor.passthrough = true
    }
  }
]

Indítsa újra a PipeWire szoftvert a változtatások érvényesítése érdekében.

Alternatív megoldásként létrehozhat egy ideiglenes virtuális eszközt a pw-cli(1) segítségével, vagy ha a pipewire-pulse telepítve van, akkor a pactl(1) segítségével. A részletekért tekintse meg a PipeWire wiki weboldalát.

A Continuous Rack feldolgozási módban a lista tetején lévő bővítmény fogja először megkapni a hangfolyamot, ugyanúgy, mint az EasyEffects esetében. Ezután lépjen a Patchbay fülre, és csatlakoztassa a default_null_sink Bal/Jobb monitorjait a Carla bemeneteihez, majd a Carla kimeneteit a kívánt eszköz (hangszórók, fülhallgató, HDMI stb.) lejátszási csatornáihoz. Mentse el a beállítást egy helyi fájlba, például: ~/Documents/carla_sink_effects.carxp. A Carla automatikusan visszaállítja a csatlakozásokat a fájl megnyitását követően.

A hanghatások tesztelhetőek, miközben egy multimédia-alkalmazás hangot játszik le, például egy videó megtekintése közben egy weboldalon a Firefox böngészőn keresztül. Ennek két módja van. Az első mód amikor a Carla Patchbay fülön belül válassza le az összes Firefox kapcsolatot, majd csatlakoztassa annak Bal/Jobb kimeneteit a default_null_sink lejátszóihoz. A második esetben a pavucontrol segítségével keresse meg a Firefox hangfolyamát, és irányítsa át azt a default_null_sink-re (ez megjegyzi a kapcsolatot, így a következő indításkor automatikusan ugyanarra a sinkre irányítja az alkalmazást).

To run Carla with the Continuous Rack process mode and load the saved file at startup, create a systemd user service: A Carla Continuous Rack feldolgozási móddal történő futtatásához, és a mentett fájl indításkori betöltéséhez hozzon létre egy systemd felhasználói szolgáltatást :

~/.config/systemd/user/jack-carla-rack.service
[Unit]
Description=Load Carla Rack JACK host

[Service]
Environment=PIPEWIRE_LINK_PASSIVE=true
Type=exec
ExecStart=/usr/bin/carla-rack --no-gui %h/Documents/carla_sink_effects.carxp

[Install]
WantedBy=default.target

Majd engedélyezze a jack-carla-rack.service felhasználói unitot.

Vegye figyelembe, hogy ha a default_null_sink eszközt állítja be alapértelmezettként a rendszerbeállításokban, akkor minden alkalmazás erre lesz átirányítva, és a hangerőszabályzó billentyűk ennek a szintjét módosítják, nem pedig a hangszórókét. Ha a hangszórók hangerejét szeretné szabályozni, akkor hagyja őket alapértelmezettként a rendszerbeállításokban, és irányítsa át a kívánt alkalmazást a default_null_sink eszközre a pavucontrol segítségével (a PipeWire kompatibilitási réteg megjegyzi a kapcsolatot, így ugyanazon alkalmazás következő indításakor is automatikusan erre az eszközre irányítja azt).

Hibaelhárítás

This article or section is a candidate for merging with PipeWire (Magyar)/Troubleshooting (Magyar).

Notes: Ez a szakasz elég hosszú ahhoz, hogy egy külön aloldalra legyen átrakva. (Discuss in Talk:PipeWire (Magyar)#Hibaelhárítás áthelyezése egy külön oldalra)

Hanggal kapcsolatos hibák

Nem észleli a PipeWire a mikrofont

A PipeWire alsa-monitor modulja alapértelmezés szerint az alsa-card-profiles segítségével észleli az eszközöket. Ha ez nem működik az Ön számára, akkor próbálja meg kikapcsolni az api.alsa.use-acp beállítást, vagy választhatóan kapcsolja be az api.alsa.use-ucm beállítást a wireplumber szoftverben:

/etc/wireplumber/wireplumber.conf.d/50-alsa-config.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/50-alsa-config.conf)
monitor.alsa.properties = {
  # Használja az ALSA-Card-Profile eszközöket. Ők az UCM-et
  # vagy a profilbeállítást használják az eszköz és a keverő beállításához.
  # alsa.use-acp = true
  # Ha elérhető, akkor használja az UCM-et a profil helyett. Letiltható
  # annak érdekében, hogy kihagyja az UCM profil használatának megkísérlését.
  alsa.use-ucm = true
}


A pipewire-media-session segítségével:

/etc/pipewire/media-session.d/alsa-monitor.conf (vagy ~/.config/pipewire/media-session.d/alsa-monitor.conf)
...
rules = [
    {
        ...
        actions = {
        update-props = {
            ...
            api.alsa.use-acp = false
...

Ezután indítsa újra a WirePlumber szoftvert, és ellenőrizze az elérhető eszközöket:

This article or section is out of date.

Reason: Az --list-targets kapcsoló már nem érhető el a pw-record legújabb verzióiban. Az objektumok listázásához használja helyette a wpctl status, pw-cli ls vagy pw-dump parancsok valamelyikét. (Discuss in Talk:PipeWire (Magyar))
$ pw-record --list-targets
Available targets ("*" denotes default): 62
	58: description="Built-in Audio" prio=1872
	60: description="Built-in Audio" prio=2000
*	62: description="Built-in Audio (Loopback PCM)" prio=1984

Egy alternatív megoldás, amelyet ebben a PipeWire hibabejelentésben javasoltak, az, hogy manuálisan adja hozzá a mikrofont. Először is győződjön meg arról, hogy a mikrofont az ALSA felismeri.

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card card_number: card_name, device device_number: device_name
  ...

Válassza ki a mikrofont a listából, és a mikrofon további teszteléséhez futtassa a következő parancsokat.

$ arecord --duration=5 --format=dat --device=hw:card_number,device_number test-mic.wav # Felvétel a mikrofontól.
$ aplay test-mic.wav # Felvétel lejátszása.

Ha a mikrofon működik az arecord paranccsal, de a PipeWire nem ismeri fel, akkor próbáljon meg egy beállításfájlt hozzáadni az eszköz manuális hozzáadásánál.

/etc/pipewire/pipewire.conf.d/microphone.conf (vagy ~/.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:card_number,device_number"
        }
    }
]

Ezután indítsa újra a PipeWire szoftvert a beállítás újratöltése érdekében.

Hang nem vált át automatikusan új eszköz csatlakoztatásakor.

Az újonnan csatlakoztatott eszközökre történő automatikus átváltás érdekében hozza létre ezt a fájlt:

/etc/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf (vagy ~/.config/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf)
pulse.cmd = [
    { cmd = "load-module" args = "module-switch-on-connect" }
]

Ezután indítsa újra a pipewire-pulse.service szolgáltatást a systemctl --user paranccsal, és ellenőrizze, hogy a module-switch-on-connect be van-e töltve.

Nincs hang a Bluetooth-eszközhöz való csatlakozás után

2020.12.07-től kezdődően, amennyiben nincs hang a Bluetooth-eszközhöz való csatlakozás után, előfordulhat, hogy át kell állítani az alapértelmezett kimenetet (sink), és/vagy át kell helyezni egy kimeneti adatfolyamot a megfelelő kimenetre. Használja a pactl list sinks parancsot az elérhető kimenetek listázása érdekében, és a pactl set-default-sink parancsot az alapértelmezett kimenet Bluetooth-eszközre való átváltásához. Ez automatizálható az udev segítségével egy ehhez hasonló szkripttel.

Tekintse meg ezt a Reddit bejegyzést a probléma részletes megvitatása érdekében. A szkript szerzője szerint a headset profil (HSP) továbbra is problémákat okozhat.

Nincs hang az mpv, vlc, totem alkalmazásokban, de a hang működik a webböngészőben és a GNOME hangszórótesztben

The factual accuracy of this article or section is disputed.

Reason: A szöveg stílusa nem enciklopédikus, inkább blog-jellegű. Átfogalmazásra és rövidítésre van szükség. Az alfejezetek túlzásnak számítanak. A probléma feltételezett oka nincs megerősítve. (Discuss in Talk:PipeWire (Magyar))
Állapot leírása

A probléma állapotának ellenőrzésére a legjobb eszköz az mpv használata egy olyan fájllal, amely az elérhető kodekekkel várhatóan működik:

$ mpv --ao=alsa test_file.mpv
$ mpv --ao=pcm test_file.mpv
$ mpv --ao=jack test_file.mpv
$ mpv --ao=pulse test_file.mpv
$ mpv --ao=openal test_file.mpv

Ez a megoldás akkor alkalmazható, amikor a fenti tesztek közül néhány vagy mindegyik hangot ad, de ugyanaz a teszt a pipewire opcióval nem ad hangot:

$ mpv --ao=pipewire test_file.mpv

A GNOME asztali hangszóróteszt és a webböngészőben a 'YouTube' érvényes hangkimenetet ad.

A bemenetek váltása, a némítás és visszahangosítás, valamint a hangerő módosítása a GNOME kornyezetben nem oldja meg a problémát.

A pactl list sinks által 'SUSPENDED' állapotúnak jelzett kimenet nem jelent problémát, mivel az állapot megfelelően megváltozik, amikor videót játszik le webböngészőn keresztül.

A pactl info használata nem utal semmilyen nyilvánvaló problémára.

A vonatkozó systemd egységek naplóinak átvizsgálása nem utal semmilyen nyilvánvaló problémára.

Hiba oka

Úgy tűnik, hogy a pipewire és a hardver közötti út valahogyan elnémult vagy megváltozott. Az eredeti szerző nem tudja, hogyan lehetne azonosítani és rámutatni a problémára parancssoros eszközök segítségével.

Megoldás

Telepítse a pavucontrol szoftvercsomagot. Futtassa a pavucontrol parancsot, válassza ki a megfelelő forrást a Beállítás fülön, majd válassza ki újra a Kimeneti eszköz fülön, és használja a Némítás gombot a forrás némításához és visszahangosításához, miközben a mpv --ao=pipewire test.mp4 videó fut.

Alacsony hangerő

A PulseAudio szoftver Pipewire szoftverre való cseréje után a hang működhet megfelelően, de a számítógép újraindítása után a hangerő elviselhetetlenül alacsonnyá válhat.

Nyissa meg az alsamixer alkalmazást, használja az F6 billentyűgombot a megfelelő hangkártya kiválasztása érdekében, és győződjön meg róla, hogy az ALSA hangerők 100% értéken vannak. Az alsactl parancsnak meg kell őriznie ezt a beállítást újraindítás után.

RLIMIT_MEMLOCK növelése

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

Telepítse a realtime-privileges szoftvercsomagot, és adja hozzá az Ön saját felhasználóját a realtime csoporthoz.

Alternatívaként úgy tűnik, hogy a memlock 64 kB méretről 128 kB méretre növelése elegendő a javításhoz. Ha Ön a pipewire-pulse szolgáltatást systemd/User alatt futtatja, akkor adja hozzá a következőt:

username	soft	memlock	64
username	hard	memlock	128

a /etc/security/limits.d/username.conf fájlhoz.

Alapértelmezett mintavételi sebesség módosítása

Alapértelmezés szerint a PipeWire 48 kHz frekvenciájú fix globális mintavételi sebességet állít be. Ha módosítani kell ezt (például magasabb értéket támogató DAC-cel rendelkezik), akkor az alapértelmezett értéket a következőképpen állíthatja be:

/etc/pipewire/pipewire.conf (vagy ~/.config/pipewire/pipewire.conf)
...
context.properties = {
    ...
    default.clock.rate          = mintavételi_sebesség
    ...

Megengedett mintavételi sebesség(ek) módosítása

A PipeWire dinamikusan módosíthatja a DAC által támogatott kimeneti mintavételi sebességeket. A mintavételi sebesség az éppen lejátszott hang stream mintavételi sebességéhez igazodik.

~/.config/pipewire/pipewire.conf
...
context.properties = {
    ...
    default.clock.allowed-rates = [ mintavételezési_sebesség_1 mintavételezési_sebesség_2 mintavételezési_sebesség_3 ... ]
    ...

Például, [ 44100 48000 88200 96000 ].

A fejlesztő szerint: "A PipeWire legfeljebb 16 különböző mintavételi sebességet engedélyez, és lehetőség szerint vált közöttük". Ez azt jelenti, hogy a fenti konfigurációval nem történik újramintavételezés, amennyiben a hardver támogatja. A PipeWire 0.3.61 verziójától kezdve akár 32 különböző mintavételi sebesség is beállítható.

Engedélyezett mintavételi sebesség(ek) lekérdezése

Ellenőrizze a hardver kézikönyvét a DAC által támogatott értékekért. A kernel-illesztőprogram kodekje által támogatott sebességek a következő paranccsal listázhatóak.

$ grep -E 'Codec|Audio Output|rates' /proc/asound/card*/codec#*

Ha a DAC nem jeleníti meg a képernyőn a kodek-információkat, akkor a támogatott sebességeket így próbálhatja meg lekérni:

$ grep -m1 -Hn "" /proc/asound/card?/stream? | tee /dev/tty | awk -F':' '{print $1}' | xargs grep 'Rates'
Note: Bár a DAC chip jelenthet a specifikációban hirdetettnél magasabb mintavételi sebességeket, ezek egy része egzotikus üzemmódokhoz (pl. USB-ról I2S-re) lett tervezve.
Jelenleg használt mintavételi sebesség ellenőrzése

Futtassa a következő parancsot annak ellenőrzése érdekében, hogy megállapítsa, vajon melyik kimeneti mintavételi sebesség van használatban egy kártya számára:

$ grep rate: /proc/asound/card?/pcm??/sub?/hw_params
/proc/asound/card1/pcm0p/sub0/hw_params:rate: 96000 (96000/1)

A pcm0p vagy pcm0c esetében a c a "capture" (rögzítés) rövidítése, míg a p a "playback" (lejátszás) rövidítése.

A következő parancsa az egyes kártyák és hang streamek jelenleg használt mintavételi sebességét is megjeleníti:

$ pw-top
Tip: Ha a DAC nem vált magasabb sebességre a default.clock.allowed-rates beállítása után, akkor az azt jelezheti, hogy a rendszer nem képes felismerni a DAC által támogatott sebességeket. Ilyen esetben továbbra is megpróbálhatja beállítani a default.clock.rate értékét.

Hangminőség (átmintavételezési minőség)

Ha a PulseAudio szoftvert a resample-method = speex-float-10 vagy soxr-vhq beállítással használta, akkor érdemes lehet a resample.quality értékét 10 értékre vagy a maximális 14 értékre állítani:

/etc/pipewire/client.conf.d/resample.conf (vagy ~/.config/pipewire/client.conf.d/resample.conf)
stream.properties = {
    resample.quality = 10
}

Ne feledje el újraindítani a pipewire.service és pipewire-pulse.socket felhasználói szolgáltatásokat (különösen ne hagyja ki a pipewire-pulse.socket aljzatot, amennyiben szeretné, hogy a beállítások módosításai érvénybe lépjenek).

Nagyon kis minőségbeli különbség van a 10 és a 14 között, viszont a processzorterhelés különbség akár 2-3-szoros is. Azonban a 4, a 10 és a 14 közötti késleltetési különbséget még senki sem vizsgálta. A resample.quality = 14 beállítás 44100→48000 Hz frekvencián egy Ryzen 2600 processzoron azt okozza, hogy a pipewire vagy pipewire-pulse folyamatok egy processzormag terhelését 4.0% értékre emelik.

A mintavétel-frekvencia átalakító algoritmusokat itt hasonlíthatja össze: https://src.infinitewave.ca/ (ne vegyen figyelembe semmit 18 KHz felett és 120 dB felett). A speex az "Xiph.org Speex" néven szerepel.

A PipeWire saját mintavétel-frekvencia átalakító algoritmust használ, melynek a neve Spa. Pontosan ahogy a SoX esetében a sox, vagy a Speex esetében a speexenc, a PipeWire is tartalmaz egy különálló verziót: spa-resample. Használat:

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

Valószínűleg valamilyen módon lehetséges más mintavétel-frekvencia átalakítók használata egy Ön által létrehozott fogadó (sink) segítségével. Illetve, egyszerűen használjon egy bővítményt a zenelejátszójában (például a Qmmp rendelkezik SoX bővítménnyel).

Újracsatlakozás után a külső hangkártya nincs aktiválva

Ellenőrizze a ~/.config/pipewire/media-session.d/default-profile fájlt, hogy található-e benne alapértelmezett profil "off" bejegyzés, és távolítsa el azt. Ha ez nem segít, akkor törölje az összes fájlt a(z) ~/.config/pipewire/media-session.d/ könyvtárból, majd indítsa újra a pipewire.service user unitot.

Nincs hang, vagy a pactl info eredménye "Failure: Connection refused"

Ez azt jelenti, hogy az alkalmazások nem tudnak kapcsolódni a PipeWire-Pulse szolgáltatáshoz. Ellenőrizze, hogy a pipewire-pulse.service user unit fut-e.

Ha ez nem javítja a helyzetet, akkor futtassa a strace -f -o /tmp/pipe.txt pactl info parancsot, és tegye közzé a /tmp/pipe.txt tartalmát PasteBin weboldalon, miközben segítséget kér az IRC-en (#pipewire az OFTC hálózaton) vagy a levelezési listákon.

Alacsony hangminőség Bluetooth kapcsolaton

Abban az esetben, amikor a Bluetooth lejátszás megakad, ellenőrizze a pipewire.service user unit állapotát az alábbihoz hasonló hibák után kutatva:

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

Ha ezek jelentkeznek, akkor ellenőrizze a jelenleg kiválasztott kodeket a pactl list sinks parancs segítségével, és próbálja meg módosítani úgy, hogy a bluez5.codecs beállítást az sbc aac ldac aptx aptx_hd értékek egyikére állítja. Próbálkozhat az mSBC támogatás bekapcsolásával is (ez javítja a mikrofon minőségét Sony 1000XM3 eszközöknél, pl. WH-1000XM3 fejhallgatók és WF-1000XM3 fülhallgatók esetén), valamint próbálkozhat az SBC-XQ kodek használatával.

Note: Olyan fejhallgatók, mint a WH-1000XM3, nem hirdetnek más kodeket az SBC/SBC-XQ kivételével, amennyiben a kísérőalkalmazásban a "Hangminőség mód" beállítása "Prioritize Sound Quality" (Hangminőség elsőbbséget élvez) helyett "Priority On Stable Connection" (Stabil kapcsolat elsőbbsége) módban van.

A wireplumber szoftvercsomaggal:

/etc/wireplumber/wireplumber.conf.d/51-bluez-config.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/51-bluez-config.conf)
monitor.bluez.properties = {
  bluez5.enable-sbc-xq = true
  bluez5.enable-msbc = true
  bluez5.codecs = [ sbc sbc_xq ]
}

A pipewire-media-session szoftvercsomaggal:

/etc/pipewire/media-session.d/bluez-monitor.conf (vagy ~/.config/pipewire/media-session.d/bluez-monitor.conf)
...
properties = {
  ...
  bluez5.enable-msbc = true
  bluez5.enable-sbc-xq = true
  bluez5.codecs = [sbc sbc_xq]
...

A változtatások érvénybe léptetése érdekében indítsa újra a PipeWire szolgáltatást a pipewire.service user unit újraindításával.

Észrevehető hangkésleltetés vagy hallható pattogás/recsegés a lejátszás indításakor

Ezt a csomópont inaktivitás esetén történő felfüggesztése okozza.

A wireplumber szoftvercsomaggal hozzon létre egy új fájlt az alapértelmezett beállítás felülírása számára:

/etc/wireplumber/wireplumber.conf.d/51-disable-suspension.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/51-disable-suspension.conf)
monitor.alsa.rules = [
  {
    matches = [
      {
        # Matches all sources
        node.name = "~alsa_input.*"
      },
      {
        # Matches all sinks
        node.name = "~alsa_output.*"
      }
    ]
    actions = {
      update-props = {
        session.suspend-timeout-seconds = 0
      }
    }
  }
]
# bluetooth devices
monitor.bluez.rules = [
  {
    matches = [
      {
        # Matches all sources
        node.name = "~bluez_input.*"
      },
      {
        # Matches all sinks
        node.name = "~bluez_output.*"
      }
    ]
    actions = {
      update-props = {
        session.suspend-timeout-seconds = 0
      }
    }
  }
]

Indítsa újra a pipewire.service és wireplumber.service szolgáltatásokat a változtatások érvényesítése érdekében.

A felfüggesztés teljes kikapcsolása helyett beállíthatja a timeout értékét a kívánt másodpercek számára a forrás felfüggesztése előtti késleltetéshez.

Bizonyos eszközök saját csendészlelési és felfüggesztési mechanizmust valósítanak meg. Ezeknél pusztán a csomópont felfüggesztésének kikapcsolása nem lesz hatékony. Lehetséges azonban ezek megkerülése egy minimális zaj hozzáadásával, ezáltal biztosítva, hogy a kimenet soha ne váljon teljesen csendessé:

.../51-disable-suspension.conf
...
    session.suspend-timeout-seconds = 0,  # 0 disables suspend
    dither.method = "wannamaker3", # add dither of desired shape
    dither.noise = 2, # add additional bits of noise
...

Szükséges lehet a dither.noise és dither.method paraméterek finomhangolása annak érdekében, hogy a zaj decibelben mérhető alacsony szintű maradjon, ugyanakkor elemi méréstechnikával kimutathatóan megakadályozza a csend észlelését. Tekintse meg a PipeWire dokumentációt.

A pipewire-media-session szoftvercsomaggal:

Tiltsa le ezt a /etc/pipewire/media-session.d/*-monitor.conf beállításfájl szerkesztésével (attól függően, hogy hol jelentkezik a késleltetés), és módosítsa a(z) session.suspend-timeout-seconds tulajdonságot 0 értékre állítva a kikapcsoláshoz, vagy kísérletezzen más értékekkel annak megállapítására, hogy melyik működik optimálisan.

Alternatívaként kikommentezheti a suspend-node sort a /etc/pipewire/media-session.d/media-session.conf fájlban.

Indítsa újra mind a(z) pipewire.service, mind a(z) pipewire-pulse.service szolgáltatást a változtatások érvényesítése érdekében, vagy indítsa újra a számítógépet.

Megszakad a hang több streamelés indításakor

Ezt a problémát jellemzően a pipewire-pulse.service user unit naplójának olvasásával és az ehhez hasonló sorokat megtalálni lehet diagnosztizálni:

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

A hivatalos PipeWire hibakeresési útmutató szerint ennek a problémának a megoldásához a wireplumber esetében:

/etc/wireplumber/wireplumber.conf.d/50-alsa-config.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/50-alsa-config.conf)
monitor.alsa.rules = [
  {
    matches = [
      {
        node.name = "~alsa_output.*"
      }
    ]
    actions = {
      update-props = {
        api.alsa.period-size   = 1024
        api.alsa.headroom      = 8192
      }
    }
  }
]

A pipewire-media-session szoftvercsomaggal:

/etc/pipewire/media-session.d/alsa-monitor.conf (vagy ~/.config/pipewire/media-session.d/alsa-monitor.conf
api.alsa.headroom = 1024

Amennyiben hangakadást tapasztal a kerneloldali lapzárolás vagy a késői ütemezés miatt, akkor tekintse meg a Gaming_(Magyar)#Kernelparaméterek_finomhangolása_a_válaszidő-konzisztencia_érdekében című részt.

Torzult a hang

  • Mikrofonok esetében futtassa az alsamixer programot, majd navigáljon ahhoz a kártyához, amelynél problémát tapasztal, és a nyílbillentyűgombok segítségével csökkentse a "Mic Boost" vagy "Internal Mic Boost" beállításokat.
  • Kövesse a #Alapértelmezett mintavételi sebesség módosítása című részt, és csökkentse a mintavételezési rátát 44100 értékre (44,1 kHz).

Hanggal kapcsolatos problémák készenléti állapot után

Amennyiben a hang hiányzik vagy torzult a számítógép alvó állapotból való felébresztése után, akkor segíthet az ALSA újrainicializálása:

# alsactl init

Magas késleltetés USB DAC-okkal (például Schiit DAC-okkal)

A mintavételezési ráták vagy formátumok módosítása segíthet csökkenteni a késleltetést bizonyos DAC-ok esetében, például a Schiit Hel 2-nél[5].

A pipewire-media-session szoftvercsomag esetében:

Másolja át az alapértelmezett /usr/share/pipewire/media-session.d/alsa-monitor.conf beállításfájlt az /etc/pipewire/media-session.d/ könyvtárba (vagy a ~/.config/pipewire/media-session.d/ könyvtárba). Ezután fűzzön hozzá egy új szabályblokkot, amely hasonló a következő szabályhoz:

Ezután fűzze hozzá az alábbihoz hasonló új szabályblokkot:

/etc/pipewire/media-session.d/alsa-monitor.conf (vagy ~/.config/pipewire/media-session.d/alsa-monitor.conf)
...
rules = {
    ...
    {
        matches = [
            {
                node.name = "alsa_output.name-of-node"
            }
        ]
        actions = {
            update-props = {
                audio.format = "S24_3LE"
                audio.rate = 96000
                # A következő értéket meg kell duplázni, amíg a hang nem szakad meg, vagy más problémák meg nem szűnnek.
                api.alsa.period-size = 128
...

A wireplumber számára:

/etc/wireplumber/wireplumber.conf.d/52-update-rate-and-format.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/52-update-rate-and-format.conf)
monitor.alsa.rules = [
  {
    matches = [
      {
        node.name = "alsa_output.name-of-node"
      }
    ]
    actions = {
      update-props = {
        audio.format = "S24_3LE"
        audio.rate = 96000
        # A következő értéket meg kell duplázni, amíg a hang nem szakad meg, vagy más problémák meg nem szűnnek.
        api.alsa.period-size = 128
      }
    }
  }
]

Az alsa_output.name-of-node csomópont lekérdezhető a pw-top használatával.

Az Ön DAC-ja esetleg eltérő formátumot vagy mintavételezési rátát támogat. Ellenőrizheti, hogy mit támogat a DAC az ALSA lekérdezésével.

Először szerezze a DAC kártyának a számát:

$ aplay -l
...
card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
...

Tehát ebben a példában ez a 3-as számú kártya lenne. Szerezze be az összes támogatott mintavételezési rátát és formátumot:

$ cat /proc/asound/cardX/streamX
...
Playback:
  ...
  Interface 1
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 0x05 (5 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 16
    ...
  Interface 1
    Altset 2
    Format: S24_3LE
    Channels: 2
    Endpoint: 0x05 (5 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 24
    ...
  Interface 1
    Altset 3
    Format: S32_LE
    Channels: 2
    Endpoint: 0x05 (5 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 32
    ...
...

Ebben az esetben a S16_LE, S24_3LE, S32_LE a támogatott formátumok, és a 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 a támogatott mintavételezési ráták az összes formátumhoz.

Nincs hang az USB DAC-ból, amíg a hangerő el nem éri a 30% értéket

Egyes USB DAC-oknál előfordulhat, hogy nem adnak ki hangot, amíg a hangerő el nem ér egy bizonyos szintet [6]. Ez jellemzően 25% - 30% körül van, ami kellemetlenül hangos induló hangerőhöz vezet, és megnehezíti az alacsony hangerő fenntartását. A megoldás az, hogy figyelmen kívül hagyja a hardveres keverő hangerőszabályozását az api.alsa.soft-mixer értékének true-ra állításával.

Ennek a wireplumber szoftvercsomag használatával való eléréséhez használja:

/etc/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/alsa-soft-mixer.conf)
monitor.alsa.rules = [
  {
    matches = [
      {
        device.name = "~alsa_card.*"
      }
    ]
    actions = {
      update-props = {
        # Ne használja a hardveres keverőt a hangerő szabályozására.
        # Kizárólag szoftveres hangerőt fog használni. A keverő továbbra is használva
        # van a nem használt útvonalak némítására a kiválasztott port alapján.
        api.alsa.soft-mixer = true
      }
    }
  }
]

Ezután indítsa újra a pipewire szolgáltatást. Állítsa be a fő hangerőt az alsamixer szoftverben, majd mentse el a beállításokat az root felhasználóként a alsactl store parancsot futtatva. Ezt követően a hangerőkeverő használható lesz a megszokott módon.

Valósidejű hang nem működik

Ha az RTKit error: org.freedesktop.DBus.Error.AccessDenied megjelenik a pipewire.service user unit státuszában, akkor a pipewire szolgáltatás prioritása nem lett valósidejűre állítva. Tekintse meg a [7] hivatkozást ennél a problémánál.

Egyidejű kimenet több fogadóra ugyanazon hangkártyán

Hozzon létre egy másolatot a /usr/share/alsa-card-profile/mixer/profile-sets/default.conf fájlról, hogy a módosítások a frissítések után is megmaradjanak. Itt egy olyan profilt határozunk meg, amely egyesíti az Analóg és HDMI alapértelmezett hozzárendeléseit.

/usr/share/alsa-card-profile/mixer/profile-sets/multiple.conf
[General]
auto-profiles = no

[Mapping analog-stereo]
device-strings = front:%f
channel-map = left,right
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
priority = 15

[Mapping hdmi-stereo]
description = Digital Stereo (HDMI)
device-strings = hdmi:%f
paths-output = hdmi-output-0
channel-map = left,right
priority = 9
direction = output

[Profile multiple]
description = Analog Stereo Duplex + Digital Stereo (HDMI) Output
output-mappings = analog-stereo hdmi-stereo
input-mappings = analog-stereo

Ezután állítsa be az Ön munkamenet-kezelőjét úgy, hogy az új kártya-profilt használja az eszközök megfelelő párosításához. Az azonosítási információkat a pw-dump vagy a wpctl segítségével lehet megtalálni.

A wireplumber szoftvercsomag számára:

/etc/wireplumber/wireplumber.conf.d/51-alsa-custom.conf (vagy ~/.config/wireplumber/wireplumber.conf.d/51-alsa-custom.conf)
monitor.alsa.rules = [
  {
    matches = [
      {
        device.nick = "HDA Intel PCH"
      }
    ]
    actions = {
      update-props = {
        api.alsa.use-acp = true
        api.acp.auto-profile = false
        api.acp.auto-port = false
        device.profile-set = "multiple.conf"
        device.profile = "multiple"
      }
    }
  }
]

A pipewire-media-session szoftvercsomag számára:

/etc/pipewire/media-session.d/alsa-monitor.conf (vagy ~/.config/pipewire/media-session.d/alsa-monitor.conf)
rules = [
    {
        matches = [ { alsa.card_name = "HDA Intel PCH" } ]
        actions = {
            update-props = {
                api.alsa.use-acp = true
                device.profile-set = "multiple.conf"
                device.profile = "multiple"
                api.acp.auto-profile = false
                api.acp.auto-port = false
            }
        }
    }
]

Nincsenek értesítési hangok a Discordban

Ez okozható azzal, hogy a min.quantum értéke túl alacsony, próbálja meg 700-nál nagyobb értékre állítani. A Discordra vonatkozóan készíthet egy külön felülírást, amennyiben a következő szabályt hozzáadja a pipewire-pulse.conf fájl pulse.rules szakaszához.

/etc/pipewire/pipewire-pulse.conf (vagy ~/.config/pipewire/pipewire-pulse.conf)
...
pulse.rules = [
  ...
    {
        # Discord notification sounds fix
        matches = [ { application.process.binary = "Discord" } ]
        actions = {
            update-props = {
                pulse.min.quantum      = 1024/48000     # 21ms
            }
        }
    }
...

FMOD motorral készült játékok összeomlanak PipeWire alatt

Néhány játék, amely az FMOD hangmotor régi verzióját használja, például a Pillars of Eternity, a pulseaudio --check parancsot hívja meg, és összeomlik, amennyiben a PulseAudio bináris fájl nincs jelen. Az egyik megoldás erre az, hogy létrehoz egy szimbolikus hivatkozást a /bin/pulseaudio útvonalról a /bin/true útvonalra [8].

# ln -s /bin/true /bin/pulseaudio

Felhívjuk figyelmét, hogy ha újra szeretné telepíteni a PulseAudio szoftvert, akkor el kell távolítania a szimbolikus hivatkozást.

Nem működik az automatikus váltás

Ha az automatikus váltás nem működik, akkor előfordulhat, hogy a WirePlumber állapotával van probléma. Ahogy ez a hozzászólás javasolja, törölheti a WirePlumber helyi állapotát, majd újraindíthatja a szolgáltatást annak érdekében, hogy megnézze, vajon segít-e:

$ rm -r ~/.local/state/wireplumber/

Ezután indítsa újra a wireplumber.service user unitot.

Hiányzó valós idejű prioritás / recsegés terhelés alatt felfüggesztés után

A 2011-es rtkit hibája miatt a felfüggesztési események hatására a PipeWire valós idejű prioritása visszavonásra kerül, és nem áll helyre. Ennek a védelmi mechanizmusnak a letiltásához szerkessze az rtkit-daemon.service fájlt:

/etc/systemd/system/rtkit-daemon.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/lib/rtkit-daemon --no-canary

Ezután indítsa újra az rtkit-daemon.service unitot és a pipewire.service user unitot, valamint a média munkamenet szolgáltatást.

Nincs hang RAOP-eszközökre (például Sonos) történő streamelés során

Állítsa be az mDNS hostname feloldást az Avahi vagy a systemd-resolved használatával.

Nem jelennek meg hangkimeneti eszközök a KDE Plasma felületén

A PipeWire kliensek (beleértve az asztali környezetet is) az XDG_RUNTIME_DIR környezeti változóra támaszkodhatnak, hogy csatlakozzanak a PipeWire szolgáltatáshoz [9]. Ha közvetlenül bejelentkezés után nem jelennek meg hangkimeneti eszközök, akkor annak az oka lehet az, hogy ez a változó kézzel rossz elérési útra lett beállítva.

Bár ezt a problémát manuális PipeWire újraindítással meg lehet oldani, más problémák is előfordulhatnak, például, hogy a képernyőmegosztás nem működik a Chromium böngészőben (pipewire context failed hibával). Az XDG_RUNTIME_DIR változót automatikusan a pam_systemd(8) állítja be, ezért el kell távolítania minden olyan előfordulását, ahol ez kézzel be van állítva az inicializáló fájljaiban.

SDDM és LightDM felhasználók esetében az eszköz hangerő bejelentkezéskor nem áll vissza az előző értékre

Amennyiben Ön a SDDM szoftvert vagy LightDM szoftvert használja, és azt tapasztalja, hogy a hang szintje nem áll vissza megfelelően a bejelentkezés után, akkor maszkolja le a PipeWire szoftvert a felhasználó display manager szoftverére vonatkozóan, mivel a display manager alatt futó WirePlumber zavarhatja az Ön felhasználójának a WirePlumber munkamenetét.

# systemctl --user -M user@ mask pipewire.socket

Ha SDDM-et használ, akkor cserélje ki a user értéket sddm értékre, vagy ha ha LightDM-et használ, akkor cserélje le lightdm értékre.

További részletekért tekintse meg a Debian Wiki cikket.

Nem működik a parancssor csengője

PipeWire szempontjából be kell tölteni az x11.bell modult. Ez legyen az alapértelmezett beállítás (tekintse meg a fent említett beállításfájlokat is). Ellenőrizze, hogy telepítve van-e a pipewire-x11-bell szoftvercsomag. Az window manager is befolyásolhatja a parancssor csengőjét, például xfwm esetén ellenőrizze az xfwm-terminal beállításoknál, hogy az "Audible bell" aktiválva van-e. Ezután indítsa újra a pipewire szolgáltatást:

$ systemctl --user restart pipewire

Megpróbálhatja, hogy működik-e a parancssor csengője a következővel:

$ echo $'\a'

Videó

OBS (és más hasonló programok) nem jelenítenek meg semmit, még akkor sem, ha ablakot vagy képernyőt kérnek

Amennyiben Ön biztos abban, hogy telepítve van az xdg-desktop-portal szoftvercsomag, valamint az xdg-desktop-portal-gtk szoftvercsomag vagy az xdg-desktop-portal-kde szoftvercsomag, akkor ellenőrizze a szolgáltatások futási állapotát.

Ha minden megfelelően működik, az akkor OBS esetében az stdout kimenetben Önnek ezt kell látnia:

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

Többmonitoros beállítások esetén a slurp szoftvercsomag lehetővé teszi az összes képernyő rögzítését.

További olvasnivaló a témában