2005.04.23
skype我不再用静态编译的了,因为中文字体很难看,而且不能改变。之前segfault可能跟我的输入法scim有关,现在其实仍然和scim- qtimm有点冲突,不过在启动脚本里加一句 export QT_IM_MODULE=xim就没事了。顺便说一下,scim其实是不错的输入法,冲突是因为之前的gcc编译器编译出来的c++程序的ABI不统一(苏大来看看这样说对么),现在4.0出来不知道会不会有改观。
2005.03.27
stardict部分作了点改动,不需要将esound加入default运行级别
2005.03.25
原文发表于www.linuxsir.org gentoo版
正文
本文试阐述在alsa环境下多个进程共享声卡的问题以及具体如何通过alsa让skype和其他程序同时使用声卡。本文可以看作是笔者的个人经验介绍。同时有些信息翻译自一些英文资料。笔者的声卡是AC'97(intel8x0),系统是gentoo,
内核2.6.11-nitro0, KDE3.4(split ebuild,arts-3.4.0),alsa-driver, alsa-utils, alsa-oss均为1.0.8,skype是1.0.0.20,mplayer是1.0pre6-3.4.3-20050110,gaim是 1.2.0, realplayer是10.0.2.608(Gold),xmms是1.2.10,stardict 2.4.4(安装了WyabdcRealPeopleTTS),flash plugin 版本7.0.25.0。注意本文不涉及如何安装alsa驱动的问题,请参阅其他资料。实现多音频还可以使用http://www.opensound.com的商业驱动。不过是close-sourced,以前还是要收钱的。现在虽然个人使用已经免费(free)了,但总归是不自由(free)的。好了,闲话少叙,我们来切入正题。
先来看一看一些背景知识
首先要了解Linux有两种不同的声音系统
OSS (Open Sound System) 旧的.对于44100 Hz, 立体声(stereo), 16-bit 音频与一般的声卡及要求它可以工作的很好. 但不足以胜任专业级的音频处理工作。 很多旧的软件都只能使用OSS。 OSS系统中通常有下列设备文件/dev/audio /dev/dsp /dev/midi /dev/mixer /dev/music /dev/sequencer等等
ALSA (Advanced Linux Sound Architecture)新的。对于很多旧的声卡支持的不是很好,但是支持很多新的声卡以及很多高级的专业的功能,而且具备很强扩展性。可参见http://www.alsa-project.org/alsa-do...cm_plugins.html。现在已经是2.6内核的一部分。ALSA音频系统的设备文件在/dev/snd下。如果装了ALSA oss模拟层,也会有/dev/dsp等文件。
人们往往希望多个进程能同时使用声卡。这就需要将多个进程的声音输入混入一个音频流的能力,即multiplexing。如果希望使用alsa来达到这个要求,针对几种不同情况需要使用不同的技巧。区分的标准主要在于声卡/芯片是否支持硬件混音,程序通过alsa库直接访问声卡,还是通过声音服务器(即 artsd之类), 还是通过OSS模拟。
如果硬件支持,alsa驱动支持共享声卡。在硬件不支持的情况下,alsa库也支持共享,只不过需要一些配置。对于使用OSS的程序,aoss能够让它们使用alsa。最后使用声音服务器(arts, esound)的程序,大多数声音服务器能作软件混音并支持alsa输出。所有的情况总结如下:
* 声卡支持硬件混音
* 声卡不支持硬件(分三种情况区别对待)
* 程序使用alsa库来访问声卡
* 程序使用声音服务器访问声卡
* 程序使用OSS API访问声卡
如果声卡支持硬件混音,那么声卡的共享应该不是个问题。
如果声卡不支持硬件混音但程序使用alsa库来访问声卡,那么可以创建一个允许软件混音的.asoundrc,放在用户的宿主目录下。通过使用dmix (允许多个进程使用一个声卡输出),dsnoop(允许多个进程从一个设备录音),asym(将前两者合并成)来实现。这三者都是alsa的插件。下面有具体的例子。这样的程序有aplay, arecord,alsaplayer。很多程序通过配置都可以直接使用alsa库来访问声卡,比如mplayer, xmms。这是最理想的情况。开发比较活跃的自由软件往往都可以做到。
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 解决方案 完整 音频 使用 声卡 alsa 程序 可以 支持 dmix |
注册
个人空间
