下面为库的移植与配置,粗斜体为本机路径,需要自行修改!!!!!

(1)移植alsa-lib库
移植三部曲 ------- 配置 编译 安装
1)将源码拷贝到Ubuntu非共享目录,解压

2)配置

./configure --host=arm-linux --prefix=***/home(设置好的路径)*** --disable-python

3)编译 安装

make
make install

(2)移植alsa-utils库
1)解压配置

./configure --host=arm-linux --prefix=***/home(设置好的路径)***
--with-alsa-prefix=/home/gec/alsa/lib --with-alsa-inc-prefix=***/home(设置好的路径)***/include 
--disable-alsamixer --disable-xmlto

2)编译 安装

make
make install

(3)将编译生成的目录(bin sbin lib share include)打包,拷贝到开发板,在开发版解压后将需要的文件拷贝到对应的位置。

1)库文件

以上三个文件拷贝到开发板/lib或者/usr/lib
cp libasourd.so* /lib -a

2)命令

将以上两个文件拷贝到开发板/bin或者/usr/bin
cp aplay arecord /bin -a

3)配置文件

将share目录全部拷贝到到开发板和编译生成目录相同的目录下
===>***/home(设置好的路径)***/share(开发板路径)
mkdir -p ***/home(设置好的路径)***/share
cp  ***/home(设置好的路径)***/share -a

(4)录音和播放

1)arecord -d5 -c1 -r16000 -twav -fS16_LE xxx.WAV
    -d:录音时间
    -c:音轨
    -r:采样评率
    -t:封装格式
    -f:量化位数
2)播放
aplay xxx.WAV

具体实现代码如下:

MyAudio.h

#ifndef MYAUDIO_H
#define MYAUDIO_H

#include <QWidget>
#include <QProcess>

QT_BEGIN_NAMESPACE
namespace Ui { class MyAudio; }
QT_END_NAMESPACE

class MyAudio : public QWidget
{
    Q_OBJECT

public:
    MyAudio(QWidget *parent = nullptr);
    ~MyAudio();

private slots:
    void on_pushButton_record_clicked();

    void on_pushButton_play_clicked();

private:
    Ui::MyAudio *ui;
    QProcess *p;
};
#endif // MYAUDIO_H

main.c

#include "myaudio.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyAudio w;
    w.show();
    return a.exec();
}

MyAudio.c

#include "myaudio.h"
#include "ui_myaudio.h"

MyAudio::MyAudio(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MyAudio)
{
    ui->setupUi(this);

    p = new QProcess(this);
}

MyAudio::~MyAudio()
{
    delete ui;
}

//录音/结束
void MyAudio::on_pushButton_record_clicked()
{
    if(p->state()==QProcess::Running)
    {
        //关闭
        p->kill();
        p->waitForFinished();

        ui->pushButton_record->setText("录音");
    }

    else if(p->state()==QProcess::NotRunning)
    {
        QString cmd = QString("arecord");
        QStringList args;
        args<<"-d60"<<"-c1"<<"-r16000"<<"-twav"
           <<"-fS16_LE"<<"test.WAV"<<"&";

        p->start(cmd,args);
        ui->pushButton_record->setText("停止");
    }
}

//播放
void MyAudio::on_pushButton_play_clicked()
{
    if(p->state()==QProcess::Running){
        //关闭
        p->kill();
        p->waitForFinished();

        ui->pushButton_record->setText("录音");
    }

    QString cmd = QString("aplay");
    QStringList args;
    args<<"test.WAV"<<"&";

    p->start(cmd,args);
}

完整代码及配置文件:
文件链接:https://download.csdn.net/download/weixin_43793181/20335306
文件内容:
在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