用QT5写一个可以在电脑上录音并且可以选择指定录音文件进行播放的工程并给出.pro .h .cpp文件
时间: 2024-02-06 13:10:22 浏览: 64
以下是一个简单的用QT5实现录音和播放的工程,包含.pro、.h、.cpp文件:
.pro文件:
```
QT += core gui multimedia
TARGET = RecorderPlayer
TEMPLATE = app
SOURCES += main.cpp \
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
```
mainwindow.h文件:
```cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QAudioRecorder>
#include <QAudioProbe>
#include <QMediaPlayer>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_recordBtn_clicked();
void on_stopBtn_clicked();
void on_playBtn_clicked();
void on_pauseBtn_clicked();
void processBuffer(const QAudioBuffer &buffer);
private:
Ui::MainWindow *ui;
QAudioRecorder *m_audioRecorder;
QAudioProbe *m_audioProbe;
QMediaPlayer *m_mediaPlayer;
QString m_filePath;
};
#endif // MAINWINDOW_H
```
mainwindow.cpp文件:
```cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 初始化音频录制对象
m_audioRecorder = new QAudioRecorder(this);
m_audioRecorder->setAudioInput("Default");
m_audioRecorder->setOutputLocation(QUrl::fromLocalFile(m_filePath));
// 初始化音频探测器
m_audioProbe = new QAudioProbe(this);
m_audioProbe->setSource(m_audioRecorder);
// 连接音频探测器的信号
connect(m_audioProbe, &QAudioProbe::audioBufferProbed, this, &MainWindow::processBuffer);
// 初始化媒体播放器
m_mediaPlayer = new QMediaPlayer(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_recordBtn_clicked()
{
// 选择保存路径
m_filePath = QFileDialog::getSaveFileName(this, tr("保存录音"), ".", tr("Audio Files (*.wav)"));
// 开始录音
m_audioRecorder->setOutputLocation(QUrl::fromLocalFile(m_filePath));
m_audioRecorder->record();
// 更新UI
ui->recordBtn->setEnabled(false);
ui->stopBtn->setEnabled(true);
ui->playBtn->setEnabled(false);
ui->pauseBtn->setEnabled(false);
}
void MainWindow::on_stopBtn_clicked()
{
// 停止录音
m_audioRecorder->stop();
// 更新UI
ui->recordBtn->setEnabled(true);
ui->stopBtn->setEnabled(false);
ui->playBtn->setEnabled(true);
ui->pauseBtn->setEnabled(false);
}
void MainWindow::on_playBtn_clicked()
{
// 播放录音文件
m_mediaPlayer->setMedia(QUrl::fromLocalFile(m_filePath));
m_mediaPlayer->play();
// 更新UI
ui->recordBtn->setEnabled(false);
ui->stopBtn->setEnabled(false);
ui->playBtn->setEnabled(false);
ui->pauseBtn->setEnabled(true);
}
void MainWindow::on_pauseBtn_clicked()
{
// 暂停播放
m_mediaPlayer->pause();
// 更新UI
ui->recordBtn->setEnabled(false);
ui->stopBtn->setEnabled(false);
ui->playBtn->setEnabled(true);
ui->pauseBtn->setEnabled(false);
}
void MainWindow::processBuffer(const QAudioBuffer &buffer)
{
// 处理音频数据
// 这里可以将音频数据保存到文件中或者进行其他处理
}
```
在Qt Creator中创建一个新的工程,将以上代码复制到相应的文件中,并连接相关的信号和槽即可。
阅读全文