PulseAudio (Česky)

From ArchWiki
Revision as of 06:31, 2 June 2013 by Lahwaacz (Talk | contribs) (recategorized)

Jump to: navigation, search

PulseAudio je univerzální zvukový server pro systémy POSIX a WIN32, jehož základním rysem je mixování zdrojů zvuku což umožňuje přehrávat na zvukovém zařízení více zvukových zdrojů najednou.

Instalace

Všechny potrebné balíčky se nacházejí v repozitáři community, který by měl být povolen. Pro instalaci :

# pacman -S pulseaudio

Volitelně lze nainstalovat GTK aplikace, které umožní nastavovat vstupní a výstupní zařízení apod. :

# pacman -S paprefs pavucontrol

Spuštění

Pulseaudio potřebuje pro svou činnost spuštěný dbus daemon. Proto ho spusťte pokud ještě neběží:

# /etc/rc.d/dbus start

Start pulseaudia lze provést příkazem:

$ pulseaudio --start

Pokud spouštíme pulseaudio v grafickém prostředí:

$ start-pulseaudio-x11

Pulseaudio lze zastavit příkazem:

$ pulseaudio --kill

Nutno upozornit, že některá X11 prostředí startují Pulseaudio automaticky při přihlášení uživatele, proto zkontrolujte pro jistotu wiki sekci pro dané desktopové prostředí.

Konfigurace backendů

Slouží pro nastavení podpory pro mixování audio streamu od aplikace, která nepodporuje přímo PulseAudio.

ALSA

Pro aplikace, které nepodporují PulseAudio, ale podporují ALSA je doporučeno nainstalovat ALSA plugin pro PulseAudio:

# pacman -S pulseaudio-alsa

Tento balíček obsahuje i nezbytný konfigurační soubor /etc/asound.conf pro nastavení ALSA výstupu na PulseAudio server. Pokud používáte x86_64 Archlinux a požadujete fungující zvuk i pro 32bit aplikace (jako Wine), musíte mít nainstalované i 32bit verze knihoven lib32-libpulse and lib32-alsa-plugins. Některé aplikace, keré používají ALSA OSS emulaci by mohly PulseAudio obejít. Pro tento případ je dobré odstranit snd_pcm_oss modul jádra:

# rmmod snd_pcm_oss

Poté je vhodné daný modul zakázat, což se provede v souboru /etc/rc.conf v sekci MODULES přídáním !snd_pcm_oss.

OSS

Existuje několik cest jak donutit OSS programy hrát přes PulseAudio:

osspd

Nejjednodušší metoda.

Nainstalujte ossp a spusťte daemona příkazem:

/etc/rc.d/osspd start

Nezapomeňte přidát osspd do sekce DAEMONS v souboru rc.conf pro automatické spouštění při startu.

padsp wrapper

Pokud máte program užívající OSS, můžete ho donutit pracovat s PulseAudiem spuštěním přes wrapper padsp:

$ padsp OSSprogram

Několik příkladů:

$ padsp aumix
$ padsp sox foo.wav -t ossdsp /dev/dsp

Pokud preferujete jednoduché spouštění, je možné použít script jako například tento, kde původní program byl přejmenován (přidána koncovka -bin) a takto vytvořený script pojmenovaný dle programu je pak spouštěn jako aplikace. Nutno podotknout, že tato metoda selže v případě aktualizace daného programu balíčkovacím systémem, který tento skript přepíše. Proto ji berte pouze jako příklad:

/usr/bin/OSSProgram
#!/bin/sh
if test -x /usr/bin/padsp; then
    exec /usr/bin/padsp /usr/bin/OSSprogram-bin "$@"
else
    exec /usr/bin/OSSprogram "$@"
fi

GStreamer

Abychom přiměli GStreamer používat PulseAudio, nastavíme gconf proměnné /system/gstreamer/0.10/default/audiosink na 'pulsesink a /system/gstreamer/0.10/default/audiosrc na pulsesrc následujícími příkazy:

 $ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink
 $ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosrc pulsesrc

Některé aplikace (jako Rhythmbox) ignorují audiosink nastavení a používají musicaudiosink. Proto musíme musicaudiosink přenastavit pro tyto aplikace také:

 $ gconftool-2 -t string --set /system/gstreamer/0.10/default/musicaudiosink pulsesink

OpenAL

OpenAL software využívá defaultně PulseAudio, ale můžeme ho také explicitně nastavit :
/etc/openal/alsoft.conf
drivers=pulse,alsa

libao

Editací libao konfiguračního souboru nastavíme pulse:

/etc/libao.conf
default_driver=pulse

PortAudio

Aktuální verze PortAudio v community repozitáři nedpodporuje PulseAudio a non-mmap audio zařízení. Pro podporu PulseAudia lze překompilovat balíček z ABS aplikováním patche.

ESD

PulseAudio je v podstatě náhrada za zvukový daemon ESD, proto pokud běží PulseAudio, klienti ESD hrají automaticky přes PulseAudio bez nutné ruční konfigurace.

Desktopová prostředí

Obecné X11

Spusťte PulseAudio po startu X11 příkazem:

$ start-pulseaudio-x11

Pokud používáte GNOME nebo KDE, PulseAudio se spouští automaticky s příhlášením uživatele a není třeba nic dělat.

X11 zvonek

Pokud požadujete, aby PulseAudio zahrálo zvuk generovaný X11 zvonkem či pípnutím při nějaké akci (například v terminálu), přidejte následující nastavení do /etc/pulse/default.pa:

load-sample-lazy x11-bell /usr/share/sounds/freedesktop/stereo/dialog-error.oga
load-module module-x11-bell sample=x11-bell 

Samozřejmě si můžete nastavit použití i jiného zvukového vzorku než dialog-error.oga, který je částí balíčku sound-theme-freedesktop.

GNOME

Úplná integrace PulseAudia do GNOME vyžaduje speciální nahrazující balíčky:

  • gnome-media-pulse
  • gnome-settings-daemon-pulse
  • libcanberra-pulse

Tyto jsou součástí skupiny balíčků pulseaudio-gnome.

KDE 3

Pokud používáte KDE 3, nelze provozovat PulseAudio jakož náhradu za aRts.

KDE 4 a Qt4

Pulseaudio lze používat pro KDE4/Qt4 aplikace. Více informací lze nalézt na PulseAudio wiki stránce věnované KDE. Pro KDE existuje také jakási alternativa za pavucontrol veromix plasmoid, kterou lze nalézt v AURu.

Aplikace

Audacious

Audacious nativně podporuje PulseAudio takže stačí najít v nastavení Preferences -> Audio -> Current output nastavit na 'PulseAudio Output Plugin'.

mpd

Je nutno nakonfigurovat mpd dle návodu pro nastavení výstupu na PulseAudio. Na multimediálním zařízení spusťte PulseAudio jako mpd uživatele. Na běžném PC spouštějte mpd i PulseAudio pod vlastním účtem a nepoužívejte mpd uživatele.

MPlayer

MPlayer nativně podporuje PulseAudio výstup s volbou "-ao pulse". Toto lze také nastavit jako výchozí v konfiguračním souboru pro každého uživatele ~/.mplayer/config nebo pro celý systém /etc/mplayer/mplayer.conf:

/etc/mplayer/mplayer.conf
ao=pulse

"Flashový" obsah

Pokud neslyšíte žádný zvukový výstup z multimediálního obsahu typu flash, můžete zkusit nainstalovat z AURu libflashsupport-pulseAUR.

Flashplugin (pouze pro x86_64)

Pokud používáte flashplugin z multilib repozitáře, který je 32bit, je nutno nainstalovat také lib32-alsa-plugins a lib32-libcanberra-pulse pokud chcete mixování zvuku. Jinak nebude možné přehrávat jiný zvuk pokud zrovna přehráváte flash.

# pacman -S lib32-alsa-plugins lib32-libcanberra-pulse

Alternativní konfigurace

Surround sound systémy

Pro povolení všech zvukových výstupů vaší karty editujte /etc/pulse/daemon.conf kde odkomentujte default-sample-channels řádek a nastavte na potřebnou hodnotu (6 5.1 8 7.1):

# Výchozí 2 kanály
default-sample-channels=2
# nebo pro 5.1 výstup
default-sample-channels=6
# nebo pro 7.1 výstup
default-sample-channels=8

Po editaci je nutné restartovat PulseAudio.

Rozšířená konfigurace ALSA

Někdy je nutno nastavit ručně soubor /etc/asound.conf (systémové nastavení) nebo ~/.asoundrc (pro každého uživatele), aby ALSA používala PulseAudio:

/etc/asound.conf
pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

Pokud vynecháte poslední dvě skupiny nastavení, pak budete muset konfigurovat každou ALSA aplikaci zvlášť v jejím nastavení, aby použila "pulse" výstup.

ALSA zvukový monitor

Pro možnost záznamu ze zvukového monitoru (př. Monitor pro to co slyším, Stereo Mix, .. ) musíte použit pactl list pro nalezení názvu zvukového zdroje PulseAudia (př. alsa_output.pci-0000_00_1b.0.analog-stereo.monitor). Pak přidat tyto do /etc/asound.conf nebo ~/.asoundrc:

pcm.pulse_monitor {
  type pulse
  device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
}

ctl.pulse_monitor {
  type pulse
  device alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
}

Nyní můžete vybrat pulse_monitor jako zdroj nahrávání zvuku.

PulseAudio přes síť

Jedna z předností PulseAudia je možnost streamování audia pomocí clientů a serveru s běžícím pulseaudio daemonem přes vaší LAN. Pro tuto možnost musíte povolit module-native-protocol-tcp a zkopírovat pulse-cookie do klientů v síťi.

TCP podpora (zvuk po síti)

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:PulseAudio (Česky)#)

Pro povolení TCP modulu přidejte či odkomentujte /etc/pulse/default.pa:

load-module module-native-protocol-tcp

Pro povolení vzdáleného připojení na TCP modul musíte odblokovat službu v /etc/hosts.allow:

pulseaudio-native: ALL

Pozor: Pokud máte problém s připojením, zkuste na serveru:

pacmd>> list-modules

(zde můžete také nahrávat moduly!)

Zeroconf (Avahi) publiskování

Je možné že pro nastavení vzdáleného přístupu na server přes (padevchooser) budete potřebovat také nainstalovaný a spuštěný avahi-daemon přidaný v sekci DAEMONS v rc.conf na serveru tak i na klientských stanicích.

Přepínání PulseAudio serverů lokálními klienty

Pro přepínání serveru na klientské stanici lze použít příkaz pax11publish. Pro příklad přepnutí z výchozího serveru na server s názvem (hostname) foo:

$ pax11publish -e -S foo

Nebo přepnutí zpět na výchozí server:

$ pax11publish -e -r

Pozor při přepnutí musejí být programy používající Pulse pravděpodobně restartovány.

Pulseaudio přes JACK

Je podobný PulseAudiu, ale je více zaměřen na profesionální práci s audiem. Pulseaudio používá modul module-jack-source a module-jack-sink což mu umožňuje běžet jako zvukový server nad JACK démonem. Takto je pulseaudiem umožněno nastavení zesílení pro každou běžnou aplikaci zvlášť, přehrávání filmů písniček apod., zatímco je také umožněno nízkolatenční nahrávání a přehrávání a zpracování zvuku aplikacemi napojenými na JACK. Toto však zabrání PulseAudiu přímý zápis do bufferů zvukové karty, což má za následek zvýšení vytížení CPU. Pro vyzkoušení běhu PA s JACK stačí načíst nezbytné moduly při startu:

pulseaudio -L module-jack-sink -L module-jack-source

Pro použití Pulseaudia s JACK musí být JACK spuštěn před startem PA. PulseAudio vyžaduje pro běh 2 moduly, které změníme editováním /etc/pulse/default.pa:

### Load audio drivers statically (it is probably better to not load
### these drivers manually, but instead use module-hal-detect --
### see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Alternatively use the static hardware detection module (for systems that
### lack udev support)
load-module module-detect
.endif

na následující podobu:

### Load audio drivers statically (it is probably better to not load
### these drivers manually, but instead use module-hal-detect --
### see below -- for doing this automatically)
#load-module module-alsa-sink
#load-module module-alsa-source device=hw:1,0
#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
#load-module module-null-sink
#load-module module-pipe-sink
load-module module-jack-source
load-module module-jack-sink

### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
### Alternatively use the static hardware detection module (for systems that
### lack udev support)
#load-module module-detect
#.endif

Tohle zamezí načtení module-udev-detect, který se snaží převzít zvukovou kartu což již provedl JACK. Explicitně načten musí být také JACK source a sink modul což je patrné z úpravy.

QjackCtl se Start/Stop Skripty

Po provedení nastavení probraných výše lze použít QjackCtl pro spouštění skriptu během startu a vypnutí pro start/stop PulseAudia. Proč tohle dělat? Protože změny provedené při zprovoznění JACK nám zakázaly automatickou detekci hardware pomocí modulu pulseaudia. Pomocí těchto skriptů lze patřičná nastavení aplikovat jen pokud zrovna vyžadujeme pro práci JACK.

Následující příklad může být použitý jakož startovací skript, který démonizuje pulseaudio a spouští padevchooser. Tento skript nutno upravit pro volby konfigurace pulseaudia, které zde nejsou uvedeny jack_startup:

#!/bin/bash
#Load PulseAudio and PulseAudio Device Chooser

pulseaudio -D
padevchooser&

příklad skriptu pro vypnutí pulseaudia jack_shutdown:

#!/bin/bash
#Kill PulseAudio and PulseAudio Device Chooser

pulseaudio --kill
killall padevchooser

Oběma skriptům nutno povolit spouštění:

chmod +x jack_startup jack_shutdown

Pak po načtení QjackCtl přejdeme do Setup a v Options je tab "Execute Script after Startup:" a "Execute Script on Shutdown:" kde zadáme cestu ke skriptům.

Pulseaudio zkrz OSS

Přidejte následující do /etc/pulse/default.pa:

 load-module module-oss

