A40i使用笔记:QT使用alsa采集音频pcm信息

本文介绍了在全志A40i平台上,使用Linux3.10和alsa库进行音频采集,以实现声音幅度的实时显示及pcm格式的数据保存。作者面临了包括编译环境配置、音频设备打开、参数设置等多方面的问题,并逐步解决了这些问题,最终能够成功记录声音并生成pcm文件。后续计划解析数据并显示为曲线,同时讨论了数据刷新、文件格式限制等实际应用中可能遇到的挑战。

一、前言

目的是实现一种效果,就是在音频识别时,能够实时显示当前人员说话的声音幅度,通过波形曲线的形式显示出来。如下效果(非我实现)

还可以实现在实时采集的同时,将需要的数据保存成指定格式文件,如csv,wav,pcm等。 

目前函数模式是存储为pcm格式,如需转成其他格式需要使用不同的库函数或者按照协议格式重写

二、环境

全志A40i

linux3.10

alsa

三、正文

从硬件上首先要具备Audio音频部分,这里硬件支持的话具备硬件电路接口就不同多说什么了,其次就主要是软件层次了

首先要在linux上使用音频采集,就要使用alsa库,交叉安装alsa库的方式也有很多

有的平台环境上和硬件上都默认是已经包含的了,可以通过find -name libasound.so查看

这里我是用的是qt交叉编译程序,一开始总是没有找到libasound库,后来把lib去掉才能正常识别

在pro文件中加入

LIBS +=   -L/root/workspace/allwinner/A40i/bsp/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/ -lasound

头文件中加入

#include <alsa/asoundlib.h>

至此,我终于能够在我的编译环境中正常不报错的编译程序了,但是才刚刚入坑,后面的问题一把又一把的出现,每次都是以为解决当前的问题后面就都不是问题了,结果,,,哎,都是泪

我是用的源码如下:

void menu::on_btn_Ingames_2_clicked()
{



    snd_pcm_t *handle;//PCM句柄
    snd_pcm_hw_params_t *params;//配置硬件参数结构体(PCM硬件配置空间容器)

//    snd_pcm_close(handle);
    int ret = snd_pcm_open(&handle,"hw:/dev/snd/controlC0",SND_PCM_STREAM_CAPTURE,0);//SND_PCM_STREAM_PLAYBACK 或 SND_PCM_STREAM_CAPTURE,分别表示播放和录音的PCM流
    if(ret < 0){
        fprintf(stderr,"unable to open pcm device: %s\n",snd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大桶矿泉水

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值