1 前言
说完网络编程后,现在也应该来到媒体库的使用了,一般媒体库会结合网络编程使用,比如从网上拉取音频/视频数据,然后通过媒体库来进行播放,编码,压缩等相关功能,而Qt已经内置好了这些相关的媒体库,一般需求都用的到,除非需求很特殊就推荐自己编译一些第三方的媒体库,例如FFmpeg 库,或者使用基于FFmpeg的现成VLC第三方播放器等,好了,废话不多说,进入正题,首先介绍Qt媒体库有哪些花样,是什么形态的,又如何使用了?本章只做概念介绍,具体实例代码等均在后节,所以本节篇幅较短
公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。
公众号:Qt入门和进阶,专门介绍Qt/C++相关知识点学习,帮助Qt开发者更好的深入学习Qt。多位Qt元婴期大神,一步步带你从入门到进阶,走上财务自由之路。
官方店:https://shop114595942.taobao.com//
2 Qt多媒体模块功能概述
Qt多媒体模块提供了很多类,还为音频和视频播放、录音、摄像头拍照和录像等提供支持,甚至还提供数字收音机的支持。可以实现如下的一-些功能:
- 访问原始音频设备进行输入或输出;
- 低延迟播放音效文件,如WAV文件;
- 使用播;放列表播放压缩的音频和视频文件,如mp3、wmv等;
- 录制声音并且压制文件;
- 使用摄像头进行预览、拍照和视频录制;
- 音频文件解码到内存进行处理;
- 录制音频或视频时,访问其视频帧或音频缓冲区;
- 数字广播调谐和收听。
要在C++项目中使用Qt多媒体模块,需要在项目配置文件中添加如下一行语句:
Qt += multimedia
如果在项目中使用视频播放功能,还需要加入下面的一行,以使用 QVideoWidget 或QGraphicsVideoItem 进行视频播放。
Qt += multimediawidgets
3 类介绍
Qt多媒体模块包括多个类,下表是一些典型的多媒体应用所需要用到的主要的类。
应用功能 | 用到的类 |
---|---|
播放压缩音频(MP3、AAC等) | QMediaPlayer, QMediaPlaylist |
播放音效文件(WAV文件) | QSoundEffect,QSound |
播放低延迟的音频 | QAudioOutput |
访问原始音频输入数据 | QAudioInput |
录制编码的音频数据 | QAudioRecorder |
允许解码音频 | QAudioDecoder |
音频编码器设置集 | QAudioEncoderSettings |
发现音频设备 | QAudioDeviceInfo |
监控音频正在播放或录制 | QAudioProbe |
视频播放 | QMediaPlayer, QVideoWidget,QGraphicsVideoItem |
视频处理 | QMediaPlayer,QVideoFrame, QAbstractVideoSurface |
摄像头取景框 | QCamera,QVideoWidget, QGraphicsVideoItem |
取景框预览处理 | QCamera,QAbstractVideoSurface, QVideoFrame |
摄像头拍照 | QCamera, QCameralmageCapture |
摄像头录像 | QCamera,QMediaRecorder |
收听数字广播 | QRadioTuner,QRadioData |
4 下节预告
利用Qt多媒体模块提供的各种类,可以实现一般的音频、视频的输入和输出。这在一些实际应用中是需要的,如语音识别需要录制音频并对音频数据进行处理,车牌自动识别需要先拍照然后进行图像处理。
本结将介绍音频的播放和录制、视频播放、摄像头拍照与录像等功能的实现。数字广播需要具有数字调频功能的硬件设备,一般用户没有这样的硬件设备,所以就不予过多介绍了。