PipeWire

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page PipeWire and the translation is 100% complete.

A PipeWire egy alacsony késleltetésű, gráf alapú feldolgozó motor és szerver, amely hangeszközökkel és videóeszközökkel történő interfész kialakítására szolgál. Használható olyan esetek támogatására, amelyeket jelenleg az ALSA , a PulseAudio és/vagy JACK kezel, és célja a Linux alatt futó hangkezelés és videókezelés javítása.

A PipeWire néhány fő jellemzője a következő:

  • Hangfelvétel és videófelvétel lejátszása minimális késleltetéssel.
  • Valós idejű multimédiás feldolgozás.
  • Többfolyamatú architektúra, amely lehetővé teszi a multimédiás tartalmak megosztását az alkalmazások között.
  • Zökkenőmentes támogatás a PulseAudio, JACK, ALSA és GStreamer számára.
  • Alkalmazások sandbox támogatása Flatpak segítségével, biztonsági modellel, amely elősegíti a konténerizált alkalmazásokkal való interakciót.

A PipeWire jelenleg a következőket tartalmazza: Egy PipeWire szolgáltatás. Egy példa munkamenet-kezelő. Eszközök a PipeWire szolgáltatás vizsgálatához és használatához. Egy könyvtár PipeWire alkalmazások és bővítmények fejlesztéséhez, valamint az SPA (Simple Plugin API), amelyet mind a PipeWire szolgáltatás, mind a PipeWire könyvtár használ.

Telepítés

Kernel

Szükséges media-video/wireplumber opciók:

KERNEL
Device Drivers  --->
  <*> Sound card support Search for <code>CONFIG_SOUND</code> to find this item.  --->
    <*> Advanced Linux Sound Architecture Search for <code>CONFIG_SND</code> to find this item.  --->
      -*-  Sound Proc FS Support
      [*]    Verbose procfs contents Search for <code>CONFIG_VERBOSE_PROCFS</code> to find this item.

USE jelölőzászlók

Ahhoz, hogy a PipeWire szoftvert hangkiszolgálóként használja, állítsa be a sound-server USE jelölőzászlót a media-video/pipewire szoftvercsomagon. [1]

Ezután, ha a PipeWire szoftvert a PulseAudio hangkiszolgáló helyettesítésére használja:

  1. Győződjön meg arról, hogy a media-sound/pulseaudio-daemon szoftvercsomag nincs telepítve. Ez szükséges ahhoz, hogy elkerülje a problémákat, amelyek több hangszerver egyidejű futtatásából adódhatnak.
  2. Győződjön meg arról, hogy a media-libs/libpulse szoftvercsomag telepítve van, amely lehetővé teszi, hogy a PipeWire PulseAudio hangkiszolgálóként működjön. Jelenleg nem sok alkalmazás támogatja a PipeWire natív API-ját.
  3. Győződjön meg arról, hogy a pulseaudio USE jelölőzászló továbbra is globálisan be van állítva.

A PipeWire működéséhez szükség van egy D-Bus munkamenet buszra és egy XDG-kompatibilis környezetre. Mindkét követelményt teljesíteni kell egy asztali profil által. Ilyen operációs rendszereken a PipeWire indítása olyan egyszerű, mint a pipewire bináris futtatása. Más profilokon, ha Ön az OpenRC init rendszert használja, akkor az engedélyek követelményeihez szükség lehet az elogind USE jelölőzászló beállítására a media-video/wireplumber szoftvercsomagon, valamint magára a elogind szolgáltatásra is alkalmazni kell.

Az alkalmazásokban elérhető közvetlen képernyőfelvétel támogatásának engedélyezéséhez állítsa be a screencast USE jelölőzászlót a releváns szoftvercsomagokon. Ellenkező esetben a képernyőfelvétel támogatás biztosítható a PulseAudio vagy JACK kompatibilitási rétegeken keresztül is.

USE flags for media-video/pipewire Multimedia processing graphs

