習慣了在windows下多個程式一起使用,播放音樂,看網路電視,通常不會有什麼問題,可是在這陣子用fedora的經驗中,似乎這樣輕鬆寫意的程序並沒有想像中的簡單,因為在一些程式會佔用了音效卡,而使得其他程式放不出聲音來.而剛好我的音效卡又不是多工的(現在好像多工的音效卡不多見了).那問題就出來了,我的skype只要一開始說話,那麼所有的聲音都不見了,同樣的情形還發生在realplayer中,而realplayer發生的情形比我想像中的還更要命.居然在realplayer結束後,還是沒有聲音,獨獨realplayer自己能發出聲音.真是太霸道了.在這一,二天的google旅程中,總算找到一些還能令人滿意的解答.
原來同樣的音效卡在windows下能運作得很好,而在linux下卻會發生問題的原因是.windows會把所有的聲音先混和好後再輸出到音效卡,做這件事的就叫sound server,也就是說並沒有讓其他程式直接的使用音效卡.那難道在linux下就沒有這樣的運作方法嗎?答案是有的,但是仍然有些linux下的軟體會直接的佔用音效卡,例如:gaim,skype,realplayer...等.在linux下的sound server我知道的有二個,Esound和Arts,當你使用kde環境時,那麼預設的就是Arts,而使用Gnome時,就是使用Esound,在linux下透過sound server來運作聲音的話,就可以避免音效卡被獨佔所發生的問題.以skype來說,請在執行skype之前,將執行方法改成以下的指令.
kde:
artsdsp skype
Gnome:
esddsp skype
這樣就可以讓sound server接手skype的聲音運作,同樣的也應用在gaim和realplayer上.
但是在我做所有套件的update後,發現我的realplayer居然沒法用artsdsp來開啟了,artsdsp居然告訴我
artsdsp works only for binaries
而realplayer的執行檔 realplay居然是個script,現在還沒精神去研究這個script要怎麼呼叫realplayer真正的執行檔,因為我找到用mplayer播放rm和rmvb的方法了,而且realplayer在我現在的環境下居然lag的很厲害,我也還沒找出原因,所以現在很想把realplayer給踢出我的nb.
如果發生因為音效卡被佔用而造成聲音都沒了,試著把artsd這個程序給刪除,然後再到"控制中心"裡重新啟動聲音的部份,應該可以解決.或者使用以下指令看看是那個程式把音效卡給佔住,也把那個程序給刪除.
lsof /dev/dsp /dev/snd/*