Pak spusťte Pulseaudio jako obvykle. Měli by jste mít zdroje vstupu a vystupů pro vaše OSS zařízení.

Pulseaudio z chroot (př. 32-bit chroot v 64-bit instalaci)

Protože chroot nastavuje alternativní root, musí být puselaudio nainstaované také uvnitř chroot prostředí.

Pokud se PA nepřipojí na specifikovaný server v konfiguračním souboru /etc/pulse/client.conf nebo přes X11 nastavení používající modul module-x11-publish, pak začne hledat lokální server a pokud ho nenalezne tak si vytvoří nový server. Každý server má unikátní ID založené na id stroje z /var/lib/dbus. Pro umožnění aplikací pod chroot k přístupu na server je nutno připojit následující adresáře pod chroot:

/var/run
/var/lib/dbus
/tmp
~/.pulse

/dev/shm měl by být pro dobrý výkon taktéž připojen. Nutno podotknout, že pokud připojujete /home, pak je i .pulse adresář již připojen.

Pro další upřesnění a možnosti navštivte tuto wiki stránku.

Rady při potížích

Žádný zvuk po instalaci

Žádné zvukové karty

Když PulseAudio nastartuje, spusťte pacmd list. Jestliže zde nejsou žádné zvukové karty, ujistěte se, že ALSA zařízení nejsou v používání tj blokovány jiným programem:

$ fuser -v /dev/snd/*
$ fuser -v /dev/dsp

Ujistěte se, že všechny aplikace používající pcm nebo dsp jsou ukončeny před restartem PA.

KDE4

Je možné, že máte nastavené jiné výstupní zařízení v phonon nastavení. Ujistěte se tedy, že máte nastavené správné výstupní zařízení na vrchu seznamu a zkontrolujte přes pavucontrol, že spuštěné aplikace používají Pulseaudio a zároveň PulseAudio používá správný zvukový výstup.

Ztlumené audio zařízení

Pokud neslyšíte zvuk ani defaultně pod ALSAou, pak patrně máte ztlumený výstup což ověříte přes alsamixer, kde nesmí mít výstup zesílení 00 nebo m ( stiskem m lze aktivovat/deaktivovat mute)

$ alsamixer -c 0

Někdy se stane, že snd_pcsp je v konfliktu s modulem snd_hda_intel (Intel zvukové karty). Pak je nutno zakázat snd_pcsp v souboru /etc/rc.conf v sekci MODULES přidáním !snd_pcsp.

Daemon nenastartuje

Zkuste resetovat PulseAudio:

$ pulseaudio --kill
$ killall pulseaudio
$ killall -9 pulseaudio
$ rm -rf ~/.pulse*
$ rm -rf /tmp/pulse*

Pak zkuste znovu spustit.

padevchooser

Pokud nemůžete spustit PulseAudio Device Chooser - padevchooser program pro výběr zařízení, pak zkuste restartovat Avahi démona:

$ /etc/rc.d/avahi-daemon restart

Škubání zvuku a vysoké vytížení CPU od verze 0.9.14

PulseAudio bylo přepsáno pro využívání časově založeného audio plánování místo tradičního přerušením řízeného. To může způsobovat problémy v některých Alsa ovladačích. Pro vypnutí časového plánování změnit:

load-module module-udev-detect 

v /etc/pulse/default.pa na:

load-module module-udev-detect tsched=0

Nekvalitní zvuk

Může být způsoben špatným nastavením vzorkovací frekvence zvuku v /etc/pulse/daemon.conf. Zkuste odkomentovat nebo změnit řádek:

; default-sample-rate = 44100

na

default-sample-rate = 48000

a restartujte PulseAudio:

pulseaudio --kill && pulseaudio --start

44100Hz je dobré pro kvalitní přehrávání audio souborů bez převzorkování, tyto jsou v drtivé většině právě v 44100Hz. 48000Hz je vhodné pro drtivou většinu zvukových karet.

Nefunkční nastavení hlasitosti

Zkontrolujte

/usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common

Pokud hlasitost nejde měnit použitím alsamixer nebo amixer, může to být kvůli větším hodnotám, které PulseAudio používá ( 65537 ). Zkuste proto větší hodnoty př. amixer set Master 655+ nebo použijte vyjádření v %.

Hlasitost je vyšší po každém spuštění aplikace

Můžete zkusit odkomentovat.

flat-volumes = no

v

/etc/pulse/daemon.conf

Realtime plánování

Pokud rtkit nepracuje, zkuste ručně nastavit PulseAudio s realtime časováním v /etc/security/limits.conf:

@pulse-rt - rtprio 9
@pulse-rt - nice -11

Nezapomeňte se přidat jakož uživatel do skupiny pulse-rt:

# gpasswd -a <user> pulse-rt

Viz také

Externí odkazy