当前位置: 首页 > article >正文

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

一、前言


        前边讲述到了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是管理音频录制和视频录制的类,录制音频时主要用到下面两个函数:


                

http://www.kler.cn/a/281311.html

相关文章:

  • Vue——认识day02
  • Docker部署独立版Milvus向量数据库
  • C# 实现傅里叶变化(DFT)
  • Marked: 一款高效、轻量级且全功能的Markdown解析器
  • 详细分析Ubuntu中的ufw基本知识
  • Linux(云服)安装go
  • CSS3动画——飞行的小精灵
  • kubenetes--资源调度
  • 【Redis】渐进式遍历和数据库管理
  • 主成分分析PCA通用代码(输出world报告)
  • notepad++正则表达式,怎样搜索同时满足两个条件的字符串?
  • 做项目过程中问题小汇总 | vue3 elementplus js
  • nginx反向代理,负载均衡,动静分离
  • 基于yolov8的人员溺水检测告警监控系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • ROS2 CMakeLists.txt package.xml
  • TCP丢失时重发为什么倍增重发等待时间(指数退避)
  • 不同格式和要求情况下,excel文件上传问题
  • 大东山水迎天下 吉品云集新电商 吉林市首届电商节今日启动
  • ComsolMatlab 亥姆霍兹共振消声器传递损失理论解与仿真解
  • OpenAI的GPT-4模型详细介绍:研发能力、应用场景、开发的合作、持续投入