我是靠谱客的博主 快乐大米,最近开发中收集的这篇文章主要介绍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录音功能的实现基本概念代码与实例的全部内容,希望文章能够帮你解决Qt文档阅读笔记-Qt5录音功能的实现基本概念代码与实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部