首页 > 编程语言 >C++/Qt 多媒体(续二)

C++/Qt 多媒体(续二)

时间:2024-08-27 15:55:58浏览次数:10  
标签:Qt 示例 续二 void 录制 C++ 设置 QMediaRecorder 音频

一、前言


        前边讲述到了Qt的两项独特的模块编程支持的另一项内容——多媒体编程,上篇文章具体讲述的包括一个QMediaPlayer类的示例代码和一个QSoundEffect类的讲解,而本章将会提供一篇示例代码——《基于QMediaRecorder类的音频录制》。

        对于上篇内容的示例全部代码,可直达远程仓库:https://gitee.com/CN-ZCL/WorkFrom-Qt-by-Cpp.git

        对于上篇内容的讲解,可自行查阅博客:C++/Qt 多媒体(续一)-CSDN博客 

二、录制音频


         QMediaCaptureSession是负责抓取音频和视频的类,它与QMediaRecorder类结合使用就可以通过麦克风等音频输入设备录制音频,并且可以使用各种音频编码算法进行数据压缩,将数据保存为MP3、WMA等格式的音频文件。本章也将提供一个示例进行陈述。

        1、QMediaRecorder类功能的概述

        本章设计一个示例项目,使用QMediaCaptureSession和QMediaRecorder录制音频,示例运行时界面如图所示。 

        使用 QMediaRecorder录音钱,需要先设置一些参数,包括音频编码、文件格式、采样频率、编码模式等,然后指定一个音频数据文件,就可以将录制的音频编码压缩后保存到文件里。

        QMediaRecorder类与录制音频相关的设置函数如下,各函数功能见注释,这些函数的共呢再示例中再具体解释。

void setAudioBitRate(int bitRate)        //设置比特率
void setAudioChannelCount(int channels)  //设置通道数
void setAudioSampleRate(int sampleRate)  //设置采样频率
void setEncodingMode(QMediaRecorder::EncodingMode mode)    //设置编码模式
void setMediaFormat(const QMediaFormat &format)            //设置媒介格式
void setMetaData(const QMediaMetaData &metaData)           //设置元数据
void setOutputLocation(const QUrl &location)               //设置输出文件,可以是本地文件
void setQuality(QMediaRecorder::Quality quality)           //设置录制品质
QMediaRecorder::RecorderState recorderState()              //返回recorder的当前状态
qint64 duration()                                          //返回录制已持续的时间
void pause()                                               //暂停录制
void record()                                              //开始录制
void stop()                                                //停止录制

        QMediaRecorder有几个信号,下面是比较常用的两个,它们的发射时机见注释:

void durationChanged(qint64 duration)    //录制时间变化时
void recorderStateChanged(QMediaRecorder::RecorderState state)    //recorder状态变化时

        QMediaCaptureSession是管理音频录制和视频录制的类,录制音频时主要用到下面两个函数:



标签:Qt,示例,续二,void,录制,C++,设置,QMediaRecorder,音频
From: https://blog.csdn.net/qq_67853786/article/details/141567150

相关文章

  • C++面试基础系列-this指针
    系列文章目录文章目录系列文章目录C++面试基础系列-this指针Overview1.this指针1.1.特性1.2.用法1.3.注意事项2.使用'this'指针的多态类的示例3.在C++中,指针和对象本身有什么区别?关于作者C++面试基础系列-this指针Overview1.this指针在C++中,this指针是一......
  • qt代理QItemDelegate使用
    *-----------------------------------File.h-------------------------------------------------------*#include<QTableView>#include<QItemDelegate>#include<QStandardItemModel>#include<QComboBox>#include<QCheckBox>#include<......
  • c/c++代码流程图生成
    以下介绍2款皆免费1.cxx2flow【github项目】c/c++函数解析为dot然后通过Graphviz渲染项目有附带gui程序可直接生成流程图,但是显示效果缩放不太行,建议解析生成dot后喂给其他基于Graphviz的渲染服务,使用过vscode上面的graphviz-interactive-preview,效果还行,也有在线网页渲染......
  • VScode+QT 无法自动补全代码的解决方法
    问题:没有添加包含的头文件路径,即include文件夹所在位置第一步找到库路径并复制(在qt安装路径中)第二步打开vscode环境配置文件,添加库路径最终效果头文件红色波浪线消失了,并且代码可以完美补全!注意事项请根据自己的来修改。记得把路径的\更换成\\或者用/表示记得在incl......
  • 【编程规范具体案例(基于Qt、微软、谷歌和AUTOSAR C++14 参考)】 C++ 编码规范 之并发篇
    目录标题并发目录12.并发编程规范12.1线程创建与管理规则12.1.1\[必须]明确定义线程的生命周期管理策略12.1.2\[必须]为关键线程设置明确的标识符12.1.3\[必须]在多线程环境中安全地处理异常12.2线程同步规则12.2.1\[必须]使用线程安......
  • Qt5.14.2 操作PostgreSQL 记录
    在Qt5.14.2中操作PostgreSQL数据库.#include<QSqlDatabase>#include<QSqlQuery>#include<QSqlError>#include<QDebug>//初始化数据库连接QSqlDatabasedb=QSqlDatabase::addDatabase("QPSQL");//qDebug()<<"aaaa"......
  • C++与C语言中基础数据类型详解
    目录引言基础数据类型分类实际编程中的应用建议结论引言在C++与C语言的编程世界中,理解并正确使用基础数据类型是每个程序员的必备技能。不同的数据类型在内存中的占用和表示方式直接影响到程序的性能和行为。本文将详细介绍C++与C语言中常见的基础数据类型,探讨它们......
  • [QT]QSharedMemory读写cv::Mat
    1.写入共享内存voidWriteMat(constchar*section,constcv::Mat&img){QSharedMemory*mem=newQSharedMemory();mem->setKey(section);intsize=img.cols*img.rows*img.channels();//cols+rows+channels+data//ifexistreturn......
  • C++ lambda
    文章目录基本语法捕捉列表函数对象与lambda表达式C++的lambda表达式是C++11及以后版本中引入的一种强大的特性,它提供了一种简洁的方式来定义匿名函数对象。Lambda表达式能够捕获其所在作用域中的变量(以值或引用的方式),并允许你在需要函数对象的地方(比如算法库中的函数......
  • C++常见内存错误及其对策
    常见内存错误及其对策目录常见内存错误及其对策内存分配未成功,却使用了它内存分配成功但未初始化内存操作越界内存泄漏释放内存后继续使用规则总结图表示C++学习资料在软件开发过程中,内存管理是至关重要的一环。内存错误不仅会导致程序崩溃,还可能引发安全问题。本文......