QT 录制音频(麦克风、系统)

QT 实现音频(麦克风、系统)录制

目录

一、成果展示:

二、代码

三、录制系统声音


一、成果展示:

二、代码

1、main.cpp

#include "myaudiorecorder/AudioWidget.h"
 
int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
 
        AudioWidget w;
	w.show();
 
	return a.exec();
}

2、AudioWidget.h

#ifndef AUDIOWIDGET_H
#define AUDIOWIDGET_H

#include <QWidget>
class QAudioRecorder;

namespace Ui {
class AudioWidget;
}

class AudioWidget : public QWidget
{
    Q_OBJECT

public:
    explicit AudioWidget(QWidget *parent = 0);
    ~AudioWidget();

private slots:
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_4_clicked();
    void updateProgress(qint64 duration);

private:
    Ui::AudioWidget *ui;
    QAudioRecorder *audioRecorder;
};

#endif // AUDIOWIDGET_H

3、AudioWidget.cpp

#include "AudioWidget.h"
#include "ui_AudioWidget.h"
#include <QAudioRecorder>
#include <QDebug>
#include <QFileDialog>

AudioWidget::AudioWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::AudioWidget)
{
    ui->setupU
QT中,有多种方法可以实现音频录制,以下为你介绍两种常见的方式: ### 使用 `QAudioRecorder` `QAudioRecorder` 是一个高层次的类,可用于从音频输入设备(如麦克风)捕获音频数据并保存为文件。以下是一个简单的示例: ```cpp #include <QAudioRecorder> #include <QDebug> // 创建音频记录器 QAudioRecorder *audioRecorder = new QAudioRecorder; // 设置输出文件路径 QString outputLocation = "recorded_audio.wav"; audioRecorder->setOutputLocation(QUrl::fromLocalFile(outputLocation)); // 开始录制 audioRecorder->record(); // 当需要停止录制时 audioRecorder->stop(); ``` 该示例演示了如何使用QT的 `QAudioRecorder` 类进行音频录制。首先,创建了一个 `QAudioRecorder` 对象并设置了输出位置。然后,通过调用 `record()` 方法开始录制,通过调用 `stop()` 方法停止录制。最后,不要忘记清理资源[^1]。 ### 使用 `QAudioInput` `QAudioInput` 是一个低层次的类,可直接控制音频输入设备的参数,并将音频录制数据写入一个流设备。以下是示例代码: ```cpp #include <QAudioInput> #include <QAudioFormat> #include <QFile> // 配置音频格式 QAudioFormat format; format.setSampleRate(44100); format.setChannelCount(2); format.setSampleSize(16); format.setCodec("audio/pcm"); format.setByteOrder(QAudioFormat::LittleEndian); format.setSampleType(QAudioFormat::SignedInt); // 检查默认输入设备是否支持该格式 QAudioDeviceInfo info = QAudioDeviceInfo::defaultInputDevice(); if (!info.isFormatSupported(format)) { format = info.nearestFormat(format); } // 创建QAudioInput对象 QAudioInput *audioInput = new QAudioInput(format); // 创建一个文件用于保存音频数据 QFile outputFile; outputFile.setFileName("recorded_audio.raw"); outputFile.open(QIODevice::WriteOnly); // 开始录制 QIODevice *device = audioInput->start(); QObject::connect(device, &QIODevice::readyRead, [&]() { QByteArray data = device->readAll(); outputFile.write(data); }); // 当需要停止录制时 audioInput->stop(); outputFile.close(); ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值