简介
ALSA是Advanced Linux Sound Architecture的缩写,目前已经成为了linux下的主流音频体系架构,提供了音频和MIDI的支持。
交叉编译alsa_lib和alsa_utils
下载alsa_lib
在官网中下载AlsaProject
编译
先将文件解压,然后进入alsa_lib文件夹中
首先需要执行configure应用程序,用来对编译项目进行配置。
./configure --host=arm-linux-gnueabihf --prefix=/home/heihei/Qt_lib/alsa-lib-1.2.2/temp --enable-shared=yes --enable-static=no --disable-python CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
//选项讲解
-prefix:后面是下载(install)的绝对路劲,也就是编译出来后的文件所存放的目录
-host:具体使用交叉编译器的名称(需要填写全名)
CC:交叉编译工具的绝对路径
-enable-shared=yes --enable-static=no:动态编译还是静态编译,只能选择一个
测试应用程序
alsa-lib是ALSA提供的一套Linux下的C语言库函数,需要将alsa-lib移植到开发板上,这样基于alsa-lib编写的应用程序才能运行。
使用make 编译工程,然后再使用make install下载编译后的文件到指定目录即可
进入temp文件夹中可以查看到编译后的所有内容,将temp文件夹中的内容移植移植到开发板上,然后添加PATH环境变量即可。
编译alsa-utils和编译alsa-lib是一样的这里就不详细介绍了,可以百度。
aplay
aplay是一个用于测试音频播放功能程序,可以使用aplay播放wav格式的音频文件。
alsamixer
用于配置声卡的混音器,它是一个字符图形的配置工具。
alsactl
配置完成后,下次启动配置不会保存则可以直接使用如下命令,将配置项保存到指定文件夹下。
alsactl -f /var/lib/alsa/asound.state store
使用如下命令可以将配置信息加载
alsactl -f /var/lib/alsa/asound.state restore
amixer
使用该应用程序直接配置声卡,例如:
# 打开耳机播放 ZC
amixer sset 'Headphone Playback ZC' on
# 打开喇叭播放 ZC
amixer sset 'Speaker Playback ZC' on
amixer sset 'Speaker AC' 3
amixer sset 'Speaker DC' 3
# 音量设置
amixer sset Playback 230,230 //播放音量设置
amixer sset Speaker 118,118 //喇叭音量设置
# 打开左右声道
amixer sset 'Right Output Mixer PCM' on //打开右声道
amixer sset 'Left Output Mixer PCM' on //打开左声道
# 注释:打开声道很重要,如果移植alsa的库之后使用alsamixer可以找到声卡,音量也配置了。
#但是调用aplay没有声音那就是由于没有打开声道导致的。
参考
《【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4》