QT录制麦克风声音

本文介绍了使用QT库如何录制麦克风声音。通过在项目文件中添加相关代码,设计UI界面,包括combox、line edit和按钮,实现从麦克风获取音频并保存至指定路径的功能。用户可以选择录音设备和保存路径,点击开始和停止按钮来控制录音过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT录制麦克风声音

首先在项目文件中添加:

QT       += multimedia

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


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

#include <QMainWindow>
#include <QAudioRecorder>
#include <QDebug>
#include <QFileDialog>

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

QAudioRecorder *audioRecorder;

声明一个私有槽函数:

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

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

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

### 如何使用Qt框架录制耳机音频 为了实现通过Qt框架来录制耳机中的声音,主要依赖于`QAudioInput`类来进行音频输入设备的管理以及数据流的操作。当创建一个基于Qt的应用程序用于录音时,应当先初始化`QAudioInput`对象并指定要使用的音频输入设备。 对于特定需求——即捕捉来自耳机的声音,假设耳机被操作系统识别为可用的音频播放设备之一,则可以通过枚举所有可能的音频输入端口找到对应的描述符,并将其设定为目标输入装置[^1]: ```cpp #include <QAudioDeviceInfo> #include <QAudioFormat> #include <QIODevice> // 枚举所有的音频输入设备信息列表 const QList<QAudioDeviceInfo> availableDevices = QAudioDeviceInfo::availableDevices(QAudio::AudioInput); for (const auto& deviceInfo : availableDevices){ qDebug() << "Available Audio Input Device:" << deviceInfo.deviceName(); } ``` 一旦确认了目标设备的信息之后,就可以按照如下方式实例化`QAudioInput`对象并将选定的音频输入设备应用上去: ```cpp // 创建自定义格式(可选) QAudioFormat format; format.setSampleRate(48000); // 设置采样率 format.setChannelCount(2); // 双声道 format.setSampleSize(16); // 每样本位数 format.setCodec("audio/pcm"); // 编解码器类型 format.setByteOrder(QAudioFormat::LittleEndian); format.setSampleType(QAudioFormat::SignedInt); if (!QAudioDeviceInfo::isFormatSupported(format)){ qWarning()<<"Default Format Not Supported"; } // 获取默认输入设备或根据名称查找特定设备 QString targetDeviceName = "Headphones"; // 这里应替换为你实际想要匹配的名字字符串 bool foundTargetDevice = false; foreach(const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioInput)) { if(deviceInfo.deviceName().contains(targetDeviceName)) { audioInput = new QAudioInput(deviceInfo, this); foundTargetDevice=true; break; } } if(!foundTargetDevice) { audioInput=new QAudioInput(QAudioDeviceInfo::defaultInputDevice(),this); } // 开始接收音频数据前准备容器 QBuffer* buffer = new QBuffer(this); buffer->open(QIODevice::WriteOnly | QIODevice::Append); // 将缓冲区连接到QAudioInput以开始记录过程 audioInput->start(buffer); ``` 上述代码片段展示了如何遍历当前系统的音频输入选项,并尝试定位名为“Headphones”的设备作为录音源;如果未能成功找到该命名模式下的任何条目,则退回到采用系统预设的主要麦克风或者其他形式的标准输入接口进行操作。此外还设置了基本的PCM编码参数以便更好地适应大多数应用场景的要求。 值得注意的是,在某些情况下,耳机会被视作回放而非录入组件,这取决于具体硬件设计及其驱动支持情况。因此,若发现预期外的行为,建议查阅相关文档了解更详细的配置细节或者考虑利用其他第三方库如PortAudio等提供更为灵活多样的解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值