+man Build and install man pages
X Enable audible bell for X11
bluetooth Enable Bluetooth Support
dbus Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc)
doc Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
echo-cancel Enable WebRTC-based echo canceller via media-libs/webrtc-audio-processing
elogind Enable session tracking via sys-auth/elogind
extra Build pw-cat/pw-play/pw-record
ffmpeg Enable ffmpeg/libav-based audio/video codec support
fftw Use FFTW library for computing Fourier transforms
flatpak Enable Flatpak support
gsettings Use gsettings (dev-libs/glib) to read/save used modules (useful for e.g. media-sound/paprefs
gstreamer Add support for media-libs/gstreamer (Streaming media)
ieee1394 Enable FireWire/iLink IEEE1394 support (dv, camera, ...)
jack-client Install a plugin for running PipeWire as a JACK client
jack-sdk Use PipeWire as JACK replacement
liblc3 Allow loading LC3 plugins via media-sound/liblc3
loudness Enable loudness normalisation according to the EBU R128 standard using media-libs/libebur128
lv2 Allow loading LV2 plugins via media-libs/lv2
modemmanager Combined with USE=bluetooth, allows PipeWire to perform telephony on mobile devices.
pipewire-alsa Install ALSA plugin, similar to media-plugins/alsa-plugins's USE=pulseaudio.
readline Enable support for libreadline, a GNU line-editing library that almost everyone wants
roc Enable roc support for real-time audio streaming over the network, using media-libs/roc-toolkit. See https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Network#roc
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
sound-server Provide sound server using ALSA and bluetooth devices
ssl Enable raop-sink support (needs dev-libs/openssl)
system-service Install systemd unit files for running as a system service. Not recommended.
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
v4l Enable support for video4linux (using linux-headers or userspace libv4l libraries)
zeroconf Support for DNS Service Discovery (DNS-SD)

Emerge

Miután a USE jelölőzászlók meg lettek adva, a forráskódból építse újra az érintett szoftvercsomagokat:

root # emerge --ask --verbose --changed-use --update --deep @world

Alternatív megoldásként a PipeWire önállóan is telepíthető, bár általában az előző módszer az, amely szükséges:

root # emerge --ask media-video/pipewire

Általában a WirePlumber munkamenet-kezelőt is telepíteni kell. A WirePlumber a pipewire-media-session helyettesítője. További információért és részletekért tekintse meg ezt a cikket . A media-video/wireplumber szoftvercsomag biztosítja a wireplumber.service systemd szolgáltatást és a gentoo-pipewire-launcher által használt wireplumber bináris futtatható szoftvert.

root # emerge --ask media-video/wireplumber

Beállítás

See also
Részletes, nem kizárólag Gentoo-specifikus beállítással kapcsolatos dokumentáció található a projekt hivatalos wikijében .
Tip
Általában a dolgok megfelelően működnek alapértelmezés szerint, és a PipeWire rendszerszintű beállítását általában érdemes érintetlenül hagyni.

Audio Groups

A PipeWire alapértelmezett beállítása megpróbálja a valós idejű ütemezést használni az audio szálak prioritásának növelése érdekében. Ajánlott, hogy a felhasználók a pipewire csoport tagjai legyenek. Ha a felhasználó nem rendelkezik a szükséges engedélyekkel ehhez, akkor a beállítás megpróbálja helyette az RTKit szoftvert használni, így szükség lehet a szoftvercsomag telepítésére. Ez a viselkedés a PipeWire beállításának a context.modules részében van meghatározva.

root # usermod -aG pipewire larry
root # emerge --ask sys-auth/rtkit

A gyors felhasználóváltás legjobb élménye érdekében ajánlott eltávolítani a felhasználót az audio csoportból, hacsak nem támaszkodik az audio csoportra az eszköz-hozzáférés vezérléséhez vagy az ACL-ekhez.

root # usermod -rG audio larry

A PipeWire számos környezeti változót ismer fel, amelyek lehetővé teszik ezeknek a beállításoknak a módosítását felhasználónként vagy egyedi parancsok számára.

További beállítás nem szükséges a PipeWire videószerverként történő használatához, ez a funkció alapértelmezetten engedélyezve van.

Fájlhelyek

Ha szükséges a beállítás, akkor a PipeWire beállításfájljai itt találhatóak:

  1. ~/.config/pipewire/pipewire.conf - Felhasználói PipeWire beállítás.
  2. /etc/pipewire/pipewire.conf - Rendszerszintű PipeWire beállítás.
  3. /usr/share/pipewire/pipewire.conf - Példa PipeWire beállítás.
Note
A PipeWire beállításfájlok alapértelmezés szerint nem léteznek, azokat a példafájl másolásával kell létrehozni.
root # cp /usr/share/pipewire/pipewire.conf /etc/pipewire/pipewire.conf
user $ cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/pipewire.conf

Beállításdarabok

A 0.3.45 verziótól kezdve a beállításfájl darabjai átmásolhatók egy fájlba (a .conf kiterjesztéssel) az alábbi könyvtárakban [2] :

  1. /usr/share/pipewire/pipewire.conf.d/
  2. /etc/pipewire/pipewire.conf.d/
  3. ~/.config/pipewire/pipewire.conf.d/

context.properties

A következő beállítási lehetőségek a PipeWire beállításai között a context.properties alatt kerülnek alkalmazásra:

Mintavételi frekvenciák

A PipeWire egy globális mintavételezési frekvenciát alkalmaz az audiofeldolgozási folyamatban. Minden jel erre a mintavételezési frekvenciára kerül átalakításra, majd ezt követően átalakul az eszköz mintavételezési frekvenciájára.

FILE pipewire.conf Alapértelmezett mintavételezési frekvencia módosítása 192000Hz értékre
context.properties = {
    default.clock.rate = 192000
    default.clock.allowed-rates = [ 192000 48000 44100 ]  # Up to 16 can be specified
}
Tip
A default.clock.allowed-rates beállítása az eszköz által támogatott frekvenciák megadására megszünteti az újramintavételezés szükségességét. [3]
Warning
Ez nincs alapértelmezés szerint engedélyezve a kernelillesztőprogram-hibák miatt az 5.16-os verzió előtti kernelekben.

Hangszerver beállítása

Tip
Az SDDM-felhasználóknak meg kell győződniük arról, hogy azt a megfelelő szolgáltatáson keresztül indítják el, különben az XDG_RUNTIME_DIR helytelenül lehet beállítva.

systemd

A PipeWire biztosít socket fájlokat és szolgáltatásfájlokat, amikor systemd USE jelölőzászlóval van a forráskódból létrehozva.

Ha a PulseAudio felhasználói szolgáltatás engedélyezve van, akkor tiltsa le. Ez biztonságosan megtehető, még akkor is, ha a felhasználói szolgáltatás nem volt használatban.

user $ systemctl --user disable --now pulseaudio.socket pulseaudio.service

Bár úgy tűnik, hogy a PipeWire nem használja a ~/.config/pulse/ könyvtárat a sütifájlon kívül, érdemes lehet átnevezni vagy törölni azt.

Engedélyezze a wireplumber szolgáltatást és a pipewire-pulse socket-et. A pipewire-pulse socket engedélyezése szükség esetén elindítja a pipewire-pulse szolgáltatást. Ez a szolgáltatás pedig elindítja a pipewire szolgáltatást.

user $ systemctl --user enable --now pipewire-pulse.socket wireplumber.service

A socket aktiválás azt jelenti, hogy a pipewire szolgáltatás csak szükség esetén indul el, ami általában elegendő. Azonban a pipewire szolgáltatás mindig elindítható a felhasználó bejelentkezésekor a pipewire.service engedélyezésével:

user $ systemctl --user enable --now pipewire.service

Ilyen esetekben a --now zászló használata opcionális, de valószínűleg biztonságos, mivel a PipeWire alapértelmezett beállításokkal történő indítása csupán az új felületek használatát teszi lehetővé, és nem változtatja meg a meglévőket, azaz a nem PipeWire-kliensszoftverek továbbra is ugyanazokat a könyvtárakat és szolgáltatásokat használják, mint korábban.

OpenRC

Nincs valóban szabványosított mód (a systemd init rendszeren kívül) a PipeWire betöltésére grafikus felület indításakor. Ezért a felhasználóknak a grafikus környezetük indításának módja alapján kell kiválasztaniuk a megfelelő megoldást.

Important
Minden olyan esetben, amikor nem használnak systemd felhasználói szolgáltatásokat, a PipeWire szoftvert el kell indítani, mielőtt bármi megpróbálna csatlakozni bármely hangbemenethez vagy hangkimenethez, például egy hangerő-figyelő applethez.

Előfeltételek

  • XDG_RUNTIME_DIR

Ez a változó általában automatikusan beállításra kerül a systemd-logind, elogind vagy seatd által. Azoknál az operációs rendszereknél, amelyek nem használják ezeket a szolgáltatásokat, manuálisan kell beállítani az XDG_RUNTIME_DIR értéket, például a ~/.bash_profile , ~/.zprofile , stb. fájlban:

FILE
# Ensure XDG_RUNTIME_DIR is set
if test -z "$XDG_RUNTIME_DIR"; then
    export XDG_RUNTIME_DIR=$(mktemp -d /tmp/$(id -u)-runtime-dir.XXX)
fi
  • DBUS_SESSION_BUS_ADDRESS

Ez a változó általában automatikusan beállításra kerül olyan asztali környezetekben, mint a GNOME vagy a KDE. Fontos megjegyezni, hogy egy D-Bus munkamenetbusz nem az, amit általában a rendszer D-Bus szolgáltatás nyújt. Az utóbbi inkább egy rendszer buszt biztosít olyan dolgokhoz, mint a hardveresemények, stb.

Amikor egy ablakkezelőt, például i3, bspwm vagy Sway használunk, az ablakkezelőt dbus-launch segítségével kell elindítani, amely beállítja a DBUS_SESSION_BUS_ADDRESS értékét a munkamenethez. Például, ha az X-szervert startx segítségével indítjuk, akkor a ~/.xinitrc fájl utolsó sora lehet:

FILE ~/.xinitrc
exec dbus-launch --exit-with-session bspwm

Vegye figyelembe, hogy ebben az összefüggésben a exec használata azt jelenti, hogy a fájlban található további parancsok nem kerülnek végrehajtásra , mivel a fájlt értelmező shell-folyamatot a dbus-launch folyamat váltja fel. Bármely olyan parancsot, amelyet az új munkameneten belül kell futtatni, az ablakkezelő beállításfájljához kell hozzáadni, például: ~/.config/bspwm/bspwmrc .

Általánosabb értelemben a dbus-launch közvetlenül a parancssorból is futtatható:

user $ dbus-launch --exit-with-session sway

gentoo-pipewire-launcher

A gentoo-pipewire-launcher szkript elindítja:

  • Egy PipeWire szervert.
  • Egy WirePlumber munkamenet-kezelőt, amely szükséges a PipeWire szerverek használatához.
  • Egy pipewire-pulse PipeWire szervert, amely szükséges a PulseAudio kompatibilitáshoz.

Mielőtt ezt megtenné, a script leállítja a meglévő PipeWire vagy WirePlumber példányokat. További részletekért kérjük, hogy tekintse meg a szkriptben található megjegyzéseket.

A gentoo-pipewire-launcher szkriptet olyan környezetben kell elindítani, ahol az DBUS_SESSION_BUS_ADDRESS környezeti változó megfelelően van beállítva, azaz a dbus-launch vagy dbus-run-session által indított program kontextusában.

A gentoo-pipewire-launcher támogatja a naplózást a ${XDG_CONFIG_HOME}/gentoo-pipewire-launcher.conf fájlon keresztül. A GENTOO_PIPEWIRE_LOG , GENTOO_PIPEWIRE_PULSE_LOG és GENTOO_WIREPLUMBER_LOG változók használhatók egy fájl abszolút elérési útjának megadására, amelybe a naplók íródjanak.

Grafikus felhasználói interfészek (Asztali környezetek és ablakkezelők)

A Gentoo PipeWire szoftvercsomag telepíti a /etc/xdg/autostart/pipewire.desktop automatikus indítási fájlt. Azonban nem minden grafikus felület használ automatikus indítási fájlokat: A Plasma, GNOME, XFCE és Cinnamon igen, de különböző ablakkezelők (mint például a Fluxbox) nem. Az automatikus indítási fájlokat használó környezetekben tilos a PipeWire szoftvert a ~/.xprofile fájlon keresztül indítani. Azokban a környezetekben, amelyek nem használnak automatikus indítási fájlokat, a PipeWire szoftvert a környezet indítási fájljából (részletek lentebb) vagy a ~/.xprofile fájlból kell elindítani (szükség esetén létrehozva ezt a fájlt):

FILE ~/.xprofile
gentoo-pipewire-launcher &

Wayland / Sway / Windows Manger-ek

Az XDG automatikus indítási megközelítésnek Wayland esetén is működnie kell, akárcsak az X-szervernél, azonban nem egyértelmű, hogy a .xprofile fájl szükségszerűen betöltésre kerül-e egy Wayland munkamenet indításakor.

A Sway esetében szerkessze a ~/.config/sway/config fájlt, és adja hozzá:

FILE ~/.config/sway/config
exec gentoo-pipewire-launcher &

A dwm esetében szerkessze a ~/.dwm/dwmrc fájlt, és adja hozzá:

FILE ~/.dwm/dwmrc
gentoo-pipewire-launcher &

Általánosabb értelemben, ha ablakkezelőt használ, akkor a gentoo-pipewire-launcher hívását hozzá kell adni az ablakkezelő beállításfájljához, például:

FILE ~/.config/i3/config
exec gentoo-pipewire-launcher &

PipeWire és WirePlumber újraindítása

A PipeWire és WirePlumber újraindításához OpenRC init rendszerg használó operációs rendszer alatt – például a beállításváltozások érvényesítéséhez – futtassa a gentoo-pipewire-launcher parancsot a restart argumentummal. Ez először leállítja a meglévő példányokat a megfelelő D-Bus munkamenetben.

user $ nohup gentoo-pipewire-launcher restart &

A nohup használatával a terminál bezárható anélkül, hogy a gentoo-pipewire-launcher megszakadna. Az nohup implementációjától függhet, hogy a kimenet hová irányul. Attól függően, hogy melyik shell-t használják, a nohup lehet beépített parancs vagy külső parancs (például nohup(1) ), ezért ellenőrizze a shell dokumentációját.

Vegye figyelembe, hogy a wireplumber hibája miatt a nohup nem biztos, hogy működik, ezért szükség lehet alternatív megoldásra. Például Bash-ben elhagyhatja a nohup parancsot, és közvetlenül utána futtathatja a disown parancsot:

user $ gentoo-pipewire-launcher restart &
user $ disown

PulseAudio szerver emuláció ellenőrzése

user $ LANG=C pactl info | grep "Server Name"
Server Name: PulseAudio (on PipeWire 0.3.39)

Többfelhasználós támogatás hozzáadása

Az alapértelmezett beállítás csak azt a felhasználót engedi, hogy hangot lejátszasson, aki elindította a pipewire-pulse szolgáltatást.

Többfelhasználós támogatás esetén a TCP interfészre van szükség:

user $ cp -r /usr/share/pipewire/ /etc/
user $ $EDITOR /etc/pipewire/pipewire-pulse.conf

Keresse meg a server.address = [ szakaszt, és kommentelje ki az elérhető TCP opciók egyikét.

Használat

Hangerő vezérlése

A PipeWire hangerő vezérlése lehetséges Pulseaudio eszközökkel, például a pactl ( media-libs/libpulse ) segítségével. Ezenkívül, Pulseaudio-tól való függés nélkül is szabályozható:

A wpctl ( media-video/wireplumber ) szoftvercsomag használatával lehet szabályozni a hangerőt. Példa: hangerő növelése kettő százalékkal:

user $ wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+

Vagy a pw-cli (a media-video/pipewire szoftvercsomagban található szoftver) használatával: [4]

1. Keresse meg a stream csomópont azonosítóját:

user $ pw-cli ls Node

2. Módosítsa a szükséges tulajdonságokat (egy csomópont tulajdonságainak vizsgálatához futtassa a pw-cli e <node-id> Props parancsot). Példa: némítás feloldása és hangerő beállítása 0.3 értékre:

user $ pw-cli s <node-id> Props '{ mute: false, channelVolumes: [ 0.3, 0.3 ] }'

Mintavételi frekvencia ellenőrzése

A pw-metadata használható az aktuális mintavételi frekvencia ellenőrzésére, valamint egyéb beállítások megtekintésére:

user $ pw-metadata -n settings
Found "settings" metadata 31
update: id:0 key:'log.level' value:'2' type:''
update: id:0 key:'clock.rate' value:'192000' type:''
update: id:0 key:'clock.allowed-rates' value:'[ 192000, 48000, 44100 ]' type:''
update: id:0 key:'clock.quantum' value:'1024' type:''
update: id:0 key:'clock.min-quantum' value:'32' type:''
update: id:0 key:'clock.max-quantum' value:'2048' type:''
update: id:0 key:'clock.force-quantum' value:'0' type:''
update: id:0 key:'clock.force-rate' value:'0' type:''

PulseAudio szerver

Ha a PipeWire PulseAudio backendként van használva, akkor a mintavételi frekvenciát és a bitmélységet, vagyis a Default Sample Specification értékét az alábbi paranccsal ellenőrizheti:

user $ pactl info
Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 213
Tile Size: 65472
User Name: larry
Host Name: gentoo
Server Name: PulseAudio (on PipeWire 0.3.71)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 192000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.usb-Generic_USB_Audio-00.pro-output-2
Default Source: alsa_input.usb-Focusrite_Scarlett_Solo_USB-00.pro-input-0

Mintavételi frekvencia beállítása futásidőben

A pw-metadata -n settings 0 clock.rate parancs használható a clock rate futásidőben történő beállítására:

user $ pw-metadata -n settings 0 clock.rate 384000
Found "settings" metadata 31
set property: id:0 key:clock.rate value:384000 type:(null)
Tip
Az eredmények ellenőrizhetők a pw-metadata -n settings parancs segítségével, és ez az eljárás más beállításértékekre is alkalmazható.

GUI patchbay-ek

Bármelyik patchbay nagyszerűen használható:

A media-sound/helvum egy GTK-alapú PipeWire patchbay. Egyszerű és könnyen használható.

A media-sound/qpwgraph egy QT-alapú PipeWire patchbay. Mentheti az elrendezést. A monitor-stream-ek nem kapcsolódnak össze az eredeti objektumokkal, mivel ez néha nem intuitív. Ennek ellenére egyszerű és könnyen használható.

coppwr alacsony szintű PipeWire patchbayként hirdeti magát. Használata nagyon érdekesnek tűnik. Ha már használt helvum vagy qpwgraph szoftvert, akkor ennek a kezelése viszonylag könnyű lehet. Jelenleg csak flatpak szoftvercsomag érhető el a Gentoo számára. A telepítéshez először telepítse a Flatpak szoftvercsomagot, majd:

user $ flatpak install io.github.dimtpap.coppwr
Tip
Ha a KDE hangerő-appletjét használja, és sok haszontalan objektumot kap, például Plasma PA* -t, amelyek nem tűnnek el a menü bezárása után az egyik patchbay-nél, akkor egyszerűen nyissa meg és zárja be néhányszor a hangerő menüt. Általában ez megoldja az ilyen problémákat.

Audio streamelése RTP protokollon keresztül hálózaton a PipeWire natív modul segítségével

Tekintse meg a következő dokumentációt ehhez. Indítsa el a vevőt, majd indítsa el az adót. A vevő beállításában cserélje le a 0.0.0.0 IP-címet a forrás IP-címére, az adó beállításában pedig állítsa be a cél IP-címet.

Majd használjon bármilyen elosztót, hogy az Ön által preferált audiófolyamot egy új, localhost.localdomain nevű kimenetre irányítsa át az Ön neveivel. Hajtsa végre ugyanezt a figyelő számára: Használja a korábban említett szoftvereszközöket az Ön által preferált eszközre történő streameléshez.

Ha a Pipewire újraindításakor a 69-es hibakód jelentkezik, akkor úgy tűnik, hogy a beállításfájl hibás. Ha a hibakód 70, akkor úgy tűnik, hogy megpróbált RTP kapcsolatot létrehozni, de ez nem sikerült. Ellenőrizze, hogy a beállításfájlokban szereplő IP-címek és portok megfelelőek-e.

JACK cseréje

Ahhoz, hogy a JACK klienseket a PipeWire szoftveren keresztül irányítsa, jelenleg a Gentoo által támogatott egyetlen módszer az, hogy a pw-jack segítségével futtatja őket. Ez a LD_PRELOAD használatával irányítja át a klienseket a JACK eredeti könyvtáraitól a PipeWire alternatíváihoz.

user $ pw-jack qsynth
Important
A meglévő JACK felhasználóknál valószínűleg már be van állítva a valós idejű képesség, de az új felhasználóknak ajánlott a RLIMIT_MEMLOCK értéket a Gentoo alapértelmezett 64 kilobyte-os értékéről 256 kilobyte-ra emelni minden PipeWire felhasználó számára, akik használni kívánják a JACK emulációját. Ennek módjáról alább találhatók utasítások (ez a lap tartalomjegyzékében is szerepel). Ennek elmulasztása valószínűleg legalább időszakos puffer alul-hajtásokat (xruns) okozhat, mivel egyetlen lap hibája valószínűleg egy puffer hosszának akár felét vagy teljes hosszát elfoglalja csak a kernelidőben a megoldáshoz.

Fontos megjegyezni, hogy akár a PipeWire hiányosságai, akár a Gentoo beállításainak korlátai miatt nem minden kliens fog működni. Néhány kliens akár váratlanul is leállhat a hiányzó szimbólumok miatt. Valószínűleg szükség lesz a JACK kliensek újbóli beállítására is, mivel ezek megkísérelhetik a meglévő beállításfájljaik használatát, ha ilyenek léteznek.

Alternatív megoldásként lehetséges, hogy a PipeWire egy valódi jackd szolgáltatáshoz csatlakozzon, és átjáróként működjön a nem-JACK alkalmazások számára, de ha nincs már működő JACK beállítás, akkor ezt nem ajánlják, mivel ez általában rosszabb felhasználói élményt eredményez a JACK használatával.

A media-sound/ardour alkalmazásban jelentkező akadozó felvételek esetén megoldást nyújthat egy WirePlumber szkriptfájl.

FILE ~/.config/wireplumber/main.lua.d/latency.lua
table.insert(alsa_monitor.rules, {
  matches = {
    {
      -- replace device as described below
      { "node.name", "equals", "device" },
    },
  },
  apply_properties = {
    -- If 64 doesn't work, try bigger values that are a power of 2 (128, 256, 512, 1024, 2048, etc.)
    ["api.alsa.headroom"] = 64,
  },
})

A

user $ wpctl status

parancs végrehajtása megjeleníti az operációs rendszeren jelenleg elérhető eszközök listáját. Az audiokészülék az Audio -> Sinks alatt jelenik meg (nem biztos benne, hogy melyiket válassza? Használja azt, amelyik csillaggal (*) kezdődik. Ez az éppen használt eszközt jelöli). Jegyezze meg ezt a számot, és hajtsa végre a következőt:

user $ wpctl inspect <szám> | grep node.name

. Ennek a parancsnak egy sort kell kiadnia, például: * node.name = "alsa_output.usb-Lenovo_ThinkPad.analog-stereo" . Cserélje le a szkriptben a device szót az eredményben szereplő eszközre (ebben a példában ez lenne: alsa_output.usb-Lenovo_ThinkPad.analog-stereo ). A probléma a PipeWire újraindítása után meg kell, hogy oldódjon. Ha a probléma nem oldódik meg, további információk találhatók itt vagy itt .

Hibaelhárítás

Képernyőmegosztás nem működik a Chrome böngészővel

Változtassa a "WebRTC PipeWire support" beállítást "Enabled" értékre a chrome://flags címen.

CS:GO (és más, a Valve Source motorját használó játékok)

Note
Úgy tűnik, hogy ezt a problémát a Valve egy 2021 elején kiadott javítása orvosolta. Ha a probléma már nem jelentkezik bármilyen javítások alkalmazása nélkül, akkor kérjük, hogy törölje teljesen ezt az alfejezetet.

Az alapértelmezett hangpufferméret 0.025 értékű. Ez néha túl alacsony lehet, ami recsegő hangot okozhat. Jelenleg a megoldás az, hogy növeli az alkalmazás hangpufferméretét a CS:GO játékon belül [5] [6] :

A snd_mixahead a hangpuffer hossza másodpercben, tehát 0.05 az 50 ms (0.10 , módosítva: 25 ms az alapértelmezett). Ez lényegében a hang késése, tehát ennek csökkentése jobb szinkronizációt eredményez. Nem minden hardver képes azonban kezelni ilyen alacsony pufferbeállítást, ezért ha 0.05 értéknél recsegés vagy pattogás jelentkezik, akkor növelje ezt a beállítást 0.01 értékkel, amíg a recsegés/pattogás megszűnik.

RLIMIT_MEMLOCK növelése JACK kliensekhez (és PulseAudio kliensekhez OpenRC-vel)

Ellentétben a PulseAudio kliensekkel, amelyek esetében a felhasználói szolgáltatás végzi a pufferek memóriájának zárolását, a JACK kliensek ezt saját maguk végzik. Abban az esetben, ha a kliensek azt jelentik, hogy nem tudják zárolni a memóriát, a PulseAudio RLIMIT_MEMLOCK korábbi alfejezetében leírt kemény korlát (megengedett maximális érték) mellett a puha korlátot (az alapértelmezett értéket) is növelni kell:

FILE /etc/security/limits.d/50-custom.conf
# This both raises the max and sets the default lockable memory limit of every process running under a non-system account (except for nobody) from default 64 to 256 kilobytes (in increments of ''page size'')
1000:65533      -    memlock 256

Bluetooth

Important
A PipeWire szoftvernek már engedélyeznie kellene a bluez5 modult, ha a pulseaudio USE jelölőzászlóval van a forráskódból lefordítva binárisra. Kérjük, ellenőrizze, hogy rendszerszinten van-e beállítva, mivel a PulseAudio API a kliensek számára nem fog egyhamar megszűnni.

Alapértelmezetten a Bluetooth támogatás le van tiltva, hogy elkerülje az ütközéseket a PulseAudio Bluetooth vermével, mivel jelenleg a fő felhasználási eset kiegészítésként szolgál, nem pedig helyettesítésként a PulseAudio számára. Távolítsa el a kommentjelet a PipeWire bluez5 moduljáról, hogy a Bluetooth-eszközök megjelenjenek:

FILE /etc/pipewire/media-session.d/media-session.conf
...
modules = {
    ...
    default = [
        ...
        bluez5          # bluetooth támogatás
        ...
    ]
    ...

Ezt követően futtassa a következő parancsot:

user $ systemctl --user restart pipewire-pulse.service

PipeWire újraindítása összeomlás után (OpenRC-vel)

Amikor a PipeWire összeomlik, minden hangeszköz eltűnik. Három folyamatot kell létrehozni:

  1. pipewire
  2. wireplumber
  3. pipewire -c pipewire-pulse.conf

Ne futtassa ezeket közvetlenül. Ehelyett indítsa el őket a következővel:

user $ /usr/bin/gentoo-pipewire-launcher &

Az olyan környezetből, amelyben futó D-Bus munkamenet busz található (pl. az asztal). Egy olyan környezet, amelyben D-Bus munkamenet busz működik, rendelkezni fog a DBUS_SESSION_BUS_ADDRESS változóval. Ha ez nincs beállítva, akkor tekintse meg a OpenRC szekciót arról, hogy miként lehet biztosítani, hogy a D-Bus munkamenet busz a környezetben fusson.

Recsegés és akadozás

A recsegés és akadozás csökkenthető vagy megszüntethető, ha a default.clock.min-quantum értéket megfelelően beállítják a pipewire.conf fájlban [7] :

FILE /etc/pipewire/pipewire.conf
default.clock.min-quantum = 2048

További olvasnivaló a témában

Külső források

Hivatkozások