Pulseaudio kasutamine operatsioonisüsteemiga Debian Squeeze

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

PulseAudio http://www.freedesktop.org/wiki/Software/PulseAudio on helisüsteem (ingl. k. sound system), mis võimaldab juhtida arvutiga heli salvestamist ja taasesitamist, ülidselt ruutida heli arvutis. Tundub, et 2012 aastal on PulseAudio kasutamine suhteliselt populaarne töökohaarvutites, paljud rakendused oskavad seda ühel või teisel viisil kasutada. Professionaalseks helitöötluseks on tõenäoliselt sobivamat tarkvara, nt JACK http://jackaudio.org/.

Reeglina PulseAudio ei tööta otseselt riitvaraga, vaid kasutab nt ALSA abi.

Tööpõhimõte

Väga tõenäoliselt toimub Debian Squeeze operatsioonisüsteemi heli kasutamine selliselt

  • riistvaraga tegeleb ALSA
  • kõige muuga, st heli ruutimisega erinevate sisendite, väljundite ja neid kasutavate programmide vahel tegeleb PulseAudio

Seejuures on täiesti nö normaalne, et ALSA kasutamiseks ettevalmistatud tarkvara pannakse suhtlema PulseAudioga, mis omakorda kasutab ALSA vahendeid riistvaraga suhtlemiseks.

  • Source
  • Sink
  • Client

Nö normaalsel juhtumil peaks olema arvutil

  • mikrofoni sisend
  • line-in
  • kõrvaklappide väljud
  • line-out

ja saama neid tarkvaraliselt juhtida, nt valida, kas heli kostab kõrvaklappidest, line-outist või mõlemist.

Tarkvara paigaldamine

Debian Squeeze sisaldab PulseAudio v. 0.9.21 tarkvara, 2012 suvel sisaldab tulev Debian Wheeze PulseAudio v. 2.0.

# apt-get install pulseaudio vlc-plugin-pulse paman paprefs pavucontrol pavumeter

kus

  • paman - PulseAudio Manager
  • paprefs - PulseAudio Preferences
  • pavucontrol - PulseAudio Control
  • puvemeter - PulseAudio Volume

PulseAudio seadistamine ja käivitamine

UNIX audio gruppi ei tohi kuuluda kasutajaid

# grep audio /etc/group
audio:x:29:

PulseAudio tööd juhivad seadistusfailid

# ls -l /etc/pulse/*
-rw-r--r-- 1 root root 1184 Jul 29  2010 /etc/pulse/client.conf
-rw-r--r-- 1 root root 2134 Jul 29  2010 /etc/pulse/daemon.conf
-rw-r--r-- 1 root root 4781 Feb 13 14:28 /etc/pulse/default.pa
-rw-r--r-- 1 root root 1978 Jul 29  2010 /etc/pulse/system.pa

kus võib olla oluline kasutada failis /etc/pulse/default.pa ridu

load-module module-alsa-sink device=hw:0
load-module module-alsa-source device=hw:0,0

Seejärel muuta ALSA seadistusfail nt selliseks

# cat /etc/asound.conf
pcm.pulse {
  type pulse
}

ctl.pulse {
  type pulse
}

pcm.!default {
  type pulse
  # If defaults.namehint.showall is set to off in alsa.conf, then this is
  # necessary to make this pcm show up in the list returned by
  # snd_device_name_hint or aplay -L
  hint.description "Default Audio Device"
}

ctl.!default {
  type pulse
}

PulseAudio seadisusfailis kasutamine

# cat /etc/default/pulseaudio 
PULSEAUDIO_SYSTEM_START=0
DISALLOW_MODULE_LOADING=0

Käivitamine

Käivitamine toimub skriptiga, mida tavaliselt ei ole vaja teha

# /etc/init.d/pulseaudio start|stop

Peale kasutaja GNOME keskkonda sisselogimist käivitatakse automaatselt sellised protsessid

