ALSA 配置文件简介

本文介绍了ALSA的配置文件asoundrc(包括.asoundrc和asound.conf)的作用,详细讲解了插件如hw、Rate、Route & Volume、dmix和dsnoop的使用,以及如何通过配置实现音频设备的高级控制和虚拟多通道设备的创建。
摘要由CSDN通过智能技术生成

参考自:asoundrc文件
     asoundrc配置文件简单介绍
     asound.conf 插件讲解

文章目录

  • 1、Asoundrc
    • 1.1、什么是asoundrc文件?
    • 1.2、为什么需要asoundrc文件?
    • 1.3、asoundrc文件什么时候被加载的?
  • 2、Plugin(插件)
    • 2.1、Plugin: hw
    • 2.2、Slave 定义
    • 2.3、Plugin: Rate
    • 2.4、Plugin: Route & Volume
    • 2.5、Automatic conversion plugin
    • 2.6、Plugin: dmix
    • 2.7、Plugin: dsnoop
    • 2.8、实现虚拟多通道设备
  • 3、附录

做alsa的基本都能体会到alsa-lib的复杂与强大,而alsa-lib的强大正是从asound.conf与.asoundrc等配置文件体现出来的。alsa驱动开发只是一个方面,而真正想随心所欲的配置音频设备,asound.conf与.asoundrc的掌握是必不可少的。所幸,这方面的资料还是比较丰富,所需了解的知识点基本都能从官网上找到文档甚至example。

Alsa-lib层,为不同的驱动提供统一的接口alsa API,简化了开发人员对于驱动层的调用开发。接口定义地址:

https://www.alsa-project.org/alsa-doc/alsa-lib/

关于asound.conf的配置,可以参考官网解释:

https://www.alsa-project.org/main/index.php/Asoundrc

详细的插件讲解,官网网址:

https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html

1、Asoundrc


1.1、什么是asoundrc文件?

这里asoundrc文件实际上包含两个文件: “.asoundrc”“asound.conf”

.asoundrc 是一个隐藏文件,是针对个人用户的配置文件,存在于用户主目录下。asound.conf 则是全局的配置文件。

1.2、为什么需要asoundrc文件?

事实上,asoundrc(.asoundrcasound.conf)文件对ALSA来说,不是必须的配置文件,也就是说,无论它存不存在,都不影响ALSA的正常工作。那么既然这样,它存在的意义是什么呢?使用asoundrc文件可以实现更多对card/device的高级控制。例如在alsa-lib层进行通道路由和采样率转换,把多块声卡合为一块或者访问多通道卡的多个I/O。然而通过ALSA-lib库这两个文件能够为应用程序提供额外的功能,如通道路由,样本rate转换。

1.3、asoundrc文件什么时候被加载的?

alsa-lib 库将 /usr/share/alsa/alsa.conf 配置文件作为主要的入口点。其他文件在哪是否需要都由这个文件决定。 alsa.conf中自动加载系统全局自定义设置文件 /etc/asound.conf 和用户自定义配置文件 ~/.asoundrc

在这里插入图片描述
这个文件在调用 snd_pcm_open 这个api函数时,会被加载同时解析。

2、Plugin(插件)


在ALSA中,PCM插件扩展了PCM设备的功能和特性。插件可以自动处理诸如:命名设备、采样率转换、通道间的采样复制、写入文件、为多个输入/输出连接声卡/设备(不同步采样)、使用多通道声卡/设备以及其他可能留给你的开发任务。

2.1、Plugin: hw

此插件直接与ALSA内核驱动程序通信,它是一种没有任何转换的原始通信。

pcm.name {
   
    type hw         # Kernel PCM
    card INT/STR        # Card name (string) or number (integer)
    [device INT]        # Device number (default 0)
    [subdevice INT]     # Subdevice number (default -1: first available)
    [sync_ptr_ioctl BOOL]   # Use SYNC_PTR ioctl rather than the direct mmap access for control structures
    [nonblock BOOL]     # Force non-blocking open mode
    [format STR]        # Restrict only to the given format
    [channels INT]      # Restrict only to the given channels
    [rate INT]      # Restrict only to the given rate
    [chmap MAP]     # Override channel maps; MAP is a string array
}

