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

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.mrgr.cn/news/13208.html

相关文章:

  • C++_CH09_循环
  • 免杀笔记 ---> CS特性角度看Veh免杀
  • Ubuntu美化为类Windows风格
  • DataWhale AI夏令营-《李宏毅深度学习教程》笔记-task2
  • Qt:玩转QPainter序列三
  • 内存管理篇-14kmalloc机制实现分析
  • 如何在 Vim 中显示行号
  • 分数规划问题
  • numpy 中的降维与升维
  • 无人机之穿越机基础知识
  • select epoll搭建并发式服务器
  • 高效的时间序列可视化:减少认知负荷获得更清晰的洞察
  • 力扣45.跳跃游戏II
  • WEB开发---使用HTML CSS开发网页实时显示当前日期和时间
  • C\C++ Sqlite3使用详解
  • linux查看系统安装时间命令,找出Linux操作系统(OS)安装日期和时间
  • “random_shuffle”:不是“std”错误的成员
  • Leetcode面试经典150题-5.最长回文子串
  • 0828作业+梳理
  • 【图像去噪】论文复现:代替ReLU!Pytorch实现即插即用激活函数模块xUnit,并插入到DnCNN中实现xDnCNN!