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

版权声明:本文为itas109原创文章,未经允许不得转载引用或用于商业用途。【http://blog.csdn.net/itas109】【[email protected]】 https://blog.csdn.net/itas109/article/details/83829396

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

猜你喜欢

转载自blog.csdn.net/itas109/article/details/83829396