nonblock选项指定设备是否以非阻塞方式打开。注意此选项并不会更改读/写访问的阻塞行为。只影响打开设备时的阻塞行为。如果想保持与旧ALSA版本的兼容性,请关闭此选项。

下面是一个例子:

用vi命令在你的home目录或root目录下创建一个asoundrc配置文件:vi /home/xxx/.asoundrc (或者在打开 /etc/asound.conf 文件)

将下面的代码拷贝到该文件中并保存:

pcm.!default {
   
        type hw
        card 0
}
 
ctl.!default {
   
        type hw           
        card 0
}

名字为default的声卡,指向card0,也就是hw:0,0,测试命令:aplay -D default test.wav

注意:ALSA库定义的default 设备是 hw:0,0。 由 !default 指定的内容将替换ALSA lib API定义的。

hw后面跟的数字是声卡号和设备号,可以用如下命令查看硬件支持声卡数:

cat /proc/asound/cards 或者 ls /dev/snd (注:pcm0c (capture), pcm0p (playback))
在这里插入图片描述

2.2、Slave 定义

在ALSA中,PCM插件扩展了PCM设备的功能和特性。插件可以自动处理诸如:命名设备、采样率转换、通道间的采样复制、写入文件、为多个输入/输出连接声卡/设备(不同步采样)、使用多通道声卡/设备等工作。要使用它们,开发者需要创建一个虚拟从属设备(slave device)。

pcm_slave.NAME {
   
    pcm STR     # PCM name
    # or
    pcm {
    }     # PCM definition
    format STR  # Format or "unchanged"
    channels INT    # Count of channels or "unchanged" string
    rate INT    # Rate in Hz or "unchanged" string
    period_time INT # Period time in us or "unchanged" string
    buffer_time INT # Buffer time in us or "unchanged" string
}

一个最简单的slave用例:

pcm_slave.sltest {
   
	pcm "hw:1,0"
}

上面的实例定义了一个没有任何参数的slave,实际上也就仅仅是给声卡设备定义了一别名而已。对于需要参数的情况,需要注意一点 “PCM types”的参数必须定义在 slave-definition-block ,例如下面这两种方式定义是一致的:

pcm_slave.sl2 {
   
	pcm "hw:1,0"
	rate 48000
}

pcm.rate_convert {
   
	type rate
	slave sl2
}

或者

pcm.rate_convert {
   
	type rate
	slave {
   
		pcm "hw:1,0"
		rate 48000
	}
}

在slave设备配置中加入采样率转换。注意,这两种方式中参数定义的位置。

调用这个设备播放音频的例子: aplay -D rate_convert test.wav ,此时是以48kHz的采样率对test.wav进行播放。

上面的用例用到了 Plugin: Rate

2.3、Plugin: Rate

这个插件可以转换采样率,但是输入输出格式必须为线型。

pcm.name {
   
    type rate               # Rate PCM
    slave STR               # Slave name
    # or
    slave {
                    # Slave definition
            pcm STR         # Slave PCM name
            # or
            pcm {
    }         # Slave PCM definition
            rate INT        # Slave rate
            [format STR]    # Slave format
    }
    converter STR           # optional
    # or
    converter [ STR1 STR2 ... 
最低0.47元/天 解锁文章
ALSA 配置
Leo_ZN_0的博客
01-11 787
环境变量: ALSA_CONFIG_PATH_VAR 全局的配置文件路径 ALSA_CONFIG_DIR 配置文件所在目录,默认值:/usr/share/alsa 配置文件名:alsa.conf 默认的配置文件:/usr/share/alsa/alsa.conf 预加载的配置文件列表: /usr/etc/alsa/conf.d /etc/alsa/conf.d /etc/asound.conf
理解和使用Alsa配置文件
05-14
理解和使用Alsa配置文件 理解和使用Alsa配置文件
asoundrc配置文件简单介绍
热门推荐
fanchenxinok的专栏
08-22 1万+
Asoundrc 为什么关注asoundrc配置文件? 它有什么作用,为什么需要这个文件呢? .asoundrc文件和asound.conf两个配置文件并不是ALSA正常工作所必须的。大多少的应用程序没有配置他们也能正常工作。 然而通过ALSA-lib库这两个文件能够为应用程序提供而外的功能,如通道路由,样本rate转换。  ALSA配置文件框架概况 alsa-lib
Linux Audio Alsa (2) alsa.conf
dongkun152的专栏
10-13 2816
alsa.conf
linux双声卡 Alsa asound.conf配置:喇叭 和 HDMI不同声卡输出声音切换,软件混音
最新发布
qq_39442954的博客
07-18 402
alsa.conf asound.conf文件配置 dmix实现软件混音
alsa分析:alsa的那些配置文件 ( 1 )
colorado
06-28 7849
  在根文件系统下,alsa相关的配置文件有:在/system/usr/share/alsa目录下:├── alsa.conf├── cards│ └── aliases.conf└── pcm ├── center_lfe.conf ├── default.conf ├── dmix.conf ├── dpl.conf
ALSA配置文件
wslong的专栏
08-15 2247
ALSA配置文件对于ALSA非常重要。常见的有三个:alsa.conf, asoundrc, asound.conf。 1. 核心配置文件ALSA核心配置文件位于/usr/share/alsa/目录下,主要配置文件为/usr/share/alsa/alsa.conf 。其它文件是否需要,位置在哪,都是由alsa.conf来决定的。通常会有/usr/share/alsa/card 和/us
ALSA配置文件
yaningli的博客
04-10 1024
ALSA核心配置文件位于/usr/share/alsa/目录下,主要配置文件为/usr/share/alsa/alsa.conf。通常会有/usr/share/alsa/card 和/usr/share/alsa/pcm两个子目录,用于设置Card相关的参数,别名以及一些PCM默认设置。#. aplay -D hw:1,7 /usr/share/sounds/alsa/test.wav "hw后的1代表声卡号,7代表设备号,需要根据aplay -l的输出来确定这两个数字"找到对应的hdmi输出口。
alsa配置
hansoft's blog
01-05 9185
alsa配置 (by hanlray(at)hotmail.com)alsaalsa配置文件alsa.conf,一般在/usr/share/alsa目录下,通常包括在alsa library包中。不应该用alsa.conf来进行配置,因为该文件会随着package版本的变化而更新,而应该使用/etc/asound和~/.asoundrc,因为alsa.conf引入了这两个文件。合乎
打开系统的 ALSA 配置文件 /etc/asound.conf
06-07
如果你想打开系统的 ALSA 配置文件 /etc/asound.conf,你可以通过终端命令来进行操作。你可以按下 Ctrl + Alt + T 组合键打开终端,然后输入以下命令并按下回车键: ``` sudo nano /etc/asound.conf ``` 这将使用...
alsa库的配置
08-06
2. **配置alsa.conf**:alsa的主要配置文件是`/etc/asound.conf`,这里可以定义默认的音频设备、音量控制策略以及其他高级设置。如果需要自定义设备行为,可以在该文件中进行修改。 3. **设备识别**:alsa通过`/...
alsa库的配置.rar
05-13
以下是一些常见的alsa配置指令和它们的作用: 1. `pcm.`:定义一个PCM设备,如`pcm.!default`表示默认的pcm设备。 2. `ctl.`:定义混音器控制,如`ctl.hw`代表直接与硬件交互的混音器。 3. `pcm.!default { type hw...
alsa命令和配置
时光总不留人,难得过去幸运
02-07 1362
alsa命令和配置
alsa 音频配置 7 16
lsn946803746的专栏
07-17 1261
在sound/soc/codecs目录中有很多音频codec的codec驱动;这里个驱动文件中定义了很多widget和control,alsa在playback或record的时候,sound/soc/soc-dapm.c中的dapm_power_widgets函数会根据“配置情况”打开相应的widget,搭建一个完整的音频路径,只要该路径搭建成功,就可以正常工作; sound/soc/codec
理解和使用ALSA配置文件
webhack的专栏
12-08 1710
最近在做音频相关的驱动,使用到了Alsa。过程中涉及到一些硬件的设置和测试,需要了解Alsa配置文件的写法,稍微学习了一下,这里把自己的一些简单理解记录如下。   1 相关说明   1.1 网站资源   Alsa项目的官方网址:http://www.alsa-project.org/   Alsa LIB API Reference:http://www.alsa-pro
ALSA配置文件(alsa.conf, asoundrc, asound.conf)及其自动加载 And HDMI Adiuo
02-03 2986
警告:错误的EDID会造成HDMI发声异常   #title:box:HDMI Audio #author:wangsijie #:0,1 ------------------------------------------------------------------------------ 硬件环境    Nvidia(290) -----------------------
ALSA配置Linux声卡
武溪嵌人
09-06 799
就Linux系统对硬件设备的支持特性而言,对声卡的支持是很糟糕的。不过现在好了,有两种驱动程序可以弥补Linux系统的不足。一种是OSS(开放声音系统),一种是ALSA(先进Linux声音架构)。OSS是一个商业声卡驱动程序,需要花钱购买,否则每次启动后,你只可以免费使用240分钟;ALSA是自由软件,可以免费使用。一、安装OSS声卡驱动程序1.从http://www.opensound.com/
Alsa-lib配置文件中的运行时参数
南大侠的博客
06-15 290
alsa
写文章

热门文章

  • 常见音频编码格式解析 66663
  • 常见视频编码格式解析 42840
  • 【Linux】详解shell中source、sh、bash、./执行脚本的区别 25286
  • Melis调试方法:GDB基本用法 23569
  • 动态范围控制(DRC)简介 23064

分类专栏

  • 网络之旅 5篇
  • 人工智能AI 1篇
  • 显示相关 1篇
  • Alsa 8篇
  • OpenMAX 4篇
  • GStreamer 17篇
  • FFmpeg 1篇
  • 流媒体 3篇
  • 封装格式 6篇
  • 视频编解码 35篇
  • 音频编解码 4篇
  • 音视频基础 21篇
  • MediaPlayer 1篇
  • 基础外设 2篇
  • EasyFlash
  • C语言 15篇
  • 嵌入式系统 10篇
  • Linux 11篇
  • Tina 8篇
  • Melis 11篇
  • YOC
  • FreeRTOS 1篇
  • 代码仓库管理Git/Repo 7篇
  • 全志开发板 1篇
  • 海尔智家
  • 调试经验总结 11篇
  • 工具 3篇
  • 面试题 1篇

最新评论

  • 物联网WiFi配网方式原来是这七种!

    m1932: 有一张图被吞了啊表情包表情包表情包

  • 在Linux中安装ALSA声卡驱动

    xxjj_95: 大佬您好,请教下我在第三步的时候遇到了这个问题,您知道怎么解决吗? install: 无法创建目录 "/include": 权限不够 install: 对 'include/sound/*.h' 调用 stat 失败: 没有那个文件或目录 make: *** [Makefile:204:install-headers] 错误 1

  • C语言:断言assert函数完全攻略

    qq_34199486: 写的很好学习了

  • C语言:断言assert函数完全攻略

    陈逸轩*^_^*: 谢谢了,又让我发现了一个宝藏up,呼呼

  • C语言:断言assert函数完全攻略

    陈逸轩*^_^*: 嘿嘿,写的真好啊!学到了,学到了!

大家在看

  • Leetcode 每日一题:Diameter of Binary Tree

最新文章

  • 全志烧录工具LiveSuite使用注意事项
  • PTA是什么?BT-WIFI共存
  • Gstreamer常用指令
2023年5篇
2022年18篇
2021年25篇
2020年24篇
2019年77篇
2018年19篇
2017年6篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家商场店庆主题美陈陕西景观玻璃钢雕塑加工厂玻璃钢流云雕塑云南学校玻璃钢雕塑价格成都玻璃钢玻璃钢雕塑公司成都玻璃钢雕塑基地深圳走廊商场美陈费用厦门商场美陈公司玻璃钢花盆能放水里吗龙泉玻璃钢雕塑厂家定制长沙玻璃钢牛雕塑推荐玻璃钢雕塑西安玻璃钢雕塑推荐郑州茂名玻璃钢动物雕塑焦作水景玻璃钢雕塑江苏专业玻璃钢雕塑品牌企业春节商场美陈方案新郑校园不锈钢玻璃钢卡通雕塑九江仿铜西式玻璃钢雕塑内销玻璃钢雕塑泸州城市玻璃钢雕塑附近校园玻璃钢雕塑设计武威动物玻璃钢雕塑公司湖北仿铜玻璃钢雕塑批发夺艺雕塑玻璃钢人物订做龙井方形玻璃钢花盆郑州玻璃钢雕塑生产玻璃钢雕塑区别玻璃钢造型雕塑批发广东节庆商场美陈批发香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化