# ps aux | grep pulse
imre      8141  1.3  0.1 317176  7912 ?        Ssl  14:31   0:51 /usr/bin/pulseaudio --start --log-target=syslog
imre      8144  0.0  0.0 105748  3640 ?        S    14:31   0:00 /usr/lib/pulseaudio/pulse/gconf-helper

ning kuulatakse sellistel soketitel

# netstat -anp | grep pul
tcp        0      0 0.0.0.0:16001           0.0.0.0:*               LISTEN      8141/pulseaudio 
tcp        0      0 0.0.0.0:4713            0.0.0.0:*               LISTEN      8141/pulseaudio 
tcp6       0      0 :::16001                :::*                    LISTEN      8141/pulseaudio 
tcp6       0      0 :::4713                 :::*                    LISTEN      8141/pulseaudio

GNOME Configuration Editor, avada

/desktop/gnome/sound

Testimine

$ aplay -Dpulse /usr/share/skype/sounds/CallRingingIn.wav
Playing WAVE '/usr/share/skype/sounds/CallRingingIn.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono

Pulseaudio kasutamine levinud programmidega

Iceweasel

Üks võimalus seadistada Iceweasel brauser kasutama PulseAudiot on läbi padsp wrapperi

# cat /etc/iceweasel/iceweaselrc 
ICEWEASEL_DSP="padsp"

VLC

Debian Squeeze sisaldab VLC v. 1.1.3, millel veel ei ole PulseAudio tuge, seepärast sobib teda kasutada nt läbi padsp wrapperi

$ padsp vlc -v v4l2:///dev/video0:width=720:height=576 --input-slave oss:///dev/dsp

Skype

TODO

mpg123

TODO

LiVES

TODO

PulseAudio töö kontrollimine

PulseAudio Volume Control

PulseAudio Volume Control võimaldab kontrollida erinevaid heli sisended ja väljundeid, samuti tegevusi (salvestamine ja mängimine). Tihtipeale on tänapäeval arvutis mitu nö helikaarti või muu hulgas heliga tegelevat seadet, pealegi väidetavalt on PulseAudio eelis muude lahenduste ees need ära hallata.

  • videokaardiga seotud heli osa
  • onboard helikaart
  • laienduskaardi kujul helikaart
  • veebikaamera

Erinevate kaartide ja nende peale olevate ressursside kontrollimine toimub valikus Configuration

Fail:Pulseaudio-3.gif

kus

  • esimene Built-in Audio vastab videokaardi HDMI osale
  • teine Built-in Audio vastab onboard helikaardile
  • WebCam C310 on veebikaamera
  • antud juhul on selguse mõttes kõik va onboard helikaart välja lülitatud

Playback valik näitab, millised programmid parasjagu mängivad

Fail:Pulseaudio-1.gif

kus

  • VLC media player
  • Movie browser plugin
  • ALSA plug-in [mpg123.bin]

Erinevate helikaartide sisendseadmed asuvad Input Devices jaotuses, allolev pilt vastab juhtumile, kus Configuration all on ka webcam sisse lülitatud olekus, et pilt toredam tuleks

Fail:Pulseaudio-4.gif

kus

  • Built-in Audio Analog Stereo seadmel on kolm võimalikku sisendit (porti), esipaneeli mikrofon, tagapaneeli mikrofon ning line in, tundub, et plugged in ja unplugged täpsustused sulgudes vastavad tegelikkusele
  • webcam puhul on ainult üks sisend port
  • kõige all on öeldud, et esitada tuleb vaid riistvaralisi sisendseadmeid

Erinevate helikaartide väljundseadmed asuvad Output Devices jaotuses

Fail:Pulseaudio-5.gif

kus

  • Built-in Audio Analog Stereo seadmel on neli väljundit
  • tundub, et plugged in ja unplugged vastavad tegelikkusele

Salvestamise sakk, seal on parasjagu salvestavad rakendused

Fail:Pulseaudio-8.gif

PulseAudio Manager

Avades on näha parasjagu Pulset kasutavad rakendused

PulseAudio Manager -> Clients

Fail:Pulseaudio-2.gif

