Qt之Multimedia实现视频播放器

Qt中多媒体的实现

Qt对音视频的播放和控制、相机拍摄、收音机等多媒体应用提供了强大的支持。Qt5使用了全新的Qt Multimedia模块来实现多媒体应用,Qt4中用来实现多媒体功能的Phonon模块已经被移除。新的Qt Multimedia模块提供了丰富的接口,可以轻松地使用平台的多媒体功能。例如进行媒体播放、使用相机和收音机等。

Qt的对媒体接口建立在底层平台的多媒体框架之上,这就意味着对于各种编解码器的支持依赖于使用的平台。如果要访问一些平台相关的设置,或者将Qt多媒体接口移植到新的平台,可以参考Qt帮助中的Multimedia Backend Development文档。

要使用多媒体模块的内容,需要在.pro项目文件中添加如下代码

Qt += multimedia

一、mediaplayer

QMediaPlayer集成了底部包括音频输出和音频文件读取等等操作,是一个高层次的,封装好的播放器内核,通过调用它,你可以实现输入任意格式的视频、音频播放,并实现对其播放状态的调整。

下面我们用QMediaPlayer来播放一段音乐

player = new QMediaPlayer;
player->setMedia(QMediaContent(QUrl::fromLocalFile("/*****/test.mp3")));
player->play();

QMediaPlayer中几个重要属性

属性类型说明
durationqint64当前播放媒体对象的持续时间(毫秒)
mediaStatusMediaStatus当前媒体的状态、枚举类型
stateState当前的播放状态,枚举类型
mutedbool是否静音
playlistQMediaPlaylist当前的播放列表
positionqint64保存当前播放的进度(毫秒)
volumeint当前的音量

二、QVideoWidget

QMediaPlayer不仅可以播放音频,还可以播放视频。不过如果要视频在界面上显示出来,还需要其他类进行辅助,比如QVideoWidgetQGraphicsVideoItem或者自定义的类。QVideoWidget继承自QWidget,所有它可以作为一个普通窗口部件进行显示,也可以嵌入到其他窗口中。将QVideoWidget指定为QMediaPlayer的视频输出窗口后,就可以显示播放的视频画面。

而像GIF格式的动画类型,可以使用QMovie播放。

在项目文件的.pro中修改代码如下:

QT += core gui multimedia multimediawidgets
player = new QMediaPlayer(this);
videoWidget = new QVideoWidget(this);
player->setVideoOutput(videoWidget);
player->setMedia(QUrl::fromLocalFile("/******/test.wmv"));
player->play();

属性

属性类型说明
brightnessint亮度
hueint色调
contrastint对比度
fullScreenbool是否全屏
saturation

int

饱和度

三、QMediaPlaylist

QMediaPlaylist是一个列表,它可以保存媒体文件,包括媒体路径等信息,它具有着列表的性质,比如添加删除插入等,但它能做的,比单纯的储存要多得多。设置播放顺序,对播放的控制,保存到本地,从本地读取,都可以很方便地实现。

QMediaPlaylist添加媒体文件可以使用addMedia方法

playlist = new QMediaPlaylist;
playlist->addMedia(QUrl::fromLocalFile("/****/music1.mp3"));
playlist->addMedia(QUrl::fromLocalFile("/****/music2.mp3"));
playlist->addMedia(QUrl::fromLocalFile("/****/music3.mp3"));
playlist->setCurrentIndex(0);
playlist->setPlaybackMode(QMediaPlaylist::Loop);
player->setPlaylist(playlist);

属性

名称枚举值说明
QMediaPlaylist::CurrentItemOnce0单曲播放
QMediaPlaylist::CurrentItemInloop1单曲循环
QMediaPlaylist::Sequential2顺序播放
QMediaPlaylist::Loop3

列表循环

QmediaPlaylist::Random4随机播放

 

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Qt实现视频播放器,您可以使用QMediaPlayer和QVideoWidget。以下是实现视频播放器的步骤: 1. 创建一个QMainWindow并添加一个QVideoWidget作为中心窗口。 2. 创建一个QMediaPlayer对象并设置它的媒体源,如视频文件的路径。 3. 将QMediaPlayer设置为QVideoWidget的媒体对象。 4. 创建一些控件,如播放/暂停按钮,音量滑块等,并将它们添加到主窗口。 5. 将这些控件与QMediaPlayer的相应槽函数连接,例如播放/暂停按钮的单击事件将调用QMediaPlayer的play()或pause()函数。 6. 运行应用程序并测试视频播放器。 以下是一个基本的视频播放器的示例代码: ```c++ #include <QtWidgets/QApplication> #include <QtWidgets/QMainWindow> #include <QtMultimedia/QMediaPlayer> #include <QtMultimediaWidgets/QVideoWidget> #include <QtWidgets/QPushButton> #include <QtWidgets/QSlider> int main(int argc, char *argv[]) { QApplication a(argc, argv); QMainWindow mainWindow; mainWindow.setMinimumSize(640, 480); QVideoWidget videoWidget(&mainWindow); mainWindow.setCentralWidget(&videoWidget); QMediaPlayer mediaPlayer; mediaPlayer.setVideoOutput(&videoWidget); mediaPlayer.setMedia(QUrl::fromLocalFile("myvideo.mp4")); QPushButton playButton("Play", &mainWindow); QPushButton pauseButton("Pause", &mainWindow); QSlider volumeSlider(Qt::Horizontal, &mainWindow); QObject::connect(&playButton, &QPushButton::clicked, [&mediaPlayer]() { mediaPlayer.play(); }); QObject::connect(&pauseButton, &QPushButton::clicked, [&mediaPlayer]() { mediaPlayer.pause(); }); QObject::connect(&volumeSlider, &QSlider::valueChanged, [&mediaPlayer](int value) { mediaPlayer.setVolume(value); }); playButton.move(10, 10); pauseButton.move(90, 10); volumeSlider.move(10, 40); mainWindow.show(); return a.exec(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值