Qt知识回顾(十二)——音视频播放

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

  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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值