alsa配置

alsa配置 (by hanlray(at)hotmail.com)

alsa

alsa的配置文件是alsa.conf,一般在/usr/share/alsa目录下,通常包括在alsa library包中。不应该用alsa.conf来进行配置,因为该文件会随着package版本的变化而更新,而应该使用/etc/asound和~/.asoundrc,因为alsa.conf引入了这两个文件。合乎linux系统的一般原则,/etc/asound做系统范围的配置,~/.asoundrc做用户特定配置。

通常板载声卡都是不支持硬件混音的,因此多个应用是无法同时输出声音的,alsa library提供了一个叫做dmix的plugin实现了软件混音。alsa 1.09rc2及其以上版本的默认配置在声卡不支持硬件混音的情况下会用dmix来实现软件混音,因此可能是不需要做混音配置的。如果混音不工作,可以试试以下配置:

pcm.!default {     type plug     slave.pcm "dmix" } 
default是缺省的输出设备名,使用alsa的应用程序通常使用该设备放音,default缺省指向hw:0,0,即第一个声卡的第一个设备,这里通过!号重新定义使之指向dmix,因此所有使用default的应用程序都会输出声音到dmix,从而实现混音。

 

dmix本身只支持一个配置,配置项包括rate(缺省值48000)、format(S16)、channels(2)、period_time(125000),但是可以创建多个dmix定义。一个dmix定义的例子:

pcm.dmixer {     type dmix     ipc_key 1024     ipc_key_add_uid true     slave {         pcm "hw:0,0"         period_size 1024         buffer_size 8192         rate 48000     }     bindings {         0 0         1 1     } } 
ipc_key指定唯一的IPC key,对每个不同的dmix定义该值必须唯一,因为定义的dmix设备将使用该key来创建shared memory.

 

ipc_key_add_uid设置为true会把该值加入一个集合,用来防止ipc_key冲突

怎么知道定义的设备是否有效呢?aslaplayer是个好工具,如:

alsaplayer -o alsa -d dmixer music.mp3

可以测试上面定义的dmixer是否工作

只有多个放音的程序使用同一个混音设备时,混音才会有效,因此以下命令会失败:

alsaplayer -o alsa -d dmixer music.mp3 & alsaplayer -o alsa -d dmix music1.mp3

esd

esd是一个软件混音程序,主要包括两部分:
  • 一个名为esd的daemon程序
  • 使用esd library的各个esd应用

esd应用通过esd library把自己的音频流发送至esd daemon,esd daemon接受各个esd应用的音频流进行混音,使用声卡设备放音。

显然dmix是更好的解决方案,不过当前有些程序还是使用esd的,比如gnome,在使用dmix作为混音器的情况下,如何使这些程序也能够正常输出呢?只要使esd daemon使用dmix设备输出即可:

  • 首先确认使用的是alsa的esd library(debian的package为libesd-alsa0),而不是oss的esd library
  • 启动esd daemon的时候指定使用alsa dmix设备。修改/etc/esound/esd.conf为:
    [esd] auto_spawn=1 spawn_options=-terminate -nobeeps -as 2 -d default spawn_wait_ms=100 
    auto_spawn必须设为1,表示当esd应用放音的时候如果esd daemon没有运行则自动启动它,只有auto spawn的esd daemon才会使用spawn_options来作为启动参数,spawn_options中用-d指定default作为设备名,default应该是被重定义过一个dmix设备。

     

评论 1 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

hansoft

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值