PyQt5 简单视频播放器

    科技2024-06-16  76

    文章目录

    1、主要组件2、功能代码3、功能展示4、如果播放不了

    1、主要组件

    QVideoWidget:这个类主要用作播放视频的控件 QMediaPlayer :实现媒体播放的类

    2、功能代码

    # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'GUI.ui' # # Created by: PyQt5 UI code generator 5.6 # # WARNING! All changes made in this file will be lost! import sys from PyQt5 import QtCore, QtWidgets from PyQt5.QtCore import QUrl from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer from PyQt5.QtMultimediaWidgets import QVideoWidget from PyQt5.QtWidgets import QApplication, QMainWindow,QFileDialog class Ui_MainWindow(QMainWindow): def __init__(self): super(Ui_MainWindow, self).__init__() self.setupUi(self) def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(600, 400) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.wgt_video = QVideoWidget(self.centralwidget) # 创建一个 视频播放组件 self.wgt_video.setGeometry(QtCore.QRect(50, 20, 500, 300)) self.wgt_video.setObjectName("wgt_video") self.btn_open = QtWidgets.QPushButton(self.centralwidget) self.btn_open.setGeometry(QtCore.QRect(260, 320, 120, 50)) self.btn_open.setObjectName("btn_open") MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.btn_open.setText(_translate("MainWindow", "打开视频文件并播放")) self.player = QMediaPlayer() # 创建视频播放管理器 self.player.setVideoOutput(self.wgt_video) # 视频播放输出的widget,就是上面定义的 self.btn_open.clicked.connect(self.openVideoFile) # 打开视频文件按钮 def openVideoFile(self): print('open file') # 播放网络视频 #self.player.setMedia(QMediaContent(QUrl.fromLocalFile("https://vd1.bdstatic.com/mda-hg6uempmez9u6mqi/sc/mda-hg6uempmez9u6mqi.mp4?auth_key=1562172911-0-0-4c22196ad1d0fcc49402d91336c999c5&bcevod_channel=searchbox_feed&pd=bjh&abtest=all"))) #选择本地视频播放 self.player.setMedia(QMediaContent(QFileDialog.getOpenFileUrl()[0])) # 选取本地视频文件 self.player.play() # 播放视频 if __name__ == '__main__': app = QApplication(sys.argv) vieo_gui = Ui_MainWindow() vieo_gui.show() sys.exit(app.exec_())

    3、功能展示

    4、如果播放不了

    如果播放不了,那大概率是自己电脑没有装备一个转码器, 也许会遇到只能播放avi格式视频,而mp4等格式无法播放的问题(DirectShowPlayerService::doRender: Unresolved error code 0x8040266 (IDisspatch error #102)),这需要下载一个解码器。

    大意便是 PyQt5 當中的 QMediaPlayer 使用的後端僅能支援 avi 檔,並不支援 mp4。

    為了解決這個問題,我們必須下載支援的解碼器並安裝,我們可以選擇的有 K-lite codecs 或者 LAV Filters,在此我安裝 K-lite。

    然后默认安装到底就可以播放了。

    对于下载比较慢的小伙伴 这里提供 csdn 下载资源

    文件参考: PyQt5:QMediaplayer,QVideowidget播放视频

    PyQt5 实现视频播放器(二) ,详细版本 ,适合新手入门

    Processed: 0.014, SQL: 8