Problema 1:
Siunčiant DISPLAY=:0 espeak "test" komandą metą klaidą, kadangi vartotojas nepridėtas prie audio grupės:
No protocol specified
xcb_connection_has_error() returned true
...
Sprendimas:
Pridedam www-data į audio grupę:
$ sudo adduser www-data audio
$ sudo adduser www-data pulse
$ sudo adduser www-data pulse-access
Patikrinam garso įrenginius:
$ cat /proc/asound/cards
0 [SB ]: HDA-Intel - HDA ATI SB
HDA ATI SB at 0xfe8f4000 irq 16
1 [HDMI ]: HDA-Intel - HDA ATI HDMI
HDA ATI HDMI at 0xfe99c000 irq 32
$ pacmd list-sinks | egrep "index|state|alsa.card_name"
index: 0
state: RUNNING
alsa.card_name = "HDA ATI HDMI"
index: 13
state: SUSPENDED
alsa.card_name = "HDA ATI SB"
Sprendimas:
Šis scenarijus permes visą garsą iš hdmi į kolonėles. Galima pasirinkti, tam tikrą garso įvestį ir tik ją persiųsti į kitą įrenginį.
Garso įjungimas/išjungimas:
SINK=`pacmd list-sinks|grep ' index'| awk '/index:/{ print $2 }'` #Surandame veikiantį garsi įrenginį
:0
Įvykdyti komandos, kuriai reikalingos sudo teisės nepavyks. Turime vartotojui suteikti papildomasteises sudoers dokumente.
Pasileidus komandą einam į Simultaneous Output -> ir Pažymim Varnelę
Kaip padaryti, kad kiekvieną kartą užsikrovus, nustatymai pasiliktų tokie patys
Perkraunam pulse audio
$ systemctl --user restart pulseaudio.service
Ir nustatom output ant keliu įrenginių
$ pavucontrol
Siunčiant DISPLAY=:0 espeak "test" komandą metą klaidą, kadangi vartotojas nepridėtas prie audio grupės:
No protocol specified
xcb_connection_has_error() returned true
...
Sprendimas:
Pridedam www-data į audio grupę:
$ sudo adduser www-data audio
$ sudo adduser www-data pulse
$ sudo adduser www-data pulse-access
Problema 2:
Prie kompiuterio prijungtos kolonėlės ir monitorius (su integruotomis kolonėlėmis) hdmi jungtimi. Siunčiant komandas, garsas girdisi ne į pagrindines kolonėles, bet per monitorių.
Prie kompiuterio prijungtos kolonėlės ir monitorius (su integruotomis kolonėlėmis) hdmi jungtimi. Siunčiant komandas, garsas girdisi ne į pagrindines kolonėles, bet per monitorių.
Patikrinam garso įrenginius:
$ cat /proc/asound/cards
0 [SB ]: HDA-Intel - HDA ATI SB
HDA ATI SB at 0xfe8f4000 irq 16
1 [HDMI ]: HDA-Intel - HDA ATI HDMI
HDA ATI HDMI at 0xfe99c000 irq 32
Kaip sužinoti kuris įrenginys groja?
$ pacmd list-sinks | egrep "index|state|alsa.card_name"
index: 0
state: RUNNING
alsa.card_name = "HDA ATI HDMI"
index: 13
state: SUSPENDED
alsa.card_name = "HDA ATI SB"
Šis scenarijus permes visą garsą iš hdmi į kolonėles. Galima pasirinkti, tam tikrą garso įvestį ir tik ją persiųsti į kitą įrenginį.
#!/bin/bash SINK=`pacmd list-sinks | grep ' index' | awk -F": " {'print $2'}` pacmd set-default-sink ${SINK} pactl list short sink-inputs | awk '{ print $1 }' | while read sound_input do pacmd move-sink-input ${sound_input} ${SINK} done
SINK=`pacmd list-sinks|grep ' index'| awk '/index:/{ print $2 }'` #Surandame veikiantį garsi įrenginį
pactl set-sink-mute $SINK toggle #Kontroliuojam garsą šiame įrenginyje
Tiesioginis garso siuntimas į kolonėles:
$ espeak "Wisdom begins in wonder. " 10 -w wav --stdout > test.wav && aplay test.wav -v -V mono|stereo # Su garso indikacija
Grojimas papildant tekstą
$ espeak "Wisdom begins in wonder. " 10 -w wav --stdout > test.wav && aplay test.wav -v -V mono|stereo # Su garso indikacija
Grojimas papildant tekstą
$ espeak "Appending new text" -w wav --stdout >> test.wav && aplay test.wav
Grafinių aplikacijų siuntimas:
Tam, kad turėtume galimybę siųsti grafines aplikacijas, turime:- Paleisti xhost + komandą, kuri duos leidimą jungtis prie X serverio.
- Murodyti x11 aplinkos kintamąjį.
:0
Iš programėlės siunčiame grafines aplikacijas į x11 aplinką:
DISPLAY=:0 glxgears
DISPLAY=:0 espeak "test" Įvykdyti komandos, kuriai reikalingos sudo teisės nepavyks. Turime vartotojui suteikti papildomasteises sudoers dokumente.
$ sudo visudo || sudo nano /etc/sudoers
www-data ALL = NOPASSWD: /sbin/programos1, /sbin/programa2 # Pridedam šį įrašą, kad gautume prieiga prie nurodytų programų
user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown #Perkrovimo teisės suteikimas
Garso siuntimas į dvejus įrenginius:
$ sudo apt-get install paprefs
www-data ALL = NOPASSWD: /sbin/programos1, /sbin/programa2 # Pridedam šį įrašą, kad gautume prieiga prie nurodytų programų
user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown #Perkrovimo teisės suteikimas
Garso siuntimas į dvejus įrenginius:
$ sudo apt-get install paprefs
Kaip padaryti, kad kiekvieną kartą užsikrovus, nustatymai pasiliktų tokie patys
Perkraunam pulse audio
$ systemctl --user restart pulseaudio.service
Ir nustatom output ant keliu įrenginių
$ pavucontrol