一、前言
前边讲述到了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