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 selectionselectedInput = 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/pcmaudioRecorder->setAudioInput(audioInputList[0]);QAudioEncoderSettings settings;settings.setCodec(audioCodecsList[0]);settings.setSampleRate(16000); //采樣率 XXXXXXXsettings.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录音功能的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-JNI中Java与C语言解
- 下一篇: Flask笔记-使用flask-sqla