首页 > 技术知识 > 正文

交叉编译alsa工具

alsa1.2.6编译脚本lib

CC=aarch64-himix210-linux-gcc \

./configure —host=aarch64-himix210-linux \

—prefix=$PWD/_install

make

make install utils

CC=aarch64-himix210-linux-gcc \

./configure —prefix=$PWD/_install \

—host=aarch64-himix210-linux \

—with-alsa-inc-prefix=$PWD/../alsa-lib-1.2.6.1/_install/include/ \

—with-alsa-prefix=$PWD/../alsa-lib-1.2.6.1/_install/lib \

—disable-alsamixer \

—disable-xmlto \

—disable-nls

make

sudo make install 添加配置文件路径

交叉编译alsa工具后,工具寻找alsa.conf文件始终去找虚拟机的编译目录,configure修改datarootdir后仍无法指定;报错如下:

Cannot access file /home/leo/HI_SDK/3531DV200/v2.0.2.0/Hi3531DV200_SDK_V2.0.2.0/osdrv/tools/board/alsa/alsa-lib-1.2.6.1/_install/share/alsa/alsa.conf

解决方法:

在代码中找到alsa.conf相关的宏,到arm下export指定路径

export ALSA_CONFIG_PATH=/usr/share/alsa.conf

注:alsa框架常配合USB Audio设备使用

ALSA音频工具

列出声卡和数字音频设备

./aplay -l

card 0: SOUND0 [TI81XX SOUND0], device 0: TVP-PCM tvp5158-hifi-0 []

Subdevices: 1/1

Subdevice #0: subdevice #0

card 0: SOUND0 [TI81XX SOUND0], device 1: AIC3X tlv320aic3x-hifi-1 []

Subdevices: 1/1

Subdevice #0: subdevice #0

根据上面列出的设备,如果选择tvp5158来录制声音的话那么pcm设备就位hw0,0,如果是tlv320aic3x则pcm设备为hw0,1。

设备以hwx,x开头,前一个x为声卡号(card),后一个x为设备号(device) 参数

-D参数用于指定音频设备PCM

-r指定采样频率:

5512/8000/11025/16000/22050/32000/44100/48000/64000/88200/96000/176400/192000

-f指定采样格式上面列出了:cd/cdr/dat/S16_LE/S32_LE/…

-f cd (16 bit little endian, 44100, stereo)

-f cdr (16 bit big endian, 44100, stereo)

-f dat (16 bit little endian, 48000, stereo)

-t 指定文件类型 (voc, wav, raw or au) 播放

./aplay -Dhw:0,0 -r48000 -f cd /nfsroot/alsa/audio.pcm

录音

./arecord -Dhw:0,0 -r48000 -f S16_LE -c 2 /nfsroot/alsa/audio.pcm

./arecord -Dhw:0,0 -r48000 -f cd /nfsroot/alsa/audio.pcm 同时录音且播放

利用管道的命令:

./arecord -Dhw:0,1 -r48000 -f cd|./aplay -Dhw:0,1 -r48000

猜你喜欢