QT录制麦克风声音

QT录制麦克风声音

首先在项目文件中添加:

QT       += multimedia

在设计界面上拖入两个标签label,一个combox,一个line edit和三个按钮,如下图所示:

QT录制麦克风声音_第1张图片

然后在.h文件中添加头文件:

#include 
#include 
#include 
#include 

并声明一个私有对象指针:

QAudioRecorder *audioRecorder;

声明一个私有槽函数:

/* 显示记录时间 */
 void updateProgress(qint64 duration);

然后在构造函数中添加如下代码:

audioRecorder = new QAudioRecorder;
QStringList inputs = audioRecorder->audioInputs();
ui->comboBox->addItems(inputs);
/* 显示录制时间*/
connect(audioRecorder,&QAudioRecorder::durationChanged,this,&MainWindow::updateProgress);

这里获取了系统可用的音频输入设备列表,并将其添加到combox部件中。

在设计模式下,分别转到“选择”按钮,“开始”按钮,“停止”按钮的clicked()信号的槽,更改如下:

// 选择按钮
void MainWindow::on_pushButton_3_clicked()
{
    QString filename = QFileDialog::getSaveFileName();
    ui->lineEdit->setText(filename);
}
// 开始按钮
void MainWindow::on_pushButton_clicked()
{
    audioRecorder->setAudioInput(ui->comboBox->currentText());
    audioRecorder->setOutputLocation(QUrl::fromLocalFile(ui->lineEdit->text()));
    audioRecorder->record();
}
// 停止按钮
void MainWindow::on_pushButton_2_clicked()
{
    audioRecorder->stop();
}

显示时间槽函数实现:

void MainWindow::updateProgress(qint64 duration)
{
    if(audioRecorder->error() != QMediaRecorder::NoError || duration < 1000)
        return;
    setWindowTitle(tr("Recorded %1 sec").arg(duration / 1000));
}

在选择按钮中打开了一个文件对话框,永固选择保存路径,在开始按钮中设置了音频输入设备、保存地址,然后进行录制,按下停止按钮则停止录制。运行程序,选择系统中可用的录音设备,选择要保存的文件路径。

QT录制麦克风声音_第2张图片

你可能感兴趣的:(QT)