2011年2月23日星期三

linux下第二声卡的启用

    贝壳用的是debian testing,xfce。最近买了一个usb耳机,在windows下一切正常,但是linux下只有mplayer能工作。因为mplayer可以指定输出声卡,其他程序都是使用默认声卡的。而由于debian移除了alsaconf,因此连调整一下都不知道该怎么做。也许修改/etc/modprobe.d/alsa*可以解决问题,问题是,谁知道哪些资料是神马时候的呢?我最早甚至找到过01年的资料...
    后来,在zigo的建议下,我改用了pulse。zigo在linux下玩音频的,又是DD,怎么也算职业人士,推荐果然很给力。当晚我拿着usb耳机,很顺利的听到了youku视频。那一刻我热泪盈眶,感谢国家,感谢ccav,感谢zigo...
    做法如下:
# aptitude install pulseaudio pavucontrol
$ pavucontrol
    在输出设备页面,选择你想要的设备为默认。
    如果有部分程序还是不认,建立~/.asoundrc或者/etc/asoundrc.conf,内容如下:
pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}
    完了。

    补充一下,pulse的具体资料就不说了。大致上,pulse是一个linux的混音器。用于将多个音源发出的音频流混合成一个音频流播放。严格来说,音频设备属于独占设备,当一个软件发音的时候,其他软件应当不能发音的。这个有点类似于fifo,当两个进程同时打开fifo写数据的时候,目标只能得到碎片。
    pulse的作用,是产生一个可以被多次使用的音频设备,类似于unix socket。每一个进程的数据被单独的输入,然后混音,再输出到真实的物理设备上去。由此,多个音源同时发音就变成了可能。
    有人也许说,alsa原生也是支持多音源的阿。那是因为alsa内部带了一个很简单的混音器,叫做dmix。当然,pulse比dmix更加专业。

没有评论: