1、配置工作
如果要用multimedia,请首先去安装LAV解码器 http://forum.doom9.org/showthread.php?t=156191 不安装无法使用该模块
#视频播放需要pro文件加入以下模块
QT += multimedia
QT += multimediawidgets
//添加以下头文件
#include <QMainWindow>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QMediaPlaylist>
若使用ui编程,先拖入一个QWidget,然后将其提升为QVideoWidget (直接在“提升的类名称”处填写,可以自动搜索到对应头文件的)
2、编程填坑
//MainWindow类中添加成员
QMediaPlayer *pMediaPlayer;
QMediaPlaylist *pMediaPlaylist;
//MainWindow构造函数中添加
ui->widget_video->setAspectRatioMode(Qt::IgnoreAspectRatio); //不可少!!否则可能播放没反应
//ui->widget_video->setFullScreen(true); //不可轻易用,可能导致工具栏菜单栏消失
pMediaPlayer = new QMediaPlayer(this);
pMediaPlaylist = new QMediaPlaylist(pMediaPlayer);
pMediaPlayer->setVideoOutput(ui->widget_video); //ui->widget_video为刚刚添加并提升的部件
最大的坑是setAspectRatioMode(Qt::IgnoreAspectRatio); 不可少!!否则可能播放没反应
//在控制播放的按钮中添加
pMediaPlaylist->clear();
pMediaPlaylist->addMedia(QUrl::fromLocalFile("D:/a.mp4")); //注意路径,此为大坑
pMediaPlaylist->addMedia(QUrl::fromLocalFile("F:/123/src/b.mp4"));
pMediaPlaylist->setCurrentIndex(0);
pMediaPlayer->setPlaylist(pMediaPlaylist);
pMediaPlayer->play();
解决方案:
1、QT播放视频没有反应,没有设置setAspectRatioMode(Qt::IgnoreAspectRatio);
2、QT无法播放视频 DirectShowPlayerService错误,需要下载安装 LAV 解码器,
3、QT播放视频提示地址错误 DirectShowPlayerService::doSetUrlSource(class QMutexLocker *)),未填写正确路径,不会写路径的可以跳转到 [填坑]QT中路径如何写 https://blog.csdn.net/qq_20515461/article/details/88092980