Qt文档阅读笔记-Qt5录音功能的实现
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt文档阅读笔记-Qt5录音功能的实现相关的知识,希望对你有一定的参考价值。
目录
基本概念
首先是Qt5中的新特性:
Qt5中关于多媒体的新特性:
1. QML API接口;
2. 能同时使用MediaPlayer和VideoOutput;
3. QML Torch类;
4. 增加了QAudioRecorder这一新类;
5. 更加强大的QAudioOutput和QAudioInput;
6. 更多的实例和文档;
7. 把QSound类从Qt CUI模块移到了Qt Multimedia模块;
8. QSoundEffect不仅支持C++,还支持QML;
9. QRadioData和RadioData也能使用;
10. 优化了各种API以及修补了BUG。
这里还得记录2个类!
QAudioRecorder提供了录音功能,这个是高级多媒体录制类,他是QmediaRecorderder的子类,用法和他差不多
下面是官方的实例:
audioRecorder = new QAudioRecorder;
QAudioEncoderSettings audiosettings;
audioSettings.setCodec("audio/amr");
audioSettings.setQuality(QMultimedia::HighQuality);
audioRecorder->setEncodingSettings(audioSettings);
audioRecorder->setOutputLocation(QUrl::fromLocalFile("test.amr"));
audioRecorder->record();
此外QAudioRecorder还提供了选择audioinput的功能
QStringList inputs = audioRecorder->audioInputs();
QString selectedInput = audioRecorder->defaultAudioInput();
foreach (QString input, inputs)
QString description = audioRecorder->audioInputDescription(input);
// show descriptions to user and allow selection
selectedInput = input;
audioRecorder->setAudioInput(selectedInput);
Audio Recorder Example提供了这个类的详细用法,这个其实本人的例子,就是Audio Recorder Example的关键提提取出来的!!!!
下面来看另外一个类:QAudioEncoderSettings
这个类提供了编码方面的设置。
用这个类去指定QMediaRecorder中相关的设置(因为QAudioRecorder为QMediaRecorder的子类,所有他也可以设置),通过调用setAudioSettings这个函数进行设置!
官方给出的相关代码!
QAudioEncoderSettings audioSettings;
audioSettings.setCodec("audio/mpeg");
audioSettings.setChannelCount(2);
recorder->setAudioSettings(audioSettings);
代码与实例
程序运行截图如下:
录了4-5s的时间(程序里面是5s)
源码如下:
#include <QCoreApplication>
#include <QAudioEncoderSettings>
#include <QUrl>
#include <QAudioRecorder>
#include <QTimer>
#include <QEventLoop>
#include <QDebug>
int main(int argc, char *argv[])
QCoreApplication a(argc, argv);
QAudioRecorder *audioRecorder = new QAudioRecorder;
if(!audioRecorder->setOutputLocation(QUrl::fromLocalFile("E:\\\\Qt2019\\\\multimediaTest\\\\1.wav")))
qDebug() << "文件保存有毒!退出!";
return 0;
QStringList audioInputList = audioRecorder->audioInputs(); //audioInputList[0]为麦克风
QStringList audioCodecsList = audioRecorder->supportedAudioCodecs(); //audioCodecsList[0]为 audio/pcm
audioRecorder->setAudioInput(audioInputList[0]);
QAudioEncoderSettings settings;
settings.setCodec(audioCodecsList[0]);
settings.setSampleRate(16000); //采样率 XXXXXXX
settings.setBitRate(128000);
settings.setQuality(QMultimedia::EncodingQuality(10));
settings.setEncodingMode(QMultimedia::ConstantBitRateEncoding);
audioRecorder->setEncodingSettings(settings, QVideoEncoderSettings());
audioRecorder->record();
qDebug() << "start!";
QEventLoop loop;
QTimer::singleShot(5 * 1000, &loop, SLOT(quit()));
loop.exec();
audioRecorder->stop();
delete audioRecorder;
qDebug() << "over";
return a.exec();
以上是关于Qt文档阅读笔记-Qt5录音功能的实现的主要内容,如果未能解决你的问题,请参考以下文章
使用 gstreamer 在 android 上录制音频(使用 Qt5)
Qt文档阅读笔记-Ping Pong States Example解析