PipeWire
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:
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:
- 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.
- 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.
- 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
Részletes, nem kizárólag Gentoo-specifikus beállítással kapcsolatos dokumentáció található a projekt hivatalos wikijében .
Á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:
- ~/.config/pipewire/pipewire.conf - Felhasználói PipeWire beállítás.
- /etc/pipewire/pipewire.conf - Rendszerszintű PipeWire beállítás.
- /usr/share/pipewire/pipewire.conf - Példa PipeWire beállítás.
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] :
- /usr/share/pipewire/pipewire.conf.d/
- /etc/pipewire/pipewire.conf.d/
- ~/.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.
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
}
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]
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
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.
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:
# 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:
~/.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):
~/.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á:
~/.config/sway/config
exec gentoo-pipewire-launcher &
A dwm esetében szerkessze a ~/.dwm/dwmrc fájlt, és adja hozzá:
~/.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:
~/.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)
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
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
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.
~/.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)
Ú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:
/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
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:
/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:
- pipewire
- wireplumber
- 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] :
/etc/pipewire/pipewire.conf
default.clock.min-quantum = 2048
További olvasnivaló a témában
- PulseAudio — a multi-platform, open source, sound server that provides a number of features on top of the low-level audio interface ALSA
- ALSA — egy hangkártya beállítását írja le az ALSA ( A dvanced L inux S ound A rchitecture. Magyarul: fejlett Linux hangarchitektúra) segítségével.
- Technical notes on the packaging of PipeWire
Külső források
- https://bootlin.com/blog/an-introduction-to-pipewire/ - An introduction to PipeWire [June 2022]
- https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ - The PipeWire FAQ
- https://venam.nixers.net/blog/unix/2021/06/23/pipewire-under-the-hood.html - A blog explaining PipeWire from a unique perspective.
- https://lwn.net/Articles/847412/ - PipeWire: The Linux audio/video bus (LWN).
Hivatkozások
- ↑ https://www.gentoo.org/support/news-items/2022-07-29-pipewire-sound-server.html
- ↑ https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#configuration-file-pipewireconf
- ↑ PipeWire's Issue 1523
- ↑ https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Migrate-PulseAudio#sink-inputsource-output-volumemute
- ↑ https://csgoguru.com/improve-your-csgo-sound-settings/
- ↑ https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/401
- ↑ Bejegyzés a Gentoo fórumokon . Lekérve: 2024-03-13.