当前位置:   article > 正文

alsa 测试 linux_从51单片机到Linux 音乐播放之ALSA及播放工具(教程16)

linux 测试alsa

95ab100656d7980dafb75409c873f09a.png

大家好,我是兔子。

是一个嵌入式软硬件工程师。

正在从单片机开发转岗Linux开发。

兔子这次试用ALSA功能,并使用编译出来的播放工具来播放.wav格式的音乐。

PS:实际上,绝大多数开发板已经有ALSA及相关音频播放工具的功能了。固件不带ALSA功能的开发板少之又少。只是兔子我手上的周立功i.MX287开发板,新版本的固件没有这个功能。

正好,我就单独来编译一次ALSA功能,并将其集成到周立功i.MX287的开发板中。

(如果各位是使用其他的开发板,可以输入aplay –l命令。能看到终端打印开发板声卡的信息,则表明已经自带了ALSA功能。可以往开发板里传入一个.wav格式的音频歌曲。

使用aplay xxx.wav来播放歌曲,xxx.wav表示歌曲的文件名)

a821670e353c63ee3bd7e5c1f1a7f4d9.png

1.什么是ALSA

ALSA是Advanced Linux Sound Architecture高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System,开放声音系统)。

2. ALSA及播放工具编译

和兔子一起,去ALSA的官网上下载最新的ALSA库。

https://www.alsa-project.org/wiki/Main_Page

b2e22dc49605937edad03ce946f5c1f1.png

可以看到,目前ALSA最新的版本是1.1.9.

对于我们开发板,只需要下载alsa-lib-1.1.9alsa-utils-1.1.9即可。

两个文件下载好后,上传到虚拟机的/opt目录下。并解压。

f217d552ea59a990614c6f7b0fb2c59b.png

解压,输入命令

tar -jxvf alsa-lib-1.1.9.tar.bz2

tar -jxvf alsa-utils-1.1.9.tar.bz2

可以看到,两个文件以及解压好了。

af89d4f9b21a7ec350d9a3f5f430aea2.png

1)编译alsa-lib

先输入指令

cd alsa-lib-1.1.9

进入alsa-lib-1.1.9文件夹里。

输入alsa库的编译配置

CC=arm-fsl-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/alsa

<1> CC=arm-fsl-linux-gnueabi-gcc表示指定的编译工具为arm-fsl-linux-gnueabi-gcc

<2> prefix=/opt/alsa 表示最终编译生成及库调用的路径为/opt/alsa

c5bd2b067fc1d8e4780c5f3be872bd13.png

等待一会,可以看到无错误。表示配置通过。

5711fa98bb6af0fdaae1fc52949db27e.png

输入make指令,等待编译通过后。

如果无错误,

再输入sudo make install 安装最终生成的文件。

这时,可以在/opt目录下,看到新生成的文件夹alsa

表示alsa-lib安装成功。

43220b71205d8f119be3494d1fded4ee.png

2)编译alsa-utils

cd alsa-utils-1.1.9

进入alsa- utils -1.1.9文件夹里。

输入alsa-utils的编译配置

CC=arm-fsl-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/alsa CFLAGS="-I/opt/alsa/include" LDFLAGS="-L/opt/alsa/lib -lasound" --disable-alsamixer --disable-xmlto --disable-nls

说明

<1> --prefix指定了alsa-utils最终编译生成的目录

<2> CFLAGS=及LDFLAGS=.

由于编译需要alsa-lib的支持,所以需要指明alsa-lib的库及头文件的目录。

<3> alsamixer是图形化的amixer工具,需要ncurses的支持,在secure CRT中乱码,怕麻烦用--disable-alsamixer禁用了它.

等待一会,看到无错误,表示配置通过。

1c6a8e069939cca4da54ebcea750e7e2.png

输入make指令,等待编译通过后。

如果无错误,

再输入make install 安装最终生成的文件。

make install 时遇到错误。

23cb7f9aa1f9bba8aedf52a9898fa0a1.png

可以看到,提示是权限不够。

是因为/opt目录下是只有root用户才能读写操作。

输入指令make clean,清除make install生产的临时文件。

重新make一下。

再输入指令 sudo make install

就可以了。

至此,ALSA所有文件以及全部编译通过。都生成在/opt的alsa目录里。

3)打包,带走

在虚拟机的/opt目录下。

输入指令

sudo tar –cvf alsa.tar alsa/

则在/opt目录下生成了alsa.tar压缩包。

a502a5fcaa31bc571afffd8436287c85.png

Ps:主要是文件夹里有链接文件,直接整个目录复制,会导致链接文件失效。打包成压缩包,是可以避免链接文件失效。

e6d3f042d9491426c83c319e0ef34415.png

3.开发板安装ALSA

将生成的alsa.tar拷贝到开发板的/opt目录下。

并解压

tar –xvf alsa.tar

1e856e7312d8bc9c246e9377757911d1.png

可以看到,在开发板的/opt目录下,生成了alsa文件夹。

2cdd3e11762d1c71653899e992508e5c.png

(如果不清楚如何拷贝,可以移步教程3)

兔子MCU:从51单片机到Linux 开发板传文件利器-NFS(教程3)​zhuanlan.zhihu.com
3ec222b5cada40d2c195307d4bb7bc73.png

进入alsa/lib目录下,将所有文件一起打包。

tar –cvf libalsa.tar *

这里都是alsa功能的动态库文件。

afdda460533b0f2c60475d8f26623c35.png

然后将生成的压缩包libalsa.tar复制到/usr/lib下解压。

<1>需要先重新挂载一下目录

mount –o remount rw / (由于开发板根文件系统做了写保护处理,需要重新挂载一下,在可以往/usr/lib目录下存文件)

<2>cp libalsa.tar /usr/lib

<3>进入/usr/lib目录下,将压缩包解压。

cd /usr/lib

tar –xvf libalsa.tar

<4> 进入/opt/alsa/bin目录下

cp aplay amixer /usr/sbin

将测试工具

aplay,amixer两个测试工具拷贝到开发板/usr/sbin目录下。

(aplay是播放及录制.wav音频的测试工具,amixer是调节音量大小的工具,由于开发板上无麦克风,所以只能播放.wav来测试)

至此,ALSA及测试工具都已经在开发板上安装完毕。

4.测试验证

<1> 插上耳机。

<2> 给开发板上传一个.wav格式的音乐。

<3> 输入命令amixer set Master 252 将音量调节到最大

781913f53aa84a41165743116066045f.png

<4>输入aplay xx.wav命令,开始欣赏音乐

01d3776c42b7b044890b3caadcc80986.png

PS:测试工具只能播放.wav格式的音乐播放。

5.音乐欣赏

8a614ea9e182bdfbf5674e04faa8d71f.png
https://www.zhihu.com/video/1141295993361457152

如果想播放跟多格式的音乐,或者播放视频。可以使用MPlayer来播放。

下一个教程,MPlayer播放器的移植。播放跟多格式的音乐和视频。

39f85ba7321d734772cd38d7ba9e9a6d.png

a22a9d02e8e537bc9166fb0ac74341f3.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/325987
推荐阅读
相关标签
  

闽ICP备14008679号