博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解和使用Alsa的配置文件
阅读量:2444 次
发布时间:2019-05-10

本文共 2695 字,大约阅读时间需要 8 分钟。

 
理解和使用
Alsa
的配置文件
作者:刘旭晖 Raymond转载请注明出处
Email:
BLOG:
主页:http://rgbbones.googlepages.com/
 
最近在做音频相关的驱动,使用到了Alsa。过程中涉及到一些硬件的设置和测试,需要了解Alsa的配置文件的写法,稍微学习了一下,这里把自己的一些简单理解记录如下。
 
1         相关说明
1.1        网站资源
Alsa项目的官方网址:
Alsa LIB API Reference:
配置文件的语法:
Asoundrc的官方说明文档:
 
实际上,如果你仔细看了上述文档,大概也就没必要往下看我的文章了 8 )
 
另:关于Alsa-Lib的API,网上的是每天自动生成的最新版本的API,如果你不能确认你使用的版本是否和最新版本完全兼容,可以看Alsa-lib包里自带的那一份文档。可以在src包里执行make doc 自己build出来。
1.2        工作环境
我测试的软件版本是基于Alsa 1.0.14的版本,当前最新的版本是1.0.16 (2008-7),不过配置文件这一部分应该是差不多的,至少从文档上来看是这样。
 
2         理解配置文件
2.1        配置文件的位置
配置文件的位置是由Configure阶段的选项来决定的,不过多数时候,Alsa的配置文件位于:/usr/share/alsa目录下,主要配置文件为/usr/share/alsa/alsa.conf 其它文件是否需要,位置在哪,都是由alsa.conf来决定的。
通常会有/usr/share/alsa/card 和/usr/share/alsa/pcm两个子目录,用于设置Card相关的参数,别名以及一些PCM默认设置。
此外,在alsa.conf中,通常还会引用 /etc/asound.conf 和 ~/.asoundrc这两个配置文件,这两个文件通常是放置你个人需要特殊设置的相关参数。按照Alsa官方文档的说法,1.0.9版本以后,这两个文件就不再是必要的,甚至是不应该需要的。至少是不推荐使用吧。不过,对于我来说,在嵌入式系统中使用,为了简单和方便测试,恰恰是需要修改这两个文件 8 )
2.2        Alsa.conf
Alsa.conf中主要的一些内容包括:用hook读取了/etc/asound.conf 和 ~/.asoundrc这两个配置文件:
@hooks [                                           
        {                                               
                func load                           
                files [                                        
                        "/etc/asound.conf"    
                        "~/.asoundrc"       
                ]                       
                errors false                      
        }                                            
]
 
设置了default pcm的一些默认参数,如,默认使用Card 0 ,Device 0作为音频设备等等。
 
defaults.ctl.card 0      
defaults.pcm.card 0      
defaults.pcm.device 0 
defaults.pcm.subdevice -1                 
defaults.pcm.nonblock 1                
defaults.pcm.ipc_key 5678293
。。。
 
 
设置了Alsa 内置的一些plugin的接口参数,例如file:
pcm.file {
        @args [ FILE FORMAT ]
        @args.FILE {
                type string
        }
        @args.FORMAT {
                type string
                default raw
        }
        type file
        slave.pcm null
        file $FILE
        format $FORMAT
}
 
File plugin的作用是将PCM数据流存储到文件中。
 
此外,通常alsa.conf还会载入cards/aliases.conf ,设置一些声卡的别名等,这个我是不需要了。
在aliases.conf 的结尾还有以下一段:
 
<confdir:pcm/default.conf>
<confdir:pcm/dmix.conf>
<confdir:pcm/dsnoop.conf>
 
用来读入/usr/share/alsa/pcm目录下所列的那3个文件
分别设置 默认PCM设备的相关参数,dmix是用来实现播放时软件混音的内建plugin,dsnoop则是用来实现录音时多路分发的内建plugin。
 
3         一些配置和使用实例
 
3.1        使用蓝牙设备
在/etc/asound.conf中添加下列一项用来使用蓝牙的A2DP设备
 
# device for bluetooth
pcm.bluetooth{
        type bluetooth
        device 00:02:5B:00:C1:A0
}
 
然后调用 aplay –D bluetooth sample.wav 播放。
 
需要注意,为了使用该设备,你需要 /usr/lib/alsa-lib/libasound_module_pcm_bluetooth.so 这一个蓝牙plugin的库文件。这是在Bluez相关的包里,和Alsa本身没有关系。从这里,我们也可以看出alsa的外部plugin和配置文件之间的名字关系规则: libasound_module_pcm_####.so 这里的#### 就是你再conf文件中pcm.xxxx 里所写的名字。
 
3.2        使用非默认的声卡设备通道
在我的板子上,Buildin的Audio硬件在Alsa子系统中实现了两个硬件通道,一个是HIFI通道,另一个是语音通道,所以我添加了如下配置:
 
#device for voice channel
pcm.voice{
        type plug
        slave{
                pcm "hw:0,1"
        }
}
 
通过语音通道播放声音的调用的方式: aplay –D voice sample.wav
 
这样的写法说明我通过plug这plugin对音频数据进行自动的采样率,通道等调整后,将数据送到我的第0个card的序号为1的device上。
实际上,如果不写上述配置文件,用 aplay -D "plug:SLAVE='hw:0,1'" sample.wav 也可以得到同样的结果。
 
Hifi通道播放声音直接使用 Aplay sample.wav即可 也就是Aplay –D default sample.wav
 
3.3        其它
混音:
aplay -D plug:dmix sample.wav &
你可以通过多次调用上述命令来测试多个音频数据的混音。
 
Dump音频数据:
aplay -D "plug:'file:FILE=/tmp/dump.bin'" sample.wav
 
你可能感兴趣的文章
steam无法显示成人内容_如何在Steam上查看仅限成人游戏
查看>>
轻松将图像上传到Photobucket
查看>>
如何在Excel 2007中创建数据透视表
查看>>
如何在iPhone或iPad上启用USB受限模式(适用于iOS 11.4.1)
查看>>
注意:浏览器崩溃的技术支持弹出窗口又回来了
查看>>
如何在Ubuntu 11.10中安装Classic Gnome桌面
查看>>
亚马逊echo中国使用_如何阻止您的Amazon Echo收听
查看>>
linkedin 分享_如何永远阻止LinkedIn的烦人电子邮件
查看>>
ipad和iphone适配_如何在iPhone和iPad上将链接,照片和媒体快速添加到Apple Notes
查看>>
vlc 禁用字幕_如何在VLC中完全禁用字幕
查看>>
开源星空照片_如何拍摄星空的好照片
查看>>
usb延长线线序_我应该使用哪种延长线?
查看>>
亚马逊fire充不上电_因此,您只是拥有了Amazon Fire Tablet。 怎么办?
查看>>
iphone 文件夹路径_如何在iPhone的基座上放置文件夹
查看>>
三星Galaxy S8 vs Galaxy S9:值得升级吗?
查看>>
使用dropbox定时同步_如何仅将特定文件夹与Dropbox同步
查看>>
uwp windows_如何在Windows 10的UWP游戏中监视FPS
查看>>
chromebook刷机_如何使用PIN码解锁Chromebook
查看>>
如何安装和设置Kuna家用安全摄像机
查看>>
加密机是如何工作的_什么是加密,它如何工作?
查看>>