版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Qt6.2/C++程序设计与桌面应用开发21世纪高等学校计算机类课程创新规划教材–微课视频版教材目录第1章初识Qt框架第2章Qt开发基础第3章界面设计组件第4章主框架窗口第5章对话框设计第6章事件系统第7章文件与数据库第8章模型/视图结构第9章图形绘制第10章多媒体编程第11章网络编程第12章进程与线程教材目录第10章多媒体编程10.1Qt多媒体简介10.2音频处理10.3视频播放10.4视频操作10.1Qt多媒体简介Qt中的多媒体支持是由Qt的多媒体模块(QtMultimedia)来提供的。通过Qt多媒体模块所提供的众多功能不同的类,应用程序就可以轻松利用操作系统所提供的多媒体功能,如媒体播放和摄像设备的使用等,来实现应用程序自身的多媒体功能。10.1.1Qt多媒体功能在Qt6.2中,可以实现的多媒体功能主要有:(1)访问原始音频设备进行输入或输出;(2)低延迟播放音效文件,如*.wav等;(3)播放存放在播放列表中的被压缩的音频和视频文件,如*.mp3、*.mp4等;(4)录制声音并压制文件;(5)使用摄像设备进行预览、拍摄和视频录制;(6)将音频文件解码到内存进行处理。Qt应用程序的多媒体功能,通过QtMultimedia和QtMultimediaWidgets两个模块提供的类来实现。要在Qt应用程序中实现多媒体功能,需要在项目文件中添加如下语句:
Qt+=multimedia如果在项目中使用视频处理功能,还需要同时加入下面的语句:
Qt+=multimediawidgets以便使用QVideoWidget
或QGraphicsVideoItem
类来进行视频的播放。10.1.2Qt多媒体模块Qt的多媒体模块是以附加模块的形式提供的,分为QtMultimedia和QtMultimediaWidgets两个子模块。QtMultimedia子模块提供了一些底层多媒体功能,比如音频的采集和回放、频谱分析、视频的处理等。与Qt5相比较,Qt6.2的Multimedia模块发生了较大的变化,其架构及功能都得到了很好的优化。Qt6.2的QtMultimedia模块类及功能如下表所示。10.2音频处理Qt对音频的处理主要包括音频的输入与输出。音频的输出就是将音频输出到音频播放设备,播放音频文件;音频的输入就是音频数据的采集,也就是声音的录制操作。10.2.1相关Qt类Qt的多媒体模块提供了一系列的音频类,这些类提供了大量的低级和高级方法,来实现音频的输入、输出和处理等多媒体应用功能。这些类主要有:QAudioDevice、QMediaDevices、QaudioInput、QAudioOutput、QAudioFormat、QMediaFormat、QAudioSink、QAudioSource、QMediaPlayer、QMediaRecorder和QSoundEffect等。1、QAudioDevice类该类用于描述音频设备,其部分成员函数及功能如表10.2所示。下面是一段简单的示例代码:2、QAudioOutput类该类用于描述可以与QMediaPlayer
或QMediaCaptureSession
一起使用的音频输出通道。可以使用它选择要使用的物理输出设备、使通道静音或者更改通道的音量等。其部分成员函数及功能如表10.3所示。下面是一段简单的示例代码:构建并运行上述示例代码,程序会播放audio.mp3音频文件。注意需要将audio.mp3音频文件放置在项目的构建目录里。3、QAudioInput类该类用于描述可以与QMediaCaptureSession
一起使用的输入通道。它允许选择要使用的物理输入设备、静音通道和更改通道的音量。QAudioInput类的成员函数及信号函数与QAudioOutput类基本类似,参见表10.3所示。下面给出一段简单的示例代码:构建并运行上述示例代码项目,程序会在电脑的“音乐”目录下生成一个名为“test.m4a”的音频文件,用播放软件播放该文件进行测试。4、QAudioSource类该类用于自定义QAudioDevice
设备,其部分成员函数及功能如表10.4所示。下面是一段简单的示例代码:上述示例代码运行后,会在f:\temp子目录中创建一个名为test.raw的音频文件。5、QAudioFormat类QAudioFormat类对象用于设置音频格式。该类有3个公有属性,即:AudioChannelPosition、ChannelConfig和SampleFormat,分别用于表示通道位置、通道配置和采样格式。其取值如下:10.2.2音频播放在Qt中,音频的播放可以使用多种方式。1、使用QSoundEffect类QSoundEffect类以低延迟方式播放未压缩的音频文件(通常为WAV文件);特别适用于响应用户操作的“反馈”类型声音,例如虚拟键盘声音、弹出对话框的正反馈或负反馈或游戏声音等。【例10.1】使用QSoundEffect类播放音频。(1)启动QtCreator集成开发环境,创建一个名为examp10_1的Qt应用程序。程序主窗口基类设置为QWidget。(2)双击项目中的界面文件widget.ui,打开QtDesigner界面设计工具,设计如图10.2所示的程序主窗口界面。其中,“播放”和“停止”按钮的对象名称分别是playBtn和stopBtn。(3)为程序主窗口中的2个按钮添加clicked()信号槽函数,分别为:
voidon_playBtn_clicked();
voidon_stopBtn_clicked();(4)打开项目文件examp10_1.pro,添加如下代码,将Qt的多媒体模块引入到项目中。
QT+=multimedia(5)打开widget.h文件,添加一个名为effect的QSoundEffect对象指针,并添加QSoundEffect类的前导声明。代码如下阴影部分所示。(6)打开widget.cpp文件,在Widget类的构造函数中添加如下代码。(7)在按钮的槽函数中添加代码,如下所示。(8)构建并运行程序。2、使用QAudioSink类QAudioSink类提供了一个接口,用于将音频数据发送到音频输出设备。其部分成员函数及功能如表10.7所示。【例10.2】使用QAudioSink类播放音频。(1)启动QtCreator集成开发环境,创建一个名为examp10_2的Qt应用程序。程序主窗口基类设置为QWidget。(2)双击项目中的界面文件widget.ui,打开QtDesigner界面设计工具,设计如图10.3所示的程序主窗口界面。(3)打开项目文件examp10_2.pro,添加如下代码,将Qt的多媒体模块引入到项目中。
QT+=multimedia(4)在widget.h文件中添加代码,声明Widget类的成员变量及成员函数。下面是部分代码。(5)在widget.cpp文件中添加代码,实现程序功能。下面是部分代码。(6)构建并运行程序。3、使用QMediaPlayer类QMediaPlayer类用于播放媒体文件,包括音频与视频。该类是一个高级媒体播放类,可以使用它来播放视频媒体文件中的音频。其部分成员函数及功能如表10.8所示。【例10.3】使用QMediaPlayer类播放音频。(1)启动QtCreator集成开发环境,创建一个名为examp10_3的Qt应用程序。程序主窗口基类设置为QWidget。(2)双击项目中的界面文件widget.ui,打开QtDesigner界面设计工具,设计如图10.5所示的程序主窗口界面。(3)打开项目文件examp10_3.pro,添加如下代码,将Qt的多媒体模块引入到项目中。QT+=multimedia(4)在widget.h文件中添加代码,声明Widget类的成员变量及成员函数。下面是部分代码。(5)在widget.cpp文件中添加代码,实现程序功能。下面是部分代码。(6)构建并运行程序。10.2.3音频输入在Qt中,音频输入一般使用QMediaRecorder类来实现。QMediaRecorder类是高层次的实现,输入的音频数据直接保存为文件。QMediaRecorder类
是用于编码和记录QMediaCaptureSession
中生成的媒体数据的类。可以实现音频的录制。其部分成员函数及功能如表10.9所示。【例10.4】示例QMediaRecorder类的简单使用。(1)启动QtCreator集成开发环境,创建一个名为examp10_4的Qt应用程序。程序主窗口基类设置为QWidget。(2)双击项目中的界面文件widget.ui,打开QtDesigner界面设计工具,设计如图10.6所示的程序主窗口界面。其中“录音”和“暂停”按钮为QPushButton对象,对象名分别为recordButton和pauseButton。(3)打开项目文件examp10_4.pro,添加如下代码,将Qt的多媒体模块引入到项目中。QT+=multimedia(4)在widget.h文件中添加代码,声明Widget类的成员变量及成员函数。下面是部分代码。(5)在widget.cpp文件中添加代码,实现程序功能。下面是部分代码。(6)构建并运行程序。10.3视频播放在Qt中播放视频一般使用QMediaPlayer类来完成,该类可以进行视频文件的解码。Qt提供了QVideoWidget和QGraphicsVideoItem
两种视频显示组件。也可以从这两个类继承,来自定义个性化的视频显示组件。10.3.1相关Qt类QtMultimedia模块提供了用于播放和操作视频数据的高级和低级C++类,主要有:QMediaCaptureSession、QMediaPlayer、QMediaRecorder、QVideoFrame、QVideoFrameFormat、QVideoSink和QVideoWidget
等。视频播放涉及到媒体播放器QMediaPlayer类,以及显示组件类QVideoWidget
和QGraphicsVideoItem1、QVideoWidget类QVideoWidget类是一个用于显示媒体对象生成视频或图像的界面组件,若将其附加到QMediaPlayer或QCamera对象上,可以显示这些媒体对象生成的视频或图像。该类包含在QtMultimediaWidgets模块内,使用时需要在项目的配置文件中添加如下语句:
QT+=multimediawidgets将其加载到项目中。QVideoWidget类继承自QWidget,拥有众多的属性及函数。与其父类QWidget相比较,该类增加了2个属性,它们是:Qt::AspectRatioModeaspectRatioMode;和boolfullScreen;其中,aspectRatioMode表示屏幕的纵横比;fullScreen表示全屏属性。与上述2个新增属性相对应,添加了2个公有成员函数,如下所示:Qt::AspectRatioModeaspectRatioMode()constboolisFullScreen()const分别用于获取屏幕纵横比和判断是否全屏。与2个新增属性相对应,又添加了2个信号函数:voidaspectRatioModeChanged(Qt::AspectRatioModemode)voidfullScreenChanged(boolfullScreen)前者当屏幕纵横比发生变化时发射,后者当全屏状态发生改变时发射。QVideoWidget类的使用非常简单,只需要将其对象与媒体播放器关联,并显示组件即可。下面是一段示例代码。2、QGraphicsVideoItem类QGraphicsVideoItem类提供一个图形项,用于显示QMediaPlayer或Qcamera生成的视频。该类继承自QGraphicsObject类,是适用于Graphics/View(图形/视图)模式的图形显示组件。在使用QGraphicsVideoItem显示视频时,可以在显示场景中和其他图形组件同时显示,也可以使用该类的放大、缩小、拖动和旋转等功能。QGraphicsVideoItem类的继承关系如下图所示:10.3.2视频播放在Qt应用程序中播放视频非常容易,只需要将媒体播放器对象与视频显示组件进行关联即可。1、使用QVideoWidget显示组件下面的实例使用QMediaPlayer和QVideoWidget实现视频的播放。【例10.5】编写一个Qt应用程序,示例在QVideoWidget
上播放视频。(1)启动QtCreator集成开发环境,创建一个名为examp10_5的Qt应用程序。程序主窗口基类设置为QWidget。(2)双击项目中的界面文件widget.ui,打开QtDesigner界面设计工具,设计如上图所示的程序主窗口界面。(3)打开项目文件examp10_5.pro,添加如下代码,将Qt的多媒体模块引入到项目中。QT+=multimediaQT+=multimediawidgets(4)在widget.h文件中添加代码,声明Widget类的成员变量及成员函数。下面是部分代码。(5)在widget.cpp文件中添加代码,实现程序功能。下面是部分代码。(6)构建并运行程序。2、使用QGraphicsVideoItem显示组件下面的实例使用QMediaPlayer
和QGraphicsVideoItem
实现视频的播放。【例10.6】编写程序,示例在QGraphicsVideoItem
上播放视频。(1)启动QtCreator集成开发环境,创建一个名为examp10_6的Qt应用程序。程序主窗口基类设置为QWidget。(2)双击项目中的界面文件widget.ui,打开QtDesigner界面设计工具,设计如图10.10所示的程序主窗口界面。(3)打开项目文件examp10_6.pro,添加如下代码,将Qt的多媒体模块引入到项目中。QT+=multimediaQT+=multimediawidgets(4)在widget.h文件中添加代码,声明Widget类的成员变量及成员函数。下面是部分代码。(5)在widget.cpp文件中添加代码,实现程序功能。下面是部分代码。(6)构建并运行程序。QtMultimedia模块提供了几个用于控制照相设备的类,通过它们可以进行照相设备信息的获取、静态图像的拍摄以及视频的录制等操作。10.4视频操作10.4.1相关Qt类在Qt中对照相设备操作涉及到很多的类,其中主要有:QCamera、QCameraDevice、QCameraFormat、QImageCapture、QMediaCaptureSession
和QMediaRecorder等这些类的功能如表10.1所示。1、QCamera类QCamera类为系统的照相(或摄像)设备提供接口,可以在QMediaCaptureSession中用于视频的录制和图像的拍摄。其部分成员函数及功能如表10.10所示。下面是一段QCamera类应用的简单示例代码:2、QCameraDevice类QCamera是用来控制照相设备的类,而照相设备的相关信息则是用QCameraDevice类来表示的。QCameraDevice
表示物理相机设备及其属性。QCameraDevice类的部分成员函数及功能如表10.12所示。下面是几个使用QCameraDevice类的示例代码片断:3、QCameraFormat类QCameraFormat类用于描述相机设备所支持的视频格式。包括像素格式、分辨率和帧速率范围。可以从QCameraDevice
查询QCameraFormat
对象,从而获取支持的视频格式集。QCameraFormat类的部分成员函数及功能如表10.13所示。4、QImageCapture类QImageCapture类用于录制媒体内容。该类是一个高级图像录制类,一般不单独使用,而是用于访问其他媒体对象(如QCamera)的媒体录制功能QImageCapture类的部分成员函数及功能如表10.14所示。10.4.2设备查询系统中的照相(或摄像)设备是用QCameraDevice类的对象来表示的。若要查询照相设备的相关信息,只需要使用QCameraDevice类的对象调用其成员函数即可。下面是一段查询照相设备信息的示例代码:10.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电池制造中的人力资源管理与招聘培训考核试卷
- 海水淡化处理中的关键装备与材料考核试卷
- 植物油加工中的产品研发与创新考核试卷
- 仪器仪表制造业的品牌推广与传播考核试卷
- 区块链在教育中的应用考核试卷
- 春节团圆安全生产的领航者考核试卷
- DB11∕T 1767-2020 再生水利用指南 第1部分:工业
- 黄色梅花课件教学课件
- 谈心交流课件教学课件
- 淮阴工学院《理财规划》2022-2023学年第一学期期末试卷
- 船舶租赁尽职调查
- 统编教学小学语文课外阅读《细菌世界历险记》导读课课件
- 植物生理学-植物的逆境生理
- 【课件】比的基本性质
- 小学英语人教新起点五年级上册Unit3Animalsunit3storytime
- 2023年江苏省淮安市中考化学试卷
- 医疗质量管理与持续改进工作记录
- 小学英语名师工作室工作计划2篇
- 中国旅游嘉兴风土人情城市介绍旅游攻略PPT图文课件
- 出口退税培训课件
- 校外培训机构消防演练方案(精选10篇)
评论
0/150
提交评论