Qt对音视频的播放和控制、相机拍照、收音机等多媒体应用提供了强大的支持。Qt5使用了全新的Qt Multimedia模块来实现多媒体应用,Qt4用来实现多媒体功能的Phonon模块已经被移除。新的Qt Multimedia模块提供了丰富的接口,使读者可以轻松的使用平台的多媒体功能,例如,进行媒体播放、使用相机和收音机等。该模块分别提供了一组QML类型和一组C++类来处理多媒体内容。
C++中多媒体模块可以实现的功能、对应的示例程序以及需要使用的C++类如下表所示:
| 功能 | 示例 | C++类 |
|---|---|---|
| 播放音效 | QSoundEffect | |
| 播放低延迟音频 | audioinput,spectrum | QAudioOutput |
| 播放编码音频(MP3、AAC) | player | QMediaPlayer |
| 访问原始音频输入数据 | spectrum,audioinput | QAudioInput |
| 录制原始音频输入数据 | audiorecorder | QAudioRecorder |
| 发现原始音频设备 | audiodevices | QAudioDeviceInfo |
| 播放视频 | player | QMediaPlayer、QVideoWidget、QGraphicsVideoItem |
| 处理视频 | QMediaPlayer、QAbstractVideoSurface、QVideoFrame | |
| 收听录音机 | QRadioTuner、QRadioData | |
| 访问相机取景器 | camera | QCamera、QVideoWidget、QGraphicsVideoItem |
| 处理取景器 | QCamera、QAbstractVideoSurface、QVideoFrame | |
| 拍摄照片 | camera | QCamera、QCameraImageCapture |
| 拍摄视频 | camera | QCamera、QMediaRecorder |
Qt的多媒体接口建立在底层平台的多媒体框架之上,这就意味着对于各种编解码器的支持依赖于使用的平台。如果要访问一些平台相关的设置,或者将Qt多媒体接口移植到新的平台,则可以参考Qt帮助中的Multimedia Backend Development文档。
要使用多媒体模块的内容,则需要在.pro项目文件中添加如下代码:
QT += multimedia
播放音频
在Qt中,要想使计算机发出响声,最简单的方法是调用QApplication::beep()静态函数。而Qt Multimedia模块中提供了多个类来实现不同层次的音频输入、输出和处理。
播放压缩音频
Qt中播放一个音频文件(比如MP3歌曲)十分简单,通过使用QMediaPlayer,只需要几行代码即可完成。QMediaPlayer被设计用来进行媒体播放,可以播放音频、视频和网络广播等。使用QMediaPlayer类播放音频的示例如下:
player = new QMediaPlayer;
player->setMedia(QUrl::fromLocalFile("/Users/lcc/Music/The Rain.mp3"));
player->play();
可以看到,当创建QMediaPlayer后,只需要设置媒体源即可进行播放。这里使用了本地的一个MP3文件;若要播放网络歌曲,则只需要将地址修改为QUrl网络地址即可。QMediaPlayer支持的音频文件格式取决于操作系统环境以及用户安装的媒体插件。
低延迟声音效果
QSoundEffect类可以使用一种低延迟方式来播放未压缩的音频文件,如WAV文件,它非常适合播放与用户交互时的音效,如弹出框提示因、虚拟键盘按键音、游戏音效等。如果并不需要低延迟效果,那么最好使用QMediaPlayer来播放音频,因为其支持更多的媒体格式并且占用资源更少。
effect = new QSoundEffect(this);
effect->setSource(QUrl::fromLocalFile("C:/Users/11830/Downloads/Michael Ja

本文介绍Qt多媒体模块的应用,包括音频播放、视频处理、相机操作等功能。详细解释了如何使用QMediaPlayer、QSoundEffect等类播放音频和视频,以及如何利用QVideoWidget控制视频显示。
最低0.47元/天 解锁文章
1870

被折叠的 条评论
为什么被折叠?



