天天看點

fedora 下音頻系統設定整理(音頻播放速度過快)

這裡先說一下我的機器的情況,我有兩塊聲霸卡,一塊是內建的AC97,一塊是樂之邦出的LILO III五周年USB聲霸卡。

然後,當然是我所遇到的情況:

在更新到fedora 11之前,我把fedora 10裡的pulseaudio直接給解除安裝掉了,那麼系統裡混音播放的任務就全部交給ALSA了,确實運作得很好,并且gstreamer沒有pulseaudio的支援似乎仍然是可以工作的。

但是更新到fedora11問題就來了,pulseaudio在系統更新的時候又被安裝了,并且USB聲霸卡出現爆音了。實際上我認為這個可能是pulseaudio的問題而不是ALSA的問題,因為播放器直接使用ALSA而不通過pulseaudio的時候沒有出現爆音。

是以我仍然想要解除安裝掉pulseaudio來解決問題,但是這回有麻煩了:

一方面,藍牙的包依賴于pulseaudio的包,是以需要避開依賴關系,沒有藍牙的朋友可以無視;

另一方面,Gnome面闆裡的音量調節被內建到pulseaudio這個包裡了,是以解除安裝pulseaudio調節音量就比較麻煩了;

最後,使用gstreamer作為後端的播放器,比如totem,rhythmbox無法工作了。

是以,我必須做一個選擇啦,幸運的是方案還是很多的:

第一種方案,就是直接解除安裝掉pulseaudio。

如果你沒有藍牙,并且也不在乎面闆上沒有音量調節按鈕,甚至也不許要使用totem和rhythmbox的話删掉也是無所謂了。一勞永逸。

引用:

yum remove pulseaudio

無法調節音量?用gst-mixer吧:

引用:

yum install gst-mixer

第二種方案,就是通過“橋接”的方法把pulseaudio的輸出作為ALSA的一個混音頻道來處理。

這個方案可以參考這篇文章,作者原帖,很權威哦:

http://forum.ubuntu.org.cn/viewtopic.php?t=135217

繼續引用:

引用:

方法:

a. 關閉Gnome“登陸“音樂 (如果你使用步驟c,可以跳過這一步)

gnome-sound-properties

->Sounds->

把Log in音樂改為No sound。

b. 修改/etc/pulse/default.pa

gksu gedit /etc/pulse/default.pa

找到:

#load-module module-alsa-sink ...

改成

load-module module-alsa-sink device=dmix

找到: (解決錄音問題,如skype和audacity)

load-module module-hal-detect

改成:

#load-module module-hal-detect

c. (做了步驟a,就不需要這一步)

找到:

load-module module-suspend-on-idle

改成

#load-module module-suspend-on-idle

這樣,通過使用dmix,PulseAudio就不會霸占整個audio系統。PulseAudio將成為alsa的其中一個MixChannel。然後,ALSA和PulseAudio就能很好地共存。以候都不再需要什麼libflashsupport forpulseaudio了。

這個方案實作起來是很簡單的,對于一塊聲霸卡的朋友來說是沒有什麼問題的。

但是我這裡不行了,pulseaudio隻能識别出一塊叫做dmix的聲霸卡(就是dmix混音頻道啦),而這塊聲霸卡究竟是USB聲霸卡還是內建聲霸卡則取決于ALSA把哪塊聲霸卡作為聲霸卡0來處理。而pulseaudio獨占控制ALSA的時候則能夠識别出不同的聲霸卡,是以總能夠使用正确的聲霸卡進行輸出。

第三種方案,使用pulseaudio來管理聲音。

需要注意的是此時pulseaudio獨占了ALSA。

使用pulseaudio需要解決的主要問題是各種程式對pulseaudio的支援,以下就列舉幾個典型好了:

1.mplayer:

引用:

mplayer是支援pulse作為輸出的,ao設定成pulse就好了,不用我廢話吧。

2.wine+foobar2000:

引用:

使用wine運作foobar2000可能是無聲的,這是應該是因為使用了ALSA或者OSS作為音頻驅動程式,而此時pulseaudio獨占了ALSA,是以wine沒法通路資源。

預設情況下安裝wine是不會安裝wine-pulseaudio的,安裝wine-pulseaudio:

引用:

yum install wine-pulseaudio

運作winecfg,在音效設定裡把驅動一項改成pulseaudio驅動就可以了。

但是這樣仍然有可能出現爆音,原因還沒弄清楚,但是隻要把DirectSound硬體加速改成“軟體模拟”就好了。

3.flashplayer:

引用:

flashplayer是不支援pulseaudio的(今天以前吧,明天不知道怎麼樣),使用的是ALSA作為輸出。

是以如果想要看線上視訊就會發現沒有聲音,因為pulseaudio獨占了ALSA,想要出聲即使殺死pulseaudio也并非每次湊效。

解決的辦法是安裝libflashplayer插件。

如果是在ubuntu下可以通過安裝插件: apt-get install libflashsupport來解決,令flashplayer通過pulseaudio來進行輸出;但是在fedora 11下yumlist竟然找不到libflashsupport這個包。是以隻能求助于rpmfind啦,這裡給一個現成的連結:

http://rpmfind.net/linux/rpm2html/se...submit=Search+...

可以找到F9用的包,能用就行了。實際上我的做法直接把這個包給解壓,然後把libflashsupport.so這個檔案丢到/usr/lib就完事了,因為安裝的時候提示有無法解決的依賴問題,不過事實證明仍然是可用的;需要注意的是,這可能引起你的浏覽器頻繁崩潰( firefox :3.5b4 ; flash-plugin : 10.0.22.87)。

如果說有什麼理由要使用pulseaudio的話,那麼隻能說是pulseaudio對于多個聲霸卡的管理比較好吧,并且這樣可以使整個音頻系統更為統一一點;

問題也是有的:爆音,延遲。希望在後續版本裡可以得到解決。

關于音量調節的一些小細節,我認為有必要做一些說明的,一下是我所知的情況。

在gnome_fedora 11下進行音量調節可以通過這麼幾個小工具來實作:

引用:

gnome-voluem-control.....pulseaudio提供的音量調節,可以調節pulseaudio混音的音量。面闆上的音量調節條也是這個程式提供的。

alsamixer...........................終端下使用,可用于設定聲霸卡音量。

gst-mixer...........................alsamixer的圖形界面吧?

gnome-volume-control所調節的是pulseaudio傳遞到聲霸卡之前的音量,也就是pulseaudio混音的總音量;

alsamixer所調節的是聲霸卡的本身的音量則是PCM(所謂波形)或者Master(主音量),而pulseaudio并不管理這些東西。

是以,有些程式使用pulseaudio,而有些程式使用ALSA則音量調節實際上處于不統一的狀态,方案二就屬于這種情況:在fedora11下使用方案二則會發現對于使用ALSA的程式,面闆裡那個音量調節不起作用了,因為混音是通過pulseaudio完成的;在fedora10下,這個音量調節調節的實際上調節的是Master或者PCM。

繼續閱讀