kus

  • ConsoleKit Session
  • GNOME Volume Control Applet
  • Movie browser plugin
  • PulseAudio Volume Control
  • PulseAudio Manager
  • VLC media player
  • ALSA plug-in [mpg123.bin]
  • PulseAudio utiliit pamcd võimaldab juhtida käsurealt, nt käsk stat
$ pacmd 
Welcome to PulseAudio! Use "help" for usage information.
>>> stat
Memory blocks currently allocated: 1, size: 63.9 KiB.
Memory blocks allocated during the whole lifetime: 2947307, size: 3.8 GiB.
Memory blocks imported from other processes: 0, size: 0 B.
Memory blocks exported to other processes: 0, size: 0 B.
Total sample cache size: 0 B.
Default sample spec: s16le 2ch 44100Hz
Default channel map: front-left,front-right
Default sink name: alsa_output.hw_0
Default source name: alsa_input.hw_0_0
Memory blocks of type POOL: 1 allocated/1729838 accumulated.
Memory blocks of type POOL_EXTERNAL: 0 allocated/482520 accumulated.
Memory blocks of type APPENDED: 0 allocated/0 accumulated.
Memory blocks of type USER: 0 allocated/0 accumulated.
Memory blocks of type FIXED: 0 allocated/1005234 accumulated.
Memory blocks of type IMPORTED: 0 allocated/212235 accumulated.

PulseAudio serveri ettevalmistamine üle võrgu kasutamiseks

Ubuntu v. 13.10

Tõenäoliselt asjakohane ka Debianil, aga konkreetselt on nii tehtud Ubuntu v. 13.10 keskkonnas

# cat /etc/default/pulseaudio 
PULSEAUDIO_SYSTEM_START=1
DISALLOW_MODULE_LOADING=0
# cat /etc/pulse/default.pa
...
### Enable TCP and CLI
load-module module-native-protocol-tcp port=1500 auth-anonymous=1
load-module module-cli-protocol-unix
# cat /etc/pulse/system.pa
...
load-module module-position-event-sounds
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
# cat /etc/pulse/daemon.conf
...
system-instance = yes

Probleemide avastamiseks võib olla abiks, kui pulseaudio ei käivitu süsteemi algkäivituse ajal automaatselt, selleks tuleks kaustada faili

# cat /etc/init/pulseaudio.override 
manual

Käsitsi deemoni juhtimine toimub nt initctl utiliidiga

# initctl start pulseaudio

Tundub, et Ubuntu 13.10 juures on midagi katki, et deemonit õnnestub startida vaid üks kord. Edaspidi ta ei allu initctl juhtimisele.

Lisaks, nn headless (st ilma X vms graafilise kasutajaliideseta) arvutis aitab heli omadusi seadistada nt alsamixer programm

  • valida esmalt programmi haldusliidesest õige helikaart (F6 abil)
  • valida TAB abil sobiv vaade (Playback jne)
  • kontrollida erinevate väljundite helitugevust
  • kontrollida erinevate sisendite tundlikkust

Ubuntu v. 14.04

Nn headless arvutis kasutamiseks tuleb paigaldada PulseAudio ja soovitavalt ALSA mixer tarkvara

# apt-get install pulseaudio alsa-utils

Seadistamine muus osas sarnaselt 13.10, kuid failis /etc/init/pulseaudio.conf kasutada ridu

env DISALLOW_MODULE_LOADING=0
env PULSEAUDIO_SYSTEM_START=1

Tundub, et korduv pulseaudio protsessi stop ja start 14.04 puhul töötab.

Kasulikud lisamaterjalid

PulseAudio kliendi kasutamine üle võrgu

$ paplay -s 192.168.10.10 track01.cdda.wav

kus

  • -s 192.168.10.10 - PulseAudio serveri ip aadress, vaikimisi kasutatakse andmevahetuseks 4713/tcp porti

Selleks, et saaks kasutada nt mpg123 programmi tuleb kasutada failis /etc/asound.conf

