QT使用QMediaPlayer + QVideoWidget播放视频文件
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
目录
环境:
QT版本:5.6.2
开发环境:VS2013
系统版本:windows 7 64bit
前言
我们需要用QT播放视频,如制作一个视频播放器等。
1.代码实现
1.1 pro添加
QT += multimedia multimediawidgets
1.2 头文件添加
//要包含下面的两个文件,必须在.pro文件中添加 QT += multimedia multimediawidgets
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QMediaPlaylist>
1.3 代码实现
QWidget *widget = new QWidget;
QVBoxLayout *layout = new QVBoxLayout;
QMediaPlayer* player = new QMediaPlayer;
QVideoWidget* videoWidget = new QVideoWidget;
QMediaPlaylist* playlist=new QMediaPlaylist;
videoWidget->setAspectRatioMode(Qt::IgnoreAspectRatio);
videoWidget->setFullScreen(true);
layout->addWidget(videoWidget);
widget->setLayout(layout);
playlist->clear();
playlist->addMedia(QUrl::fromLocalFile("C:\\a.mp4"));
player->setPlaylist(playlist);
QFile file("C:\\a.mp4");
if(!file.open(QIODevice::ReadOnly))
qDebug() << "Could not open file";
player->setVideoOutput(videoWidget);
player->setPlaylist(playlist);
widget->showFullScreen();
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,就可以解决运行出错问题
解决方法:
LAVFilters论坛
LAVFilters下载
Reference:
http://doc.qt.io/qt-5/qtmultimedia-index.html
https://github.com/qyvlik/Flat.qml/issues/4
觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033