已经更新了详细的实现过程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 实现视频播放器相关推荐

  1. PyQt5 简单视频播放器

    文章目录 1.主要组件 2.功能代码 3.功能展示 4.如果播放不了 1.主要组件 QVideoWidget:这个类主要用作播放视频的控件 QMediaPlayer :实现媒体播放的类 2.功能代码 ...

  2. pyQT 视频播放器(三) 实现视频截图、获取每一帧数据

    pyQT 视频播放器(三) 实现视频截图.获取每一帧数据 背景 方法调研 详细代码说明 最终效果 总结: 参考资料 背景 在 "PyQt5 实现视频播放器(二) ,详细版本 ,适合新手入门& ...

  3. 【简便的PyQt5】制作一个极具特色的视频播放器

    [简便的PyQt5]制作一个极具特色的视频播放器 写在前面 效果展示 开源代码 loadInputVideo.py demo.py 写在前面   实现了以下功能 : ❤  PyQt5本地上传视频 ❤  ...

  4. 用Pyqt5写一个视频播放器

    用Pyqt5写一个视频播放器 编写方式: Qt Designer设计,pyuic5转化为.py文件. 播放器效果: 代码链接:https://github.com/GRF-Sunomikp31/Qt_ ...

  5. <Python>PyQt5+ffmpeg,简单视频播放器的编写(解码器:K-lite)

    更新日志: 202211251640:第一版,基本功能:视频导入,播放.暂停.播放时间显示.音量控制 视频播放器 概述:本文是利用PyQt5加上ffmpeg来编写一个具备基本功能的视频播放器(播放.暂 ...

  6. PyQt5:简易视频播放器

    本文旨在介绍如何使用PyQt5制作简易的视频播放器 ps:有些网友也许会遇到只能播放avi格式视频,而mp4等格式无法播放的问题(DirectShowPlayerService::doRender: ...

  7. pyqt5制作简单的视频播放器(一):界面制作

    刚学不久的pyqt,试着做了个简单又随便还略带一点点low的视频播放器 一.使用Qt designer制作界面(Qt designer安装方法参开别人的博客) 打开Qt designer,会自动弹出图 ...

  8. Python+QT+Selenium制作在线视频播放器

    最近突然想做一个视频播放器,可以在线看视频,关键还没用广告,不用会员,下面给大家介绍一下怎么制作 工具: Python Qt phantomjs 先给大家展示一下效果 下面上代码 导入库: from ...

  9. python实现视频播放器_对目前的视频播放器不满意?教你用Python做一个视频播放器...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于Charles的皮卡丘 ,作者白露未晞me Python爬虫.数据分析.网站开 ...

最新文章

  1. 经典卷积神经网络--AlexNet的详解
  2. Netty 支持的功能与特性
  3. 利用java实现android项目结构API文档
  4. 周博磊自述5年研究经历:一个神经元的价值和一个神经病的坚持
  5. java mail outlook_已启用Outlook API邮件与邮箱用户
  6. c++用牛顿法开多次根_望远镜的历史之三:大神出世,改变望远镜历史的竟然是牛顿...
  7. 【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动
  8. Golang: How to sort struct with multiple sort parameters?
  9. css中怎么改变图片尺寸,CSS也可以改变图片幅面尺寸
  10. CSS 中 position 属性详解
  11. 总有一天你会明白,人首先要爱自己,我没有办法一无所有的爱你。
  12. 关于win10 无线网络不可用,网络适配器出现全感叹号
  13. 电脑从硬盘启动计算机,电脑如何设置固态硬盘启动
  14. 微信小程序开发工具的目录结构
  15. 触控手机、握笔握手、拎箱包、拿鸡蛋 可穿戴仿生手将投入量产!
  16. Studio 3T无法连接MongoDB异常错误 解决方法
  17. NR PDCCH CCE to REG 交织图解
  18. 容得下生命‬的不完美,也经得起世事的颠簸,将人生的一切都根植于生活
  19. GIS、ArcGIS 、WebGIS及Cesium的介绍
  20. 支付接口申请_谈一下关于个人网站实现免签支付接口自动收款

热门文章

  1. python计算时间差_Python:计算时间差
  2. 【蓝桥杯单片机组第十届决赛】— 客观试题
  3. 心存感激--Be thankful
  4. QoS服务质量四QoS边界行为之流量监管
  5. 卡联系人IccProvider
  6. 【数学一本通 第一章】Semi-prime H-numbers[UVA11105]
  7. 可口可乐在中国推出可加热汽水姜汁可乐;喜茶开出在深圳第100家门店 | 美通企业日报...
  8. 再谈谈贷后分类场景及模型变量解析等内容
  9. libreoffice 开发文档_LibreOffice SDK开发
  10. BPM表达式错误背后的凶手是谁?