星期日, 11月 09, 2008

PulseAudio

PulseAudio 是一個 sound server, 基本上就有點像廣播電台一樣, 程式連線上去就可以接收.

用了兩天以後, 我覺得PA 的好處是, 每個程式都是獨立的client, 所以音量控制是分開的. 也許ALSA 也可以做到同樣的管理(不過我沒研究就是), 但是我之前使用ALSA 的時候, mplayer 一調音量整個系統的音量就會受影響. 而PA 接收到的音量控制訊息是只針對一個client 的音量控制, 所以每個程式的音量可以分開設定(好像DJ 喔, 好帥 :p )

壞處是 pulseaudio 其實還蠻耗系統資源的, 有時候pulseaudio 會佔掉4~7% of my cpu, 實在有點難接受一個sound server 就這麼耗資源. 另一個壞處就是我切到別的tty 的時候, pulseaudio 就會停掉. 當我切回來才會繼續播放, 可以解決的話比較好不過不造成嚴重的缺點.

Ubuntu 8.04 以後內建就使用 PulseAudio, 不過不知道為什麼我的好像預設沒有打開, 可能是因為我用的是fluxbox, 如果要在進入desktop 就打開的話只要在 ~/.fluxbox/startup 裡面加入
pulseaudio &
這樣fluxbox 在initialize 的時候就會自動開啟了.

mplayer 開啟的時候似乎就直接會去找pulseaudio 的server, 所以不太需要設定. 但是其他可能沒有支援pulseaudio 的軟體, 就要靠pulseaudio 的 alsa plugin 來把聲音導入/出

方法大概是這樣:
1. 安裝 libasound2-plugins
sudo apt-get install libasound2-plugins
2. 更改 alsa 的預設值, 讓它直接導到 pulseaudio
vim ~/.asoundrc
如果原本有的設定可以留著, 但我是全部都comment 掉了, 想說要用就全部都用PulseAudio, 加入以下設定:
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}

pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
這樣alsa 就會預設把聲音輸出給PulseAudio.
基本上這樣設定完大部分的程式都沒什麼問題.

沒有留言: