【全志V3S开发】(七)-CODEC音频播放

一、CODEC设备检查

1. sun8i-v3s-licheepi-zero-dock.dts中已经默认使能了codec,如下图所示:

2. 通过SecureCRT 查看串口输出的linux kernel日志也可以查看到codec:

3. 进入根文件系统下/dev/snd,查看设备信息:

ls /dev/snd

<1> controlC0表示控制器,C0就是声卡0。
<2> pcmC0D0c 表示capture,是用于录音的pcm设备。
<3> pcmC0D0p 表示playback,是用于放音的pcm设备。
<4> timer 表示定时器

如果以上检查都没问题,说明codec设备被成功使能!但是音频驱动被使能以后还不能直接播放音乐或者录音,还需要移植alsa-lib和alsa-utils这两个库文件。

二、alsa-lib移植

1. 首先下载alsa-lib和alsa-utils源码,下载地址为:http://www.alsa-project.org/main/index.php/Main_Page。当前最新版本为 1.2.12,如下图所示:

2. 注意 alsa-lib 编译过程中会生成一些配置文件,而这些配置信息的路径都是绝对路径,因此为了保证 ubuntu 和开发板根文件系统中的路径一致!我们需要在 ubuntu 和开发板中各创建一个路径和名字完全一样的目录,这里我们都创建一个/usr/share/arm-alsa 目录,ubuntu 中创建命令如下:

cd /usr/share
sudo mkdir arm-alsa

在开发板根目录中也创建一个/usr/share/arm-alsa目录:

mkdir /usr/share/arm-alsa -p

 这样我们在交叉编译的时候就可以使用绝对路径了。

3. 进入ubuntu下的/home/daemonchen/linux/V3S,创建文件夹tool/alsa-lib用来保存编译结果:

cd /home/daemonchen/linux/V3S
mkdir tool
mkdir tool/alsa-lib

将下载好的alsa-lib-1.2.12.tar.bz2文件拷贝到/home/daemonchen/linux/V3S/tool下,并进行解压:

tar -vxjf alsa-lib-1.2.12.tar.bz2

4. 解压完成以后就会得到一个名为“alsa-lib-1.2.12”的文件夹,这个就是 alsa-lib 的源码。进入alsa-lib-1.2.12 目录,然后配置并编译,命令如下:

cd alsa-lib-1.2.12/
./configure --host=arm-linux-gnueabihf --prefix=/home/daemonchen/linux/V3S/tool/alsa-lib --with-configdir=/usr/share/arm-alsa 

5. 切换到root用户模式下进行编译:

sudo su
source /etc/profile
make
make install
exit

编译完成后就会在/home/daemonchen/linux/V3S/tool下保存相应的编译结果,如下图所示:

 ubuntu中/usr/share/arm-alsa目录下的内容如图所示:

6. 将 /home/daemonchen/linux/V3S/tool目录下的所有文件拷贝到开发板根文件系统/usr/lib目录下,将 ubuntu中/usr/share/arm-alsa目录下的所有文件拷贝到开发板的/usr/share/arm-alsa目录下:

cd alsa-lib
sudo cp lib/* /home/daemonchen/linux/nfs/rootfs/lib/ -af
cd /usr/share/arm-alsa
sudo cp * /home/daemonchen/linux/nfs/rootfs/usr/share/arm-alsa/ -raf

 三、alsa-utils移植

1. 进入ubuntu下的,创建文件夹alsa-utils用来保存编译结果:

cd /home/daemonchen/linux/V3S/tool
mkdir alsa-utils

2. 将下载好的alsa-utils-1.2.12.tar.bz2文件拷贝到/home/daemonchen/linux/V3S/tool下,并进行解压。

tar -vxjf alsa-utils-1.2.12.tar.bz2

3. 解压成功以后会得到一个名为“alsa-utils-1.2.2”的文件夹,此文件夹就是 alsa-utils 源码。配置编译如下所示:

cd alsa-utils-1.2.12/
./configure --host=arm-linux-gnueabihf --prefix=/home/daemonchen/linux/V3S/tool/alsa-utils --with-alsa-inc-prefix=/home/daemonchen/linux/V3S/tool/alsa-lib/include/ --with-alsa-prefix=/home/daemonchen/linux/V3S/tool/alsa-lib/lib/ --disable-alsamixer --disable-xmlto

4. 切换到root用户模式下进行编译: 

sudo su
source /etc/profile
make
make install
exit

5.  编译完成以后就会在前面创建的“/home/daemonchen/linux/V3S/tool/alsa-utils”目录下生成 bin、sbin 和 share 三个文件夹,如下所示:

 6. 将/home/daemonchen/linux/V3S/tool/alsa-utils目录下的所有文件拷贝到开发板根目录下的/bin、/sbin 和/usr/share/alsa 目录下,命令如下:

cd alsa-utils
sudo cp bin/* /home/daemonchen/linux/nfs/rootfs/bin/ -rfa
sudo cp sbin/* /home/daemonchen/linux/nfs/rootfs/sbin/ -rfa
sudo cp share/* /home/daemonchen/linux/nfs/rootfs/usr/share/ -rfa

7.  打开开发板根文件系统中的/etc/profile 文件,在里面加入如下所示内容:

export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.conf

ALSA_CONFIG_PATH 用于指定 alsa 的配置文件,这个配置文件是 alsa-lib 编译出来的。

四、开机测试

进入根文件系统后,输入以下命令查看设备:

arecord -l

成功安装alsa-utils的话,将输出一下内容:

五、音乐播放测试

 1. 在根文件系统下创建music文件夹,并将放入一个wav格式的测试音频test.wav:

2. 播放音乐测试(耳机一定要插紧,我第一次没插紧,导致只有一个耳机有声音):

amixer -c 0 sset 'Headphone',0 50% unmute
aplay  test.wav

成功播放音乐!

 六、录音及播放测试

1. 使用下面的命令使能麦克风并录音:

amixer -c 0 cset numid=12 2     使能mic1
arecord -D hw:0,0 -d 3 -f S16_LE -r 16000 tmp.wav   录音测试

 2. 播放测试:

amixer -c 0 sset 'Headphone',0 100% unmute
aplay  tmp.wav
  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值