# cat /etc/asound.conf
pcm.pulse {
  type pulse
}

ctl.pulse {
  type pulse
}

pcm.!default {
  type pulse
  # If defaults.namehint.showall is set to off in alsa.conf, then this is
  # necessary to make this pcm show up in the list returned by
  # snd_device_name_hint or aplay -L
  hint.description "Default Audio Device"
}

ctl.!default {
  type pulse
}

ning failis /etc/pulse/client.conf rida, mis näitab PulseAudio serveri aadressi

# cat /etc/pulse/client.conf
...
default-server = 192.168.10.10

Seejärel peaks töötama kliendis käsk ning olema kuulda heli PulseAudio serveriga ühendatud helisüsteemist

$ mpg123 mangimind.mp3

Tundub, et nö igal juhul on kliendi ja serveri vahel andmeliikluse maht ca 200 kBait/s.

Kasulikud lisamaterjalid

pactl kasutamine

$ pactl list
$ pactl load-sample lugu1.wav lugu1
$ pactl play-sample lugu1

Selleks, et moodulite laadimine toimuks automaatselt, sobib nt line-in ja out kokkuühendamiseks lisada /etc/pulse/defaults.pa faili

load-module module-loopback

Konsoolilt kasutamine

TODO

Skype kõne salvestamine

$ pactl load-module module-null-sink sink_name=pealtkuulaja
$ pactl load-module module-loopback 
$ pactl load-module module-loopback 

Kasulikud lisamaterjalid

parec kasutamine

Iga sink'iga kaasneb automaatselt nn monitor source, nt kui midagi mängitakse alsa_output.pci-0000_00_1b.0.analog-stereo abil, saab seda nt nii lindistada

$ parec -d alsa_output.pci-0000_00_1b.0.analog-stereo.monitor | sox -t raw -r 44k -sLb 16 -c 2 - /tmp/tere.wav

padsp kasutamine

padsp on wrapper, mis suunab nn legacy programmid pulseaudiot kasutama, nt

$ padsp vlc -v v4l2:///dev/video0:width=720:height=576 --input-slave oss:///dev/dsp

Line-in ja Line-out kokku-ühendamine

PulseAudio abil saab ühendada kokku arvuti line-in signaali line-out'i

$ pactl load-module module-null-sink sink_name=tvtime
$ pactl load-module module-loopback sink=tvtime

Ning seejärel töötada Volume Control rakendusega.

Konkureerivad lahendused

OSS

Open Sound Sustem http://wiki.debian.org/OSS ...

ALSA

Advanced Linux Sound Arcitecture http://wiki.debian.org/ALSA ...

Märkused

  • Kui PulseAudio töötab, siis tundub, et alati ei pruugi saada root kasutaja alsamixerit kasutada
# alsamixer
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
cannot open mixer: Connection refused

Aitab näidata õigem kaart, nt '-c 1' võtmega

Fail:Pulseaudio-6.gif

kus

  • F6 abil saab valida helikaardi
  • Tab abil saab vaida Playback, Capture ja All vahel
  • M abil toggleda Mute ja Unmute

Tundub, et AlsaMixerit sobib kasutada nii kasutajana kui root kasutajana.

Kui kasutatakse XFCE aknahaldurit, siis maksab Mixeri liidesest kontrollida Input Source'id, Front Mic, Rear Mic jne

Fail:Pulseaudio-7.gif

2020 kasutamine

Server arvutis öelda

$ pactl load-module module-native-protocol-tcp auth-ip-acl="127.0.0.1;192.168.10.0/24"

Klient arvutis öelda

$ pactl load-module module-tunnel-sink "server=192.168.10.124 sink=alsa_output.pci-0000_00_0e.0.analog-stereo sink_name=valamunimi"
$ pacmd set-default-sink valamunimi

Selleks, et serverisse ei tuleks esmalt kasutajana sisse logida, sobib tekitada fail

# cat /etc/systemd/system/pulseaudio.service
[Unit]
Description=PulseAudio Daemon
 
[Install]
WantedBy=multi-user.target
 
