alsa库在ubuntu和开发板使用

wav是未压缩过的视频文件,数据本身的格式为PCM或压缩型,属于无损音乐格式的一种。所有的WAV都有一个文件头,这个文件头音频流的编码参数。

alsa库:使用ALSA中的PCM进行录制wav,使用ALSA中的PCM进行播放wav

linux虚拟机上安装
下载alsa源码----编译安装
alsa-lib-1.1.5.tar.bz2

解压到linux系统中
配置 执行./configure
编译 执行make
安装 执行sudo make install
编译pc端录制程序

gcc  -o  record  record.c  -lasound

开发板上搭建ALSA库

  1. 在ubuntu中
    配置交叉编译

    ./configure  --host=arm-linux  CC=arm-linux-gcc  --prefix=/opt/alsa
               		指定主机arm-linux       工具链           安装路径
    

make

sudo make install

编译对应的录制和播放文件

arm-linux-gcc -o record alsa_record.c  -I/opt/alsa/include  -L/opt/alsa/lib  -lasound
                         					  指定头文件路径        库文件路径            库文件
  1. 在开发板上
    把ubuntu中的把编译好的/opt/alsa 目录拷贝到开发板上的/opt目录下

且设置开发板上的环境变量(每一次开发板重启多要重新写如), 可以写入/etc/profile文件中,就可以不用重新写入,因为开发板重启都要先设置该文件下的环境变量

export  LD_LIBRARY_PATH=/opt/alsa/lib:$LD_LIBRARY_PATH

传递文件,运行文件~

gcc编译编译之后arm-linux-gcc交叉编译,操作要注意:
1)arm-linux-gcc交叉编译的时候,需要先make clean 删掉之前gcc编译的结果,但不要make uninstall卸载gcc的安装,卸载了ubuntu上就不能运行了

2)arm-linux-gcc -o alsa_record_arm alsa_record.c -lasound

(不用添加指定头文件路径和库文件路径 -I/opt/alsa/include -L/opt/alsa/lib)可以直接编译过, 原因是在交叉编译环境中已经有对应的库文件

sudo find  /  -name  "libasound*.so*"

file  /usr/bin/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libasound.so.2.0.0(老师的,我的在arm目录下找不到)

这个是arm上支持的库文件,所以不用指定库文件路径-I/opt/alsa/include -L/opt/alsa/lib,直接在上面路径查找

3)开发板上

rx alsa_arm.tar.bz2

tar  -jxvf  /root/alsa_arm.tar.bz2

export  LD_LIBRARY_PATH=/opt/alsa/lib:$LD_LIBRARY_PATH

rx  record

chmod  0777 record

./record   1.wav

 rx play

chmod 0777 play

./play  1.wav

你可能感兴趣的:(alsa库在ubuntu和开发板使用)