linux qt系统播放swf,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

a927d2f8cadc264a8a795b6fd4a38b77.png

播放.swf

665137eca4b11949ef165c79c8a77754.png

关键操作

组件初始化操作

// 初始化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 #include #include #include #include #include namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

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 #include #include #include #include #include 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个视频播放器可以在Ubuntu和Qt下实现,以满足以下功能要求: 1. 打开文件:该播放器应提供用户一个选项来选择要打开的视频文件。可以通过使用文件选择对话框来实现此功能。用户可以通过浏览文件系统并选择所需的视频文件。 2. 播放:实现视频播放功能需要使用Qt的媒体框架(QMultimedia)来加载并播放视频文件播放按钮应该位于播放器的控制界面上,并通过点击该按钮来开始播放视频。在用户点击播放按钮后,应调用播放命令以开始播放选定的视频文件。 3. 暂停:播放器应该提供一个暂停按钮以暂停正在播放的视频。当用户点击暂停按钮时,播放器应该暂停视频播放,并将视频的播放头定位到暂停的位置。这样,当用户再次点击播放按钮时,视频可以从暂停的位置继续播放。 4. 上一首:为了实现上一首的功能,需要实现一个视频播放列表来管理用户选择的视频文件。当用户点击上一首按钮时,播放器应从播放列表中选择上一首视频,并开始播放。如果在播放列表中当前视频已经是第一首,那么播放器应该继续播放最后一首视频。 要实现这些功能,可以使用Qt的多媒体框架以及Qt的GUI库来创建用户界面。在Qt中,我们可以使用QMediaPlayer类来加载和播放视频文件使用QFileDialog类来提供文件选择对话框,以及使用QPushButton类来实现播放、暂停和上一首按钮的功能。同时,可以使用播放列表来管理用户选择的视频文件,并通过添加适当的逻辑进行控制、处理和播放操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值