Qt 使用QMediaPlayer + QVideoWidget播放视频文件

环境:
QT版本:5.6.2
开发环境:VS2013
系统版本:windows 7 64bit


前言

我们需要用QT播放视频,如制作一个视频播放器等。

1.代码实现

1.1 pro添加

QT += multimedia multimediawidgets

1.2 头文件添加

1 //要包含下面的两个文件,必须在.pro文件中添加  QT += multimedia  multimediawidgets
2 #include <QMediaPlayer>
3 #include <QVideoWidget>
4 #include <QMediaPlaylist>

1.3 代码实现

 1     QWidget *widget = new QWidget;
 2     QVBoxLayout *layout = new QVBoxLayout;
 3 
 4     QMediaPlayer* player = new QMediaPlayer;
 5     QVideoWidget* videoWidget = new QVideoWidget;
 6     QMediaPlaylist* playlist=new QMediaPlaylist;
 7 
 8     videoWidget->setAspectRatioMode(Qt::IgnoreAspectRatio);
 9     videoWidget->setFullScreen(true);
10 
11     layout->addWidget(videoWidget);
12     widget->setLayout(layout);
13 
14     playlist->clear();
15     playlist->addMedia(QUrl::fromLocalFile("C:\a.mp4"));
16     player->setPlaylist(playlist);
17 
18     QFile file("C:\a.mp4");
19     if(!file.open(QIODevice::ReadOnly))
20         qDebug() << "Could not open file";
21 
22     player->setVideoOutput(videoWidget);
23     player->setPlaylist(playlist);
24 
25     widget->showFullScreen();
26     player->play();

2.效果

3.注意事项
3.1 部署
在其他电脑上部署的时候需要注意包含
a.mediaservice plugin
b.QT5MULTIMEDIA.DLL

QT5NETWORK.DLL
QT5GUI.DLL
QT5CORE.DLL
c.QT5MULTIMEDIAWIDGETS.DLL

QT5MULTIMEDIA.DLL
QT5WIDGETS.DLL
QT5GUI.DLL
QT5CORE.DLL
QT5OPENGL.DLL
3.2 播放无图像
播放无图像,并报错:

DirectShowPlayerService::doRender: Unresolved error code 80040266

原因:
Qt 中的多媒体播放,底层是使用DirectShowPlayerService,所以安装一个DirectShow解码器,例如LAV Filters,就可以解决运行出错问题

原文地址:https://www.cnblogs.com/ybqjymy/p/14656438.html