PyQt5 实现视频播放器
已经更新了详细的实现过程PyQt5 实现视频播放器(二) ,详细版本 ,适合新手入门,并附上完整示例代码。
Qt5 比qt4 有了很多新的功能,今天实现一个小的视频播放器的demo。实现的时候在网上发现用python实现的比较少,所以分享一下给需要的同学,我也是参考了c++写的,所以会c++的自然应该没有什么问题
主要用到的类:QMediaPlayer
一个最简单的视频播放demo如下:
from PyQt5.QtWidgets import *
from PyQt5.QtMultimedia import *
from PyQt5.QtMultimediaWidgets import QVideoWidget
import sys
if __name__ == '__main__':app = QApplication(sys.argv)player = QMediaPlayer()vw= QVideoWidget() # 定义视频显示的widgetvw.show()player.setVideoOutput(vw) # 视频播放输出的widget,就是上面定义的player.setMedia(QMediaContent(QFileDialog.getOpenFileUrl()[0])) # 选取视频文件player.play() # 播放视频sys.exit(app.exec_())
主要就是定义了一个给QMediaPlayer 和 视频输出的widget ,然后弹出框选择视频文件,选完后直接播放,效果如下:
到这里就完成了最简单的视频播放的demo,其它的界面布局,就是放置这个QVideoWidget在不同的地方。
这里还会有一个编码的问题,
DirectShowPlayerService::doRender: Unresolved error code 80040266
这是因为使用的QMediaPlayer ,底层是使用DirectShowPlayerService,所以安装一个DirectShow解码器,例如LAV Filters,就可以解决运行出错问题
参考:https://github.com/qyvlik/Flat.qml/issues/4
https://blog.csdn.net/pyf09/article/details/72782315
LAV 解码器的 地址:http://forum.doom9.org/showthread.php?t=156191
Version 0.73.1: Installer (both x86/x64) (我是直接下载的这个安装一下就解决问题了)
ok,至此QMediaPlayer 的简单demo完成
但是在使用的过程中会需要用到播放、暂停、进度条等,这里说一下思路
1、播放、暂停、停止,QTMediaPlayer都是直接的函数play() ,pause(),stop() 可以绑定按钮或这快捷键直接实现比如:
self.btn_play.clicked.connect(self.player.play)
2、进度条的更新和显示
QMediaPlayer 有一个 进度位置变化的信号:
[signal] void QMediaPlayer::positionChanged(qint64 position)
Signal the position of the content has changed to position, expressed in milliseconds.
Note: Notifier signal for property position.
视频总长的获取:
注意这里,视频的总长在获取的时候有可能是0,也就是在视频刚加载的时候,可以使用durationChanged() 来监听。我是加上了0.1 避免为0.在计算进度百分比的时候会除于总长,用来更新slider。
3、关于视频全屏的问题:
在mainwindow 里无法进行全屏,比如设置了双击全屏,或者网上有说全屏了再退出全屏就变成一个新的widget。
这个问题花费我最多的时间,看了官方的bug说明,目前没有好的解决方法,网上有一个解决办法是用两个widget,全屏的时候用一个,退出全屏的时候用另一个,感觉治标不治本。不过目前也只能这样了。下面,左边是一个单独的视屏川口,双击可以全屏,右边是在mainwindow中的一个视屏窗口,单击无法全屏。
PyQt5 实现视频播放器相关推荐
- PyQt5 简单视频播放器
文章目录 1.主要组件 2.功能代码 3.功能展示 4.如果播放不了 1.主要组件 QVideoWidget:这个类主要用作播放视频的控件 QMediaPlayer :实现媒体播放的类 2.功能代码 ...
- pyQT 视频播放器(三) 实现视频截图、获取每一帧数据
pyQT 视频播放器(三) 实现视频截图.获取每一帧数据 背景 方法调研 详细代码说明 最终效果 总结: 参考资料 背景 在 "PyQt5 实现视频播放器(二) ,详细版本 ,适合新手入门& ...
- 【简便的PyQt5】制作一个极具特色的视频播放器
[简便的PyQt5]制作一个极具特色的视频播放器 写在前面 效果展示 开源代码 loadInputVideo.py demo.py 写在前面 实现了以下功能 : ❤ PyQt5本地上传视频 ❤ ...
- 用Pyqt5写一个视频播放器
用Pyqt5写一个视频播放器 编写方式: Qt Designer设计,pyuic5转化为.py文件. 播放器效果: 代码链接:https://github.com/GRF-Sunomikp31/Qt_ ...
- <Python>PyQt5+ffmpeg,简单视频播放器的编写(解码器:K-lite)
更新日志: 202211251640:第一版,基本功能:视频导入,播放.暂停.播放时间显示.音量控制 视频播放器 概述:本文是利用PyQt5加上ffmpeg来编写一个具备基本功能的视频播放器(播放.暂 ...
- PyQt5:简易视频播放器
本文旨在介绍如何使用PyQt5制作简易的视频播放器 ps:有些网友也许会遇到只能播放avi格式视频,而mp4等格式无法播放的问题(DirectShowPlayerService::doRender: ...
- pyqt5制作简单的视频播放器(一):界面制作
刚学不久的pyqt,试着做了个简单又随便还略带一点点low的视频播放器 一.使用Qt designer制作界面(Qt designer安装方法参开别人的博客) 打开Qt designer,会自动弹出图 ...
- Python+QT+Selenium制作在线视频播放器
最近突然想做一个视频播放器,可以在线看视频,关键还没用广告,不用会员,下面给大家介绍一下怎么制作 工具: Python Qt phantomjs 先给大家展示一下效果 下面上代码 导入库: from ...
- python实现视频播放器_对目前的视频播放器不满意?教你用Python做一个视频播放器...
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于Charles的皮卡丘 ,作者白露未晞me Python爬虫.数据分析.网站开 ...
最新文章
- 经典卷积神经网络--AlexNet的详解
- Netty 支持的功能与特性
- 利用java实现android项目结构API文档
- 周博磊自述5年研究经历:一个神经元的价值和一个神经病的坚持
- java mail outlook_已启用Outlook API邮件与邮箱用户
- c++用牛顿法开多次根_望远镜的历史之三:大神出世,改变望远镜历史的竟然是牛顿...
- 【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动
- Golang: How to sort struct with multiple sort parameters?
- css中怎么改变图片尺寸,CSS也可以改变图片幅面尺寸
- CSS 中 position 属性详解
- 总有一天你会明白,人首先要爱自己,我没有办法一无所有的爱你。
- 关于win10 无线网络不可用,网络适配器出现全感叹号
- 电脑从硬盘启动计算机,电脑如何设置固态硬盘启动
- 微信小程序开发工具的目录结构
- 触控手机、握笔握手、拎箱包、拿鸡蛋 可穿戴仿生手将投入量产!
- Studio 3T无法连接MongoDB异常错误 解决方法
- NR PDCCH CCE to REG 交织图解
- 容得下生命的不完美,也经得起世事的颠簸,将人生的一切都根植于生活
- GIS、ArcGIS 、WebGIS及Cesium的介绍
- 支付接口申请_谈一下关于个人网站实现免签支付接口自动收款
热门文章
- python计算时间差_Python:计算时间差
- 【蓝桥杯单片机组第十届决赛】— 客观试题
- 心存感激--Be thankful
- QoS服务质量四QoS边界行为之流量监管
- 卡联系人IccProvider
- 【数学一本通 第一章】Semi-prime H-numbers[UVA11105]
- 可口可乐在中国推出可加热汽水姜汁可乐;喜茶开出在深圳第100家门店 | 美通企业日报...
- 再谈谈贷后分类场景及模型变量解析等内容
- libreoffice 开发文档_LibreOffice SDK开发
- BPM表达式错误背后的凶手是谁?