Qt实用技巧:使用QMediaPlayer和Windows自带组件播放swf、rmvb、mpg、mp4等视频文件
若该文为原创文章,未经允许不得转载
原博主博客地址: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等视频文件相关推荐
- Qt实用技巧:Qt窗口置顶
若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子Qt C++ Linux Arm_长沙红胖子_CSDN博客-Qt开发,图形图像处理,OpenCV图像处理领域博主 原博主博客导航:红胖子( ...
- Qt实用技巧:VS2017编写纯C库以及使用Qt调用C库方法
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...
- Qt实用技巧:ubuntu发布程序打包流程(解决插件xcb加载失败)
若该文为原创文章,未经允许不得转载 原博主博客地址:长沙红胖子Qt的博客_CSDN博客-Qt开发,图形图像处理,OpenCV图像处理领域博主 原博主博客导航:红胖子网络科技博文大全:开发技术集合(包含 ...
- Windows自带的播放器Media Player实现快进
1.如何在Windows自带的播放器Media Player上实现快进 操作流程 使用Media Player打开视频 -> 右击选择enhancements -> 选择Play spee ...
- C#(Winform)程序无法使用Windows Media Player 组件播放视频文件
如果你的C#(Winform)程序无法使用Windows Media Player 组件播放视频文件(一旦点击播放立马程序闪退,但可以播放音频文件),请按照下面图例设置) 1.桌面右击鼠标找到 独立显 ...
- Qt实用技巧:使用Qt加载超大图片的耗时测试
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...
- Qt实用技巧:QtCreator编辑区关闭右侧不必要的警告提示
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/124986234 红胖子(红模仿)的博文大全:开发技术集 ...
- Qt实用技巧:实用掩码限制QLineEdit只能输入规定长度的数字、字母和字符
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113030404 长期持续带来更多项目与技术分 ...
- Qt实用技巧:QLineEdit限制只能输入Ip地址,且一直显示ip地址分段的“.”
若该文为原创文章,未经允许不得转载 原博主博客地址::http://blog.csdn.net/qq21497936 原博主博客导航:http://blog.csdn.net/qq21497936/a ...
最新文章
- 2018/8/24阅读文献 A Unified Model for Multi-Objective Evolutionary Algorithms with Elitism
- “照骗”难逃Adobe的火眼金睛——用机器学习让P图无所遁形
- 在线作图丨数据降维方法⑥——消除趋势对应分析(Detrended correspondence analysis, DCA)
- as cast float server sql_SQL-Server(五)T-SQL语言
- 让你的照片更鲜艳------hsv拉伸
- if python 判断函数返回值_Python函数的返回值和作用域
- 编程语言对比 命名空间
- 原生node写一个静态资源服务器
- file does not exist 阿里云OSS图片上传遇到的问题
- 查看硬件配置信息 lshw
- python爬虫做灰产_python爬虫
- 微信开发者工具的使用和各个文件的作用
- pyltp依存句法分析_依存句法分析 python pyltp实现
- Unterminated regular expression 和正则表达式
- 被谢耳朵一直嘲笑的MIT,这次发明了黑镜中的“恐怖机器”
- linux操作系下RAR的使用
- Proteus与Keil联调 ARM STM32流水灯
- C#getPixel和内存法读取灰度图信息
- TGA图像文件格式解析
- SpringBoot+vue大学生就业服务平台
热门文章
- 新松机器人袁_新松机器人有多大成长空间?
- 未来交通最大的阻碍就是人类
- xtrabackup备份(全备,增备)
- CIMCAI intelligent railway logistics world leading container AI
- [项目过程中所遇到的各种问题记录]编辑器篇——FCKeditor相关知识及各种常见使用问题...
- PTA:7-10 深入虎穴 (25 分)
- bzoj1296【SCOI2009】粉刷匠
- 开荒手册3——构思一篇小论文
- K8S实战部署系列-K3S v1.22.5+k3s1(CentOS7.9)
- 你刚吃的兰州牛肉面_背后就藏着大数据