若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78651732
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究

目录

需求

原理

相关博客

Demo

效果图

关键操作

源代码


Qt开发专栏:实用技巧(点击传送门)

Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件

需求

做软件时,点击进入界面需要播放一段视频,该视频的格式可兼容swf、rmvb、mpg、mp4等视频文件。

原理

使用QMediaPlayer播放rmvb、mpg、mp4格式

(QMediaplayer具体操作细节和疑问参照:http://blog.csdn.net/qq21497936/article/details/78643466)

使用windows Media Player组件播放.swf格式

(对于具体对com的介绍和操作方式以及qt如何使用,将会在后续详细解说,尽请期待。。。)

相关博客

《Qt实用技巧:视频播放器控件(不依赖系统编解码)》

《Qt实用技巧:使用OpenCV库操作摄像头拍照、调节参数和视频录制》

《Qt实用技巧:使用OpenCV库的视频播放器(支持播放器操作,如暂停、恢复、停止、时间、进度条拽托等)》

《Qt实用技巧:使用QMediaPlayer播放mp4文件》

《Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件》

Demo

Demo源码下载途径:http://download.csdn.net/download/qq21497936/10135478

效果图

播放.mp4

播放.swf

关键操作

组件初始化操作

    // 初始化QAxWidget控件框架相关_pAxWidget = new QAxWidget(this);_pAxWidget->setObjectName(QString::fromUtf8("axWidget"));_pAxWidget->setProperty("geometry", QVariant(QRect(0,0,1024,768)));// 绑定控件,下面使用UUID,共4种方式:UUID; Control's class name; Control's full name; from afile_pAxWidget->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));

组件窗口大小跟随窗口

void MainWindow::resizeEvent(QResizeEvent *)
{// 更新_pAxWidget内部控件的窗口持续大小_pAxWidget->setProperty("geometry", QVariant(_pAxWidget->rect()));
}

源代码

工程文件.pro额外添加

QT += multimedia
QT += multimediawidgets
QT += axcontainer

头文件 mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QMediaPlaylist>
#include <QAxWidget>
#include <QResizeEvent>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();protected:void resizeEvent(QResizeEvent *);private slots:void btnClicked();private:Ui::MainWindow *ui;QAxWidget * _pAxWidget;QVideoWidget * _pVideoWidget;QMediaPlayer * _pMediaPlayer;QMediaPlaylist * _pMediaPlaylist;
};#endif // MAINWINDOW_H

源码文件 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"#include <QFileDialog>
#include <QDebug>
#include <QAxWidget>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);// 初始化QAxWidget控件框架相关_pAxWidget = new QAxWidget(this);_pAxWidget->setObjectName(QString::fromUtf8("axWidget"));_pAxWidget->setProperty("geometry", QVariant(QRect(0,0,1024,768)));// 绑定控件,下面使用UUID,共4种方式:UUID; Control's class name; Control's full name; from afile_pAxWidget->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));_pAxWidget->hide();// 初始化QMediaPlayer框架相关_pVideoWidget = new QVideoWidget(this);_pMediaPlayer = new QMediaPlayer(this);_pMediaPlaylist = new QMediaPlaylist();_pMediaPlayer->setVideoOutput(_pVideoWidget);QVBoxLayout * pLayout = new QVBoxLayout();QHBoxLayout * pLayout2 = new QHBoxLayout();QPushButton * pPushButton = new QPushButton();pPushButton->setText("打开播放文件");connect(pPushButton, SIGNAL(clicked()), this, SLOT(btnClicked()));pLayout2->addStretch(1);pLayout2->addWidget(pPushButton);// 添加到总体布局pLayout->addWidget(_pAxWidget, 1);pLayout->addWidget(_pVideoWidget, 1);pLayout->addLayout(pLayout2);ui->centralWidget->setLayout(pLayout);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::resizeEvent(QResizeEvent *)
{// 更新_pAxWidget内部控件的窗口持续大小_pAxWidget->setProperty("geometry", QVariant(_pAxWidget->rect()));
}void MainWindow::btnClicked()
{QString path = QFileDialog::getOpenFileName(this, "打开播放文件", ".", "所有文件(*.*)");if(path.isEmpty())return;// 目前只试过这几种格式,window Media Player(window自带播放器) 可播放的格式,都可以使用 _pAxWidget(com组件)播放if (path.right(4)==".swf"|| path.right(5)==".rmvb"|| path.right(4)==".mpg"|| path.right(4)==".mp4"){if(path.right(4)==".swf"){_pAxWidget->dynamicCall("LoadMovie(int,const QString&)", 0, path);_pAxWidget->dynamicCall("Loop",false);_pAxWidget->show();_pVideoWidget->hide();}else{_pMediaPlaylist->clear();_pMediaPlaylist->addMedia(QUrl::fromLocalFile(path));_pMediaPlaylist->setCurrentIndex(0);_pMediaPlayer->setPlaylist(_pMediaPlaylist);_pMediaPlayer->play();_pVideoWidget->show();_pAxWidget->hide();}}
}

原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78651732

Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件相关推荐

  1. Qt实用技巧:Qt窗口置顶

    若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子Qt C++ Linux Arm_长沙红胖子_CSDN博客-Qt开发,图形图像处理,OpenCV图像处理领域博主 原博主博客导航:红胖子( ...

  2. Qt实用技巧:VS2017编写纯C库以及使用Qt调用C库方法

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  3. Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)

    若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子Qt的博客_CSDN博客-Qt开发,图形图像处理,OpenCV图像处理领域博主 原博主博客导航:红胖子网络科技博文大全:开发技术集合(包含 ...

  4. Windows自带的播放器Media Player实现快进

    1.如何在Windows自带的播放器Media Player上实现快进 操作流程 使用Media Player打开视频 -> 右击选择enhancements -> 选择Play spee ...

  5. C#(Winform)程序无法使用Windows Media Player 组件播放视频文件

    如果你的C#(Winform)程序无法使用Windows Media Player 组件播放视频文件(一旦点击播放立马程序闪退,但可以播放音频文件),请按照下面图例设置) 1.桌面右击鼠标找到 独立显 ...

  6. Qt实用技巧:使用Qt加载超大图片的耗时测试

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  7. Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/124986234 红胖子(红模仿)的博文大全:开发技术集 ...

  8. Qt实用技巧:实用掩码限制QLineEdit只能输入规定长度的数字、字母和字符

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113030404 长期持续带来更多项目与技术分 ...

  9. Qt实用技巧:QLineEdit限制只能输入Ip地址,且一直显示ip地址分段的“.”

    若该文为原创文章,未经允许不得转载 原博主博客地址::http://blog.csdn.net/qq21497936 原博主博客导航:http://blog.csdn.net/qq21497936/a ...

最新文章

  1. 2018/8/24阅读文献 A Unified Model for Multi-Objective Evolutionary Algorithms with Elitism
  2. “照骗”难逃Adobe的火眼金睛——用机器学习让P图无所遁形
  3. 在线作图丨数据降维方法⑥——消除趋势对应分析(Detrended correspondence analysis, DCA)
  4. as cast float server sql_SQL-Server(五)T-SQL语言
  5. 让你的照片更鲜艳------hsv拉伸
  6. if python 判断函数返回值_Python函数的返回值和作用域
  7. 编程语言对比 命名空间
  8. 原生node写一个静态资源服务器
  9. file does not exist 阿里云OSS图片上传遇到的问题
  10. 查看硬件配置信息 lshw
  11. python爬虫做灰产_python爬虫
  12. 微信开发者工具的使用和各个文件的作用
  13. pyltp依存句法分析_依存句法分析 python pyltp实现
  14. Unterminated regular expression 和正则表达式
  15. 被谢耳朵一直嘲笑的MIT,这次发明了黑镜中的“恐怖机器”
  16. linux操作系下RAR的使用
  17. Proteus与Keil联调 ARM STM32流水灯
  18. C#getPixel和内存法读取灰度图信息
  19. TGA图像文件格式解析
  20. SpringBoot+vue大学生就业服务平台

热门文章

  1. 新松机器人袁_新松机器人有多大成长空间?
  2. 未来交通最大的阻碍就是人类
  3. xtrabackup备份(全备,增备)
  4. CIMCAI intelligent railway logistics world leading container AI
  5. [项目过程中所遇到的各种问题记录]编辑器篇——FCKeditor相关知识及各种常见使用问题...
  6. PTA:7-10 深入虎穴 (25 分)
  7. bzoj1296【SCOI2009】粉刷匠
  8. 开荒手册3——构思一篇小论文
  9. K8S实战部署系列-K3S v1.22.5+k3s1(CentOS7.9)
  10. 你刚吃的兰州牛肉面_背后就藏着大数据