首先介绍下背景,Linux 音频系统非常不完全简史:
- 1. OSS3 是 Linux 内核中比较老的声音系统,目前已逐渐废弃
- 2. OSS4 开发的时候是闭源软件,所以 2002 年 ALSA 被用来替代 OSS3 作为 Linux 内核中的声音构架
- 3. 2007 年的时候 4Front Technologies 发布了 GPL 版本的 OSS4,此时 ALSA 已成气候
关于 ALSA,OSS4,PulseAudio 和 Jack 一知半解版介绍(Esd 等就此省略一万字):
- 1. ALSA 目前是 Linux 内核上标准的音频框架,但是仅支持 Linux 系统,没有软件混响。对各种设备的支持非常全面。
- 2. OSS4 由于错过时机而没能成为官方内核的一部分,但是它的跨平台性远好于 ALSA,支持 Windows、BSD 和许多 UNIX,其 API 据说也更适合开发。OSS4 有实时、低延时的特性,支持软件混响,所有操作在内核层实现。但是对 USB 设备的支持明显薄弱许多。
- 3. PulseAudio 是为 POSIX 兼容环境设计的一个声音代理程序,内置软件混响。PulseAudio 可以将程序对声音系统的请求代理到 ALSA、OSS 等多种后端,甚至可以通过网络传输这些讯息。
- 4. Jack 是一个专业级的声音服务系统,跨平台性强,其表现对内核的实时性要求较 PulseAudio 高一些,在一般的操作系统上 Jack 没有前者流行。
Ubuntu 默认使用 ALSA 作为底层声音驱动,程序则与 PulseAudio 交互,这是一个很不错的方案。然而作者偶尔会遇到 ALSA 被独占其他软件无法发声的问题,才随着 #ubuntu-cn 上的 OSS4 热潮赶了把时髦。
换 OSS4 是要折腾的,折腾就是有风险的,以下为折腾的理由:
- 1. 默认的 ALSA 在你的电脑上不能正常工作
- 2. 纯粹喜欢 OSS4,不喜欢 ALSA
- 3. 想要跟风折腾
换 OSS4 的具体好处:
1. 某些情况下音质更好
2. 低延迟,低 CPU 占用
3. 自带软件混响
4. 文档更全面换 OSS4 的具体坏处:
1. 有些硬件不被支持
2. 对 midi 支持很差
3. USB 声音设备支持仍处于试验性阶段
4. 自己折腾可能会把系统声音系统搞跨开始说安装 OSS4 的具体方法。(注明:我是用第三种方法装的;如果你用了第二种不成功的话一定要记住卸载:appt-get remove packge<name>否则你用其他方法时会出现configure文件的覆盖粘贴错误;最后一点就是可能有其他文章会让你配置好几个项,但是我只配了第一个就好了ubuntu 12.04)
方法一
到 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