[Service]
Type=simple
PrivateTmp=true
ExecStart=/usr/bin/pulseaudio --system --realtime --disallow-exit --no-cpu-limit

ning öelda

# systemctl enable pulseaudio.service

ja lisada faili /etc/pulse/system.pa rida

load-module module-native-protocol-tcp auth-ip-acl="127.0.0.1;192.168.10.0/24"

ning muudatuste kehtestamiseks arvuti taaskäivitada.

2020 headless pulseaudio server

Headless pulseaudio serveri tekitamiseks sobib tavalisele Debian v. 10 operatsioonisüsteemile (kus ei ole desktop tarkvara, nt xfce4, paigaldatud) paigaldada pakett pulseaudio, seejuures paigaldatakse lisaks hulka sõltuvusi

# apt-get install pulseaudio

Muuta pulse kasutaja shell /etc/passwd failis /bin/bash selleks, et saaks pulse protsessiga töötada (eriti öelda unmute)

/usr/bin/no-login -> /bin/bash

Tekitada eelmises punktis kirjeldatud 'Klient arvutis öelda' osa ja muudatuste kehtestamiseks arvuti rebootida. Kasutamiseks tuleb öelda unmute

# su - pulse
$ pactl set-sink-mute 0 toggle

ning lisaks saab uurida pulseaudio serveri omadusi, nt

$ pactl list sinks
Sink #0
	State: RUNNING
	Name: alsa_output.pci-0000_00_0e.0.analog-stereo
	Description: Built-in Audio Analog Stereo
	Driver: module-alsa-card.c
	Sample Specification: s16le 2ch 44100Hz
	Channel Map: front-left,front-right
	Owner Module: 4
	Mute: no
	Volume: front-left: 63932 /  98% / -0.65 dB,   front-right: 63932 /  98% / -0.65 dB
	        balance 0.00
	Base Volume: 65536 / 100% / 0.00 dB
	Monitor Source: alsa_output.pci-0000_00_0e.0.analog-stereo.monitor
	Latency: 23258 usec, configured 24988 usec
	Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
	Properties:
		alsa.resolution_bits = "16"
		device.api = "alsa"
		device.class = "sound"
		alsa.class = "generic"
		alsa.subclass = "generic-mix"
		alsa.name = "ALC887-VD Analog"
		alsa.id = "ALC887-VD Analog"
		alsa.subdevice = "0"
		alsa.subdevice_name = "subdevice #0"
		alsa.device = "0"
		alsa.card = "0"
		alsa.card_name = "HDA Intel PCH"
		alsa.long_card_name = "HDA Intel PCH at 0x91210000 irq 129"
		alsa.driver_name = "snd_hda_intel"
		device.bus_path = "pci-0000:00:0e.0"
		sysfs.path = "/devices/pci0000:00/0000:00:0e.0/sound/card0"
		device.bus = "pci"
		device.vendor.id = "8086"
		device.vendor.name = "Intel Corporation"
		device.product.id = "5a98"
		device.product.name = "Celeron N3350/Pentium N4200/Atom E3900 Series Audio Cluster"
		device.form_factor = "internal"
		device.string = "front:0"
		device.buffering.buffer_size = "352800"
		device.buffering.fragment_size = "176400"
		device.access_mode = "mmap+timer"
		device.profile.name = "analog-stereo"
		device.profile.description = "Analog Stereo"
		device.description = "Built-in Audio Analog Stereo"
		alsa.mixer_name = "Realtek ALC887-VD"
		alsa.components = "HDA:10ec0887,104386c7,00100302 HDA:8086280a,80860101,00100000"
		module-udev-detect.discovered = "1"
		device.icon_name = "audio-card-pci"
	Ports:
		analog-output-lineout: Line Out (priority: 9900, available)
		analog-output-headphones: Headphones (priority: 9000, not available)
	Active Port: analog-output-lineout
	Formats:
		pcm

kus

  • Mute: no
  • saab muuta heli valjust
$ pactl set-sink-volume 0 +3%

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid