首先介紹下背景,Linux 音頻系統非常不完全簡史:–#happyaron兄原創
關於 ALSA,OSS4,PulseAudio 和 Jack 一知半解版介紹(Esd 等就此省略一萬字):
換 OSS4 是要折騰的,折騰就是有風險的,以下為折騰的理由:
換 OSS4 的具體好處:
換 OSS4 的具體壞處:
開始說安裝 OSS4 的具體方法。
方法一:
到 OSS4 官方網站下載免費商業版, 下載頁面。
選擇相應的版本,比如 Linux 2.6 (x86) (DEB),點 Submit 獲得下載鏈接。注意這個版本按許可證僅可以使用一年。
得到 deb 文件后雙擊安裝(或者 sudo dpkg -i oss-linux*.deb)。
方法二:
Ubuntu 10.10 可以直接從軟體倉庫安裝版本略舊的 OSS4:
sudo apt-get install oss4-base oss4-dkms oss4-gtk
Ubuntu 10.04 和 11.04 不可以使用這個方法,10.04 倉庫中的 oss4-dkms 存在打包問題無法正確構建內核模塊,11.04 因為內核新(linux >= 2.6.36)而 oss4 版本太老而無法成功構建內核模塊。
方法三:
如果你像我一樣喜歡開源版,又喜歡折騰,那麼我們一起來編譯最新版的。
首先安裝 mercurial 以便取回最新版代碼:
sudo apt-get install mercurial
取出代碼:
cd ~
hg clone http://opensound.hg.sourceforge.net:8000/hgroot/opensound/opensound oss-devel
創建編譯目錄,OSS4 需要在空目錄編譯:
cd ~/
sudo rm -rf oss42build
mkdir oss42build
編譯並安裝,假設你的主目錄是 /home/aron:
cd oss42build/
NO_WARNING_CHECKS=yes /home/aron/oss-devel/configure –enable-libsalsa=NO
make
sudo make deb
sudo dpkg -i oss*.deb
安裝結束,如果沒有遇到錯誤接下來開始配置:
1. 儘管 OSS4 內建了軟體混響,我還是沒有刪除 PulseAudio,因為 Ubuntu 的桌面環境很多部件僅設置了 PulseAudio 後端。我不想一一折騰,而只是盡量讓程序使用 OSS4,畢竟主要的播放器等都支持自定義音頻輸出。如果你也這樣想,照下面做;如果你不想,跳過這段。
A. 修改 PulseAudio 設置使其默認使用 OSS4 輸出:
gksu gedit /etc/pulse/default.pa
添加一行:
load-module module-oss device=”/dev/dsp” sink_name=output source_name=input mmap=0
B. 配置 gstreamer 使用 OSS4 作為後端:
安裝 gstreamer0.10-plugins-bad
sudo apt-get install gstreamer0.10-plugins-bad
運行命令:
gstreamer-properties
將輸入和輸出均設置為 OSS。
C. 設置 libasound 將傳遞給 ALSA 的聲音請求轉至給 OSS4:
gksu gedit /etc/asound.conf
添加以下內容:
pcm.oss {
type oss
device /dev/dsp
}
pcm.!default {
type oss
device /dev/dsp
}
ctl.oss {
type oss
device /dev/mixer
}
ctl.!default {
type oss
device /dev/mixer
}
D. 配置啟動時默認啟用 OSS4 而非 ALSA:
sudo dpkg-reconfigure linux-sound-base
選擇 OSS 而非 ALSA 或 default。
然後重啟電腦,系統級配置基本完成。然後可以給支持自定義音頻系統的軟體配置成使用 OSS4,比如 Audacious,Wine,Audacity,VLC,(s)mplayer,clementine。
2. 如果你想刪除 PulseAudio,也有辦法,但是不保證所有程序都能正確輸出聲音。首先是按照前一種配置方法里的 B、C、D 調整設置,然後按照 E 和 F 對 PulseAudio 開刀。
E. 使用 GStreamer 接管 GNOME 聲音系統,安裝為 GStreamer 後端編譯的 libcanberra:
sudo add-apt-repository ppa:dtl131/ppa
sudo apt-get update
sudo apt-get purge pulseaudio
sudo apt-get upgrade
F. 配置 Rhythmbox 等程序使用 Gstreamer (沒錯,還需要配置)
運行:
gconf-editor
找到 system/gstreamer/0.10/audio/default,將其中所有仍被設置為 pulsesink 的鍵(如 musicaudiosink 和 chataudiosink)都改為 osssink。
系統默認的音量控制插件會失效,因為它是基於 PulseAudio 的,可以在面板上單擊右鍵,添加一個 GNOME 的聲音控制。
然後重啟,應該絕大部分聲音系統都沒有問題了。可能存在的問題:
- Flash,需要安裝 flashplugin-nonfree-extrasound 來獲得支持 oss4 的 libflashsupport。
- Firefox,xulrunner 無法編譯成同時支持 Alsa 和 OSS4,所以可能有問題。
FAQ
1. 聲音輸入不能用,或者有噪音
運行命令:
ossxmix
在顯示的界面里把 pink 下拉菜單中選成 input,勾選界面里所有的 input-mix 和 input-mix-mute,然後在 pink 處拖動滑塊減小音量,一般以 80% 上下為宜,否則會有噪音。
2. 如何查看是否已經載入了 OSS4 內核模塊,以及我的音效卡用了什麼模塊?
運行命令:
lsmod | grep -i oss
比如我是 HD Audio,輸出如下:
oss_usb 104136 1
oss_hdaudio 144219 3
osscore 545146 2 oss_usb,oss_hdaudio
3. 如何查看我的音效卡型號?
lspci | grep -i audio
4. 64 位系統能用嗎?
能,沒問題。
5. KDE4 用 Phonon,能用嗎?
Phonon 默認應該可以直接檢測到 OSS4。KDE 4.0.x 用 Xine 後端時可能無法使用。
6. 用什麼調節音量?
如果保留了 PulseAuido,則使用它的程序可以用原來的音量控制,如果是用 Gstreamer,則可以使用 GNOME 的音量控制程序。
當然,也可以直接使用 ossxmix 工具調整,或者例如 xfce-oss、kmix 這樣的工具。
不想用 OSS4 了,怎麼復原?
我針對上面的 A B C D E F 分別說需要的操作。
A. 恢復 PulseAudio 默認的硬體檢測
gksu gedit /etc/pulse/default.pa
刪除添加的行。
B. 配置 gstreamer 使用 PulseAudio 作為後端
運行命令:
gstreamer-properties
將輸入和輸出均設置為 PulseAuido。
如果你不想要 gstreamer0.10-plugins-bad,可以刪除它:
sudo apt-get purge gstreamer0.10-plugins-bad
C. 設置 libasound 使用 ALSA:
刪除 /etc/asound.conf 中增加的所有行。如果你開始折騰 OSS4 之前沒有對它做過修改,直接刪除就行:
sudo rm /etc/asound.conf
D. 配置啟動時默認啟用 ALSA:
sudo dpkg-reconfigure linux-sound-base
選擇 ALSA。
E. 換回支持 Gstreamer 和 PulseAudio 的 libcanberra 後端:
安裝必須的軟體:
sudo apt-get install pulseaudio indicator-sound libcanberra-pulse libcanberra-gstreamer pulseaudio-esound-compat pulseaudio-module-bluetooth pulseaudio-module-gconf pulseaudio-module-x11 ppa-purge
刪除添加的 PPA:
sudo ppa-purge ppa:dtl131/ppa
sudo apt-get update
如果還不能正常,就手工降級所有相關軟體包(是挺噁心的,但是沒別的辦法),可以在新立得里用“本地的或陳舊的”過濾器幫你確定是哪些包。
F. 配置 Rhythmbox 等程序使用 PulseAudio
運行:
gconf-editor
找到 system/gstreamer/0.10/audio/default,將其中所有仍被設置為 osssink 的鍵都改為 pulsesink。
然後把所有前面修改過使用 OSS4 的程序都換回使用 PulseAudio,重啟系統。
有用的資料:
[火星人 ] 在 Ubuntu 上使用 OSS4 聲音系統已經有813次圍觀