原文出处:http://blog.sina.com.cn/s/blog_a04184c101010kry.html

警告:错误的EDID会造成HDMI发声异常

#title:box:HDMI Audio

#author:wangsijie

#:0,1

------------------------------------------------------------------------------

硬件环境

Nvidia(290)
------------------------------------------------------------------------------

软件环境

alsa-1.0.24.1-3.1
------------------------------------------------------------------------------

配置文件

/etc/asound.conf(简易配置) :

{{{

pcm.!default{

type hw

card 1

devive 7

}

ctl.!default{

type hw

card 1

device 7

}

}}}

其中card代表声卡号, device代表设备号, asound.conf的配置极其强大和复杂,详情可查阅http://www.alsa-project.org/main/index.php/Main_Page

---------------------------------------------------------------------------

card, device的确定方法
    card, device必须对应hdmi的声卡号和设备号,可以使用aplay -l查看对应的hdmi设备,可能会有出现多个hdmi设备,确定当前可以使用的hdmi设备的方法如下:

#. cat /proc/asound/cards 查看nvidia设备对应的ID号(假设=1)

#. alsamixer -c 1 打开声音设置,其中<S/PDIF>即为HDMI输出,“MM”代表静音,alsa在每次重启声音设备时都会默认为静音,所以必须首先打开音量再进行后续的操作。

#. alsactl store 保存上述配置

#. aplay -D hw:1,7  /usr/share/sounds/alsa/test.wav  "hw后的1代表声卡号,7代表设备号,需要根据aplay -l的输出来确定这两个数字"找到对应的hdmi输出口。

--------------------------------------------------------------------------------------------------------------------------------------------------------------

参考网站:

 

ALSA的配置文件对于ALSA非常重要。常见的有三个:alsa.conf, asoundrc, asound.conf。

 
1. 核心配置文件
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版本以后,这两个文件就不再是必要的,甚至是不应该需要的。至少是不推荐使用。不过,在嵌入式系统中使用,为了简单和方便测试,恰恰是需要修改这两个文件。
 
2. alsa.conf
alsa.conf中主要的一些内容包括:
1) 用hook读取了/etc/asound.conf 和 ~/.asoundrc这两个配置文件
@hooks [
{
func load
files [
"/etc/asound.conf"
"~/.asoundrc"
]
errors false
}
]
2) 设置了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
。。。
3) 设置了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数据流存储到文件中。
 
3. asoundrc和asound.conf
按照ALSA官方说法,asoundrc是针对个人用户的配置文件,asound.conf是全局的配置文件。其中,asoundrc位于主目录下,是个隐藏文件:“.asoundrc”。asound.conf位于/etc目录下。对于最新版本的ALSA库来说,这两个文件已不再需要。但是对于一些特定应用来说,他们的使用恰到好处。典型的asoundrc文件如下:
# Overwrite existing devices
pcm.!default
{
type plug
slave.pcm "softvol"
channels 2
}
 
# Add new sofvol PCM device
pcm.softvol
{
type softvol
slave
{
pcm "hw:0,0"
}
 
control
{
name "Softmaster"
card 0
}
}
 
4. ALSA配置状态保存,恢复和自动加载
实际使用过程中,常常需要动态修改声卡的配置信息,如更新asoundrc中的Mixer信息。如果不对当前声卡的配置状态进行保存,下次启动系统时,将还原到原始状态。为此,我们有必要对声卡的配置状态进行保存。声卡配置状态保存工具为:alsactl,具体保存命令为:
 
alsactl store -f /var/lib/alsa/asound.state 
这样就在/var/lib/alsa/目录下生成了asound.state文件,该文件保存了声卡的状态配置信息,包括常用的mixer配置信息。相应的声卡状态恢复命令为:

alsactl restore -f /var/lib/alsa/asound.state

注:在每次修改完声卡配置文件之后,必须要保证配置文件被系统加载,否则在保存声卡配置状态信息时,alsactl读取的是上次声卡的状态。常用的加载配置文件的方法是播放一个音频文件,例如:
speaker-test -twav
这样就可以将刚刚修改的配置文件加载到系统中,然后执行相应的保存命令,即可将相应的声卡状态信息保存到文件中。
 
得到了声卡的配置状态信息仍不能保证系统启动时自动加载并应用状态信息。需要修改启动配置文件,加入ALSA Daemon。启动配置文件为:/etc/rc.conf,在包含DAEMONS的一行内加入alsa项目。这样,系统启动时会自动执行/etc/rc.d/alsa脚本,该脚本会自动执行前面所说的声卡状态恢复命令,恢复Mixer配置信息。

(转)ALSA配置文件(alsa.conf, asoundrc, asound.conf)及其自动加载 And HDMI Adiuo的更多相关文章

  1. tmux不自动加载配置文件.tmux.conf

    /********************************************************************** * tmux不自动加载配置文件.tmux.conf * ...

  2. 在Thinkphp中【自动加载自定义扩展配置文件】!

    /Conf/config.php为正式的扩展文件 /Conf/verify.php为扩展的自定义配置文件 /Conf/sendmail.php为扩展的自定义配置文件 如果要自动加载 verify和se ...

  3. 想要配置文件生效 需要通过添加到web.xml加载到内存中

    想要配置文件生效 需要通过添加到web.xml加载到内存中

  4. springboot属性类自动加载配置文件中的值

    springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...

  5. ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址

    首先需要JAR包 Spring整合Structs2的JAR包 struts2-spring-plugin-2.3.4.1.jar 下载地址 链接: https://pan.baidu.com/s/1o ...

  6. Nginx自动加载配置文件方案

    nginx自动加载配置文件方案一.nginx+consul+consul-template实现过程:consul作为服务发现软件,consul-template作为nginx配置文件的模板,consu ...

  7. Junit手动/自动加载spring配置文件

    分配置文件在classpath下和web-inf下两种情况的加载: ApplicationContext context = new FileSystemXmlApplicationContext(& ...

  8. Spring Web项目spring配置文件随服务器启动时自动加载

    前言:其实配置文件不随服务器启动时加载也是可以的,但是这样操作的话,每次获取相应对象,就会去读取一次配置文件,从而降低程序的效率,而Spring中已经为我们提供了监听器,可监听服务器是否启动,然后在启 ...

  9. java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载

    实现时主要使用Commons-Configuration.jar包,还需要commons-lang,disgestor,beanutils,collections等, package propFile ...

随机推荐

  1. [转]Hspice 语法手册

    一.HSPICE基础知识Avant! Start-Hspice(现在属于Synopsys公司)是IC设计中最常使用的电路仿真工具,是目前业界使用最为广泛的IC设计工具,甚至可以说是事实上的标准.目前, ...

  2. gulp#4.0

    gitbook教程: https://dragon8github.gitbooks.io/gulp-webpack/content/an-zhuang-gulp-4-0.html gulpfile.j ...

  3. RUBY Error: Please update your PATH to include build tools or download the DevKit

    出错的原因是安装XXXXX的时候,需要build tools,但系统中没有.出错信息中同时也给出了解决的法案: 1. 到 http://rubyinstaller.org/downloads/ 去下载 ...

  4. PHP函数之类

    if(isset($_POST['dosubmit'])) { } 打散 $array_urls = explode("\r\n",$inurl_str); foreach ($a ...

  5. 【Android】4.3 屏幕布局和旋转

    分类:C#.Android.VS2015:创建日期:2016-02-06 为了控制屏幕的放置方向(纵向.横向),可以在Resource下同时定义两种不同的布局文件夹:layout和layout-lan ...

  6. Django:Django Rest Framework

    Django Rest Framework   一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称 ...

  7. Python框架级编程的能力要求

    说在前面:比较基础的就不说 1.装饰器熟练掌握 2.内建函数,内建变量.下划线函数之类的东西要搞明白 3.一定Python数据接口和算法实现能力 4.内省 5.元编程

  8. FileZilla server windows 2003系统下适用的版本

    最新版的FileZilla server 在windows 2003系统下已经不能用了 http://files.cnblogs.com/files/airoot/FileZilla_Server-0 ...

  9. 让一个div始终固定在页面的某一固定位置的方法

    方法一:直接用position:fixed 方法二:写一个滚动条滚动事件,让这个div设置 position:absolute 该top的距离等于滚动的距离scrollTop() 写法如下:$(win ...

  10. linux环境变量设置 以及 source命令 Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程 Linux 设置环境变量

    定制环境变量  环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell.对于Linux来说一般是bash,但也可以重新设定或切换到其它的Shell.环境变量文件:/etc/profil ...