全部博文(2005)
分类:
2009-08-12 13:16:43
i18n |
---|
简体中文 |
Contents[] |
Open Sound System (OSS)是一个可以工作在一些类unix系统,POSIX兼容系统上的声音驱动,包括了 Linux, FreeBSD, 和 Solaris.
请注意这里说的不是老的OSS驱动,那是距现在有10年时间的linux内核包含的驱动。
这篇文章是关于新的OSS版本,也叫OSSv4。这些版本仍然属于前所有者,但是在2007年7月再次开放了源代码,并且在GPL, BSD和CDDL协议下发行。
# pacman -S oss
# /etc/rc.d/oss start
注意:
$ osstest
在测试过程中你应该能听到音乐。
基于命令行到混音器叫 ossmix,它很像BSD声音混音器(mixerctl)。 还有一个更友好的基于图形界面的混音器 ossxmix。运行需要依赖gtk2。 ossxmix的控制功能解释如下:
______________________________
/ High Definition Audio ALC262 \ ----------------------------------> 声卡的标签
/________________________________\_______________________________
|
| [x] vmix0-enable [vmix0-rate: 48.000kHz] vmix0-channels \ The vmix (virtual mixer) special configurations
| [ Stereo [v] ] |--> appear at the top. These include sampling rate
| / and mixer priority. They are provided by OSS.
| __codec1______________________________________________________
| | _jack_______________________________________________________ \
| | | _int-speaker____________________ __green_________________ |
| | | | | | |
| | | | _mode______ | | | | _mode______ | | | 这儿是你的声卡的配置。
| | | | [ mix [v] ] o o [x] [ ]mute | | [ mix [v] ] o o [x] |--> 这儿显示的控制器都是根据你的声卡配置的。
| | | | | | | | | | |
| | | |________________________________| |_______________________ |
| | |____________________________________________________________ |
| |______________________________________________________________ /
|
| ___vmix0_______________________________________________________ \
| | __mocp___ O O _firefox_ O O __pcm7___ O O | Here are the vmix mixer controls. These are
| | | | O O | | x x | | O O | virtual mixer controls provided by OSS. Each
| | | | | | x O | | | | x x | | | | O O | slider is the volume control of a different
| | | o o [x] | x x | o o [x] | x x | o o [x] | O O |--> application. When one application uses the
| | | | | | x x | | | | x x | | | | O O | sound card, its name is shown in the place of
| | |_________| x x |_________| x x |_________| O O | the 'pcm#' labels. There are also sound level
| |______________________________________________________________ | meter levels for each application.
|________________________________________________________________ /
如果你希望手动保存混音器设置,运行savemixer。这样做你需要文件/usr/lib/oss/etc/save.mixer的写权限或者使 用-f选择另外一个文件。使用savemixer -L重置混音器的设置。初始脚本通过在关闭前和启动后运行下列命令来在不同的会话间保存混音器的设置:
savemixer
如果可能,把所有依赖alsa-lib的软件全部重新编译一次去掉ALSA支持是使用OSS驱动最完美的方案。查询什么软件依赖alsa-lib:
$ pacman -Qi alsa-lib
然后到AUR上搜索-oss结尾的软件包,下载然后运行makepkg,替代系统里面现有的包就可以了。如果AUR里面没有的,就自己下载相关PKGBUILD,去掉alsa-lib,然后makepkg并且安装,别忘记把成功的包上传到AUR上去哦
安装libflashsupport-oss,前提是你的系统是Arch i686.
pacman -S libflashsupport-oss
如果是Arch x86_64,你就需要从AUR安装。
有一个特殊版本的Skype 1.4 for OSS(QT静态编译),你可以从这里获得. 一个2进制程序包可以从 skype's 下载页获取.
原始的 Qt Phonon应该默认就可以在OSS驱动下正常工作。
但是,如果你用KDE并且使用Xine后台作为声音输出,你就可能会遇到问题。你可以用过修改默认Phonon后台来解决这个问题,如使用gstreamer
编辑 ~/.kde4/share/config/servicetype_profilerc:
[PhononBackend]
Entry0_Preference=2
Entry0_Service=phononbackends/gstreamer.desktop
Entry1_Preference=1
Entry1_Service=phononbackends/xine.desktop
NumberOfEntries=2
winecfg
如果你不能让其他程序发出声音,试试看这里
如果你有一个HDAudio声音设备,有可能你必须调整一些设置你的声卡才能正常工作。
HDAudio devices are very powerful in the sense that they can contain a lot of small circuits (called widgets) that can be adjusted by software at any time.(参考翻译:任何时间软件都可以调整强大的HDAudio上包含的很多小器件)。这些控制对混音器是外露的,例如,可以被用来把耳机声音输出功能改到声音输入功能。
但是,这可能导致问题,主要因为HDAudio标准比理想中应该有的标准来说太灵活了,也因为计算机开发商经常支持关注怎么让官方驱动正常工作。
所以你才会在使用HDAudio设备的时候,发现控制是混乱的,必须自己尝试手动调整每一个控制条直到可以工作,因为默认根本不会正常工作。你需要在前台调整ossxmix混音器设定的时候,后台有个程序录制/播放声音(比如 ossrecord - | ossplay - 来录制或者 osstest -lV来播放)。
打开ossxmix,尝试改变每个控制条到中间位置,这包含在声卡特殊设定,就如上面""说到的一样。
请注意,你不必调整顶部区域和底部区域的有关虚拟vmix混音器控制的部分控制条。
If your multimedia keys don't work by default, read the page.
你可以让alsa-lib使用OSS作为它的声音输出系统,这对很多ALSA虚拟机有效。
注意:这个方法可能在你声音输出的时候造成额外的延迟,而且虚拟机也不完善,无法保证能让所有程序发声。例如如果软件通过ALSA选择设备,这个软件就不能正常工作。如last.fm
以后,更完善的方法将出现用来虚拟ALSA,如libsalsa以及cuckoo.
OSS为ALSA提供了2个兼容层(layers):内核和ALSA lib。内核模块("cuckoo")是100%兼容所有程序,但是不能和最新的OSS版本;oss里面的alsa虚拟库已经过时,我也不知道到哪里去获得最新版本。
pacman -S alsa-plugins
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
}
NOTES: This requires the use of the old softoss module (the predecessor of vmix) which may not be as good as vmix, wine and gstreamer do not play nice with softoss, and the module will not work with sample rates higher than 48khz.
We must do a few things to gain access to these effects.
/etc/rc.d/oss-linux-free stop
vmix
softoss
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
case "$1" in
start)
stat_busy "Starting OSS/Open source driver"
# start
/usr/sbin/soundon
if [ $? -gt 0 ]; then
stat_fail
else
grep '^softoss' /proc/modules >/dev/null 2>/dev/null
# if [ $? -eq 0 ]; then
# stat_busy "Replacing old \"softoss\" module with \"vmix\""
# rmmod softoss
# modprobe vmix
# sed -i 's/^softoss.*$/vmix/' /usr/lib/oss/etc/installed_drivers
# fi
add_daemon oss4
stat_done
fi
;;
stop)
stat_busy "Saving OSS mixer"
/usr/sbin/savemixer
if [ $? -gt 0 ]; then
stat_fail
else
stat_done
fi
grep '^"cuckoo"' /proc/modules >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
stat_busy "Removing \"cuckoo\" module"
rmmod \"cuckoo\"
fi
stat_busy "Stopping OSS/Open source driver"
/usr/sbin/soundoff
if [ $? -gt 0 ]; then
stat_fail
else
rm_daemon oss4
stat_done
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
This keeps the oss-linux-free daemon from replacing softoss with vmix. (Very useful if you wish to switch between softoss and vmix.)
/etc/rc.d/oss-linux-free start
ossmix -d1
or
ossxmix
ossmix -d1 effects.eq.bypass OFF
or just uncheck bypass in ossxmix