对于拥有无法支持多音频流声卡的用户来说,只能在同一时间内使一种程序发出声音。如果要支持多个音频流的输入,可以有几种方案。
1.esd解决方案。虽然可以解决大部分程序多音频输入问题,但是需要程序的支持,如realplay就不支持esd。许多kde下面的程序使用arts音频服务,不能于esd同时使用。因此这个方案不是很完全。另外使用esd后,其音质明显有下降。
2.alsa内置dmix功能解决方案。此方案只要程序支持alsa或oss即可支持多音频流输入。alsa的音质就不用多说了,很不错。这也就是我需要在此向大家推荐使用的方案。
下面就说说如何设置系统(针对gentoo Linux):
1.系统内核:[B]建议使用2.6内核[/B]。内置alsa声卡驱动。不需要安装alsa-driver了。不过如果非要用2.4内核的话,emerge sync后安装最新的alsa驱动也是一样。注意:/usr/src/linux应该链接到目前使用的内核。
2.安装alsa驱动,如果是2.6内核就把它编译进内核里面就好。否则就安装alsa-driver。很简单emerge alsa-driver就好了。
3.安装相应的软件:emerge -D alsa-oss alsa-lib alsa-utils alsa-xmms
4.配置alsa驱动:
# etc-update
然后修改/etc/modules.d/alsa文件:
# vi /etc/modules.d/alsa
我的文件是这样的:
[QUOTE]# OSS/Free portion
alias char-major-14 soundcore
##
## IMPORTANT:
## You need to customise this section for your specific sound card(s)
## and then run `update-modules' command.
## Read alsa-driver's INSTALL file in /usr/share/doc for more info.
##
## ALSA portion
## alias snd-card-0 snd-interwave
## alias snd-card-1 snd-ens1371
alias snd-card-0 snd-ens1371
## OSS/Free portion
alias sound-slot-0 snd-card-0
## alias sound-slot-1 snd-card-1
##
# OSS/Free portion - card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
## OSS/Free portion - card #2
## alias sound-service-1-0 snd-mixer-oss
## alias sound-service-1-3 snd-pcm-oss
## alias sound-service-1-12 snd-pcm-oss
alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss
# Set this to the correct number of cards.
options snd cards_limit=1[/QUOTE]
这个里面主要是要根据自己的声卡类型使用不同的驱动,关键在于:
[QUOTE]alias snd-card-0 snd-ens1371[/QUOTE]
这一句,需要自行修改。
然后:
# update-modules
# rc-update add alsasound default
这样在重启之后,alsa声卡驱动就可以使用了。不过在使用之前应该用alsamixer来配置音量,不然会听不到声音,而误以为声卡没有安装成功。
5.配置dmix
$ vi ~/.asoundrc
内容如下:
[QUOTE]pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 8192
rate 44100
}
bindings {
0 0
1 1
}
}
pcm.dsp0 {
type plug
slave.pcm "dmixer"
}
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.default {
type plug
slave.pcm "dmixer"
}
ctl.mixer0 {
type hw
card 0[/QUOTE]
6.测试:
$ alsaplayer -o alsa -d plug:dmixer some.mp3 &
$ aplay -D plug:dmixer some.wav &
$ alsaplayer -o alsa -d plug:dmixer some.mp3 &
看看是不是真的支持多音频流了!
7.配置gnome内音频程序:
$ gstreamer-properties
里面Default Sink修改为
Output:Custom
Pipeline:alsasink device=dmixer
顺便测试一下,点击那个test按钮看看有没有声音。
8.gaim声音配置:
Tools->

reference->Sounds->Sound Method
Method: Command
Sound Command: aplay -D plug:dmixer %s
就可以了,顺便也测试一下声音。 :p
9.有关kde程序的声音问题
测试:
$ aoss mpg123 some.mp3
看看能不能正确发声。如果可以的话就说明配置正确,否则需要重新配置或安装软件了。
然后:
# mv /usr/kde/3.x/bin/artsd /usr/kde/3.x/bin/artsd.orig
(根据kde版本有不同的目录)
# vi /usr/kde/3.x/bin/artsd
[QUOTE]#!/bin/sh
aoss artsd.orig $*[/QUOTE]
# chmod 755 /usr/kde/3.x/bin/artsd
10.mplayer配置,使用alsa驱动就可以了。如果不行,就在/etc/mplayer.conf文件里面加上
[QUOTE]ao=alsa9:default[/QUOTE]
11.其它程序能够使用alsa的都可以支持多音频流了。如果实在不行,可以借鉴arts的解决方法,用aoss来做,一定可以的。
12.本文参考文章
[URL]http://gentoo-wiki.com/HOWTO_ALSA_sound_mixer_aka_dmix[/URL]
大家可以在这个上面仔细看看,有更多的东西可以学习。