Mplayer 嵌入Qt 窗口 制作播放器(嵌入方法)
众所周知 Mplayer 播放有 -wid + 窗口句柄 的指令,可以让Mplayer嵌入指定窗口播放。
因此只有利用该指令就可以让Mplayer在Qt指定的窗口或控件播放视频,
实现平台 Ubuntu 16.04
QWidget 实现方法:
QWidget可以很简单的获取控件的wid ,因此只需要直接执行命令就可以实现嵌入
void MainWindow::on_pushButton_clicked()
{qDebug() << "on touch..." ;play = new QProcess;QString order = QString("mplayer -quiet -slave -x 600 -y 300 -wid %1 %2").arg(/*this->winId()*/ui->label->winId()).arg(ui->label_2->text());qDebug() << order ;play->start(order);
}
只需要小小的简单的办法就可以实现Mplayer播放器的嵌入了
效果
QML 实现方法:
QML 无法简单的获取窗口句柄,因此需要一些小小的办法,
WId *getQmlWid(QObject *QmlObj)
{WId *parent_HWND = new WId;QWindow *QmlWindow=qobject_cast<QWindow *>(QmlObj);//获取qml的窗口*parent_HWND = QmlWindow->winId();qDebug() << "id Get" <<QmlWindow->winId() ;return parent_HWND;
}
通过上述函数可以获取QML窗口的WID,接着只需要
void playerTest::mplayerPlay()
{play = new QProcess;QString order = QString("mplayer -quiet -slave -x 600 -y 300 -wid %1 test.mp4").arg(*this->parent_HWND);qDebug() << order ;play->start(order);
}
照样执行Mplayer播放指令就行了,但是QML 目前我还没能实现获取控件的操作句柄,因此,Mplayer 嵌入QML 是直接嵌入整个窗口,如果在该窗口上显示控件的话,会出现控件和视频画面抢刷新的情况,就是控件闪烁,这可能是和QML和Mplayer本身的原因,要解决的话也不是目前我这个级别的人干的,因此,偷偷鸡,直接弄个透明窗口盖在Mplayer窗口上面就完事了
这样也是没问题的,还能做成点击才显示操作按钮,炫酷程度还是可以的
但是肯定有些人又需要Qwidget那样显示在划定的控件中而不是整个窗口,那样的话就得祭出我的最终方案了,有二,但是播放就懒得做了,就是:
QWidget窗口嵌入QML 窗口,这样就可以直接获取QWidget 窗口里面控件的操作句柄,方法如下
int main(int argc, char *argv[])
{QApplication a(argc, argv);//======================实例化一个QML界面=============================//QQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/MainQml.qml")));if(engine.rootObjects().isEmpty())return -1;MainWindow w;//实例化一个QWidget界面w.winId();//获取winID ,不使用会失败w.setAttribute(Qt::WA_NativeWindow);//将其设置为子窗口//需要调用QWindow文件w.windowHandle()->setParent( qobject_cast<QWindow *>(engine.rootObjects().first())/*父窗口*/);//设置其父窗口//显示w.show();//设置位置w.move(20,30);//w.show();return a.exec();
}
QML MainQml.qml
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
//import ABC 1.0
import QtQuick.Dialogs 1.1
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.1import QtQuick.Window 2.2
import QtQuick.Controls 2.2Window{id:qmlWindowtitle: "WINDOW"width: 1000height: 800visible: trueText {id: nametext: qsTr("THIS IS QML")}}
Qwidget 我就直接这样了
实现效果如图
还有一种就是QML 嵌入QWidget
直接
就完事了,然后设置需要读取的文件
这个好像是不能贴Window 控件的
Mplayer 嵌入Qt 窗口 制作播放器(嵌入方法)相关推荐
- 基于Qt的音乐播放器制作
基于Qt的音乐播放器制作 使用浏览器自带工具抓包歌曲资源 开发人员工具抓包 点击浏览器右上角的 "-" 快捷键(Alt + F): 点击其中的"更多工具" ➡ ...
- 将OSG嵌入QT窗口系统中,实现拖拽界面
将OSG嵌入QT窗口系统中,实现拖拽界面 一.原理 OSG底层使用的是OpenGL图形系统,QT也增加了对OpenGL的支持,因此,可以通过QT的OpenGL模块,实现将OSG窗口嵌入到QT中,这样可 ...
- 基于QT实现Mp3播放器(代码部分)
前言 最近有一个课程实验,利用window上的API接口实现MP3播放器. 突发奇想,在linux下用相关接口做一个MP3播放器.最先的打算是完全使用纯C写的,但后来感觉编写调试实在费劲.于是 ...
- 【QT的音乐播放器(简单版)】
基于QT的音乐播放器 前言 一.主体效果 二.主要技术点: 1. mp3的ID3V2格式文件解析:作者.歌手.时长.专辑图片等 1.1 需要工具: 1.2 ID3V2文件格式 1.3 mp3ID3V2 ...
- C++ QT视频音乐播放器
程序示例精选 C++/QT视频音乐播放器 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<<C++/QT视频音乐播放器>>编写代 ...
- QT 离线音乐播放器
今天刚做完一个简单的智能家居项目,里面包含了一个比较简单的音乐播放器,为了加深一下对这个东西印象,所以把操作流程以及一些用到的类和方法记录一下. 目录 1.UI界面制作 2.加入播放器类 3.播放器初 ...
- windows player![转载]C# axWindowsMediaPlayer制作播放器 winform
windows player![转载]C# axWindowsMediaPlayer制作播放器 日期:2011-08-16 06:31 来源:万卷楼主人王希杰 作者:优崽 windows player ...
- 基于QT实现Mp3播放器(理论论述部分)
前言 最近有一个课程实验,利用window上的API接口实现MP3播放器. 突发奇想,在linux下用相关接口做一个MP3播放器.最先的打算是完全使用纯C写的,但后来感觉编写调试实在费劲.于是 ...
- QT mp3音乐播放器实现框架,Qt鼠标事件,网络编程,QSqlite,Json解析,HTTP请求等
QT mp3音乐播放器实现框架,Qt鼠标事件,网络编程,QSqlite,Json解析,HTTP请求等 框架搭建 UI设计 mp3.h mp3.cpp 隐藏窗口标题 最大化 最小化 关闭 框架搭建 .p ...
最新文章
- multisim怎么设置晶体管rbe_Multisim 10在单管共射放大电路中的应用
- 超大规模智能模型相关工作总结:编程实现框架、算法模型、微调技术和应用...
- 码牛安卓移动互联网高级开发正式课
- pythonos模块使用方法_python os模块使用方法
- Java 和 Android系统环境变量设置
- 【区间DP】摆渡线路(2017 特长生 T4)
- linux网络编程:使用多进程实现socket同时收发数据
- 在 Delphi 6 中使用 Hashtable
- (转贴) ArcIMS初级教程(1)
- ssis 派生列_具有多个表达式与多个转换的SSIS派生列
- [转]手把手教你搭建Hive Web环境
- 一次性搞清楚线上CPU100%,频繁FullGC排查套路
- Sigar介绍和配置
- 银行数据仓库体系实践_【实战剖析】某国际性商业银行的数据仓库建设经验分享...
- 2003-2021年高铁列车信息
- Kaggle数据集之电信客户流失数据分析(三)之决策树分类
- 文件下载(解决中文文件名下载乱码问题)(二)
- 量化交易存在哪些缺陷?
- 南师大计算机专业导师,南京师范大学硕士生导师名单
- OpenGLES(七)使用GLSL实现滤镜效果之动态滤镜