关于PyQt5播放本地视频问题

import os

from Mainwindow import Ui_MainWindow
import sys
from PyQt5.QtMultimediaWidgets import QVideoWidget
# import RPi.GPIO as GPIO
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout, QFileDialog
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent


class Mainwin(Ui_MainWindow, QMainWindow):
    def __init__(self):
        super(Mainwin, self).__init__()
        self.setupUi(self)
        self.initUI()

    def initUI(self):
        self.player = QMediaPlayer()
        self.player.setVideoOutput(self.widget)

        self.cur_path = "" # 在此次写上要播放的文件路径
        print("cur_path = ", self.cur_path)
        self.player.setMedia(QMediaContent(QUrl(self.cur_path)))

        self.player.play()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Mainwin()
    window.show()
    sys.exit(app.exec_())

下面是UI文件:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setWindowModality(QtCore.Qt.NonModal)
        MainWindow.resize(800, 600)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = myVideoWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(50, 10, 681, 261))
        self.widget.setObjectName("widget")
        self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(50, 319, 151, 101))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.widget_2 = QtWidgets.QWidget(self.verticalLayoutWidget)
        self.widget_2.setObjectName("widget_2")
        self.lineEdit = QtWidgets.QLineEdit(self.widget_2)
        self.lineEdit.setGeometry(QtCore.QRect(20, 10, 111, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit.sizePolicy().hasHeightForWidth())
        self.lineEdit.setSizePolicy(sizePolicy)
        self.lineEdit.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit.setDragEnabled(False)
        self.lineEdit.setReadOnly(True)
        self.lineEdit.setObjectName("lineEdit")
        self.verticalLayout.addWidget(self.widget_2)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.widget_6 = QtWidgets.QWidget(self.verticalLayoutWidget)
        self.widget_6.setObjectName("widget_6")
        self.pushButton_9 = QtWidgets.QPushButton(self.widget_6)
        self.pushButton_9.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_9.setText("")
        self.pushButton_9.setObjectName("pushButton_9")
        self.horizontalLayout.addWidget(self.widget_6)
        self.widget_7 = QtWidgets.QWidget(self.verticalLayoutWidget)
        self.widget_7.setObjectName("widget_7")
        self.pushButton_2 = QtWidgets.QPushButton(self.widget_7)
        self.pushButton_2.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_2.setText("")
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.widget_7)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(220, 320, 151, 101))
        self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.widget_3 = QtWidgets.QWidget(self.verticalLayoutWidget_2)
        self.widget_3.setObjectName("widget_3")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.widget_3)
        self.lineEdit_2.setGeometry(QtCore.QRect(20, 10, 111, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit_2.sizePolicy().hasHeightForWidth())
        self.lineEdit_2.setSizePolicy(sizePolicy)
        self.lineEdit_2.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_2.setReadOnly(True)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.verticalLayout_2.addWidget(self.widget_3)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.widget_8 = QtWidgets.QWidget(self.verticalLayoutWidget_2)
        self.widget_8.setObjectName("widget_8")
        self.pushButton_3 = QtWidgets.QPushButton(self.widget_8)
        self.pushButton_3.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_3.setText("")
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout_2.addWidget(self.widget_8)
        self.widget_9 = QtWidgets.QWidget(self.verticalLayoutWidget_2)
        self.widget_9.setObjectName("widget_9")
        self.pushButton_4 = QtWidgets.QPushButton(self.widget_9)
        self.pushButton_4.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_4.setText("")
        self.pushButton_4.setObjectName("pushButton_4")
        self.horizontalLayout_2.addWidget(self.widget_9)
        self.verticalLayout_2.addLayout(self.horizontalLayout_2)
        self.verticalLayoutWidget_3 = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget_3.setGeometry(QtCore.QRect(400, 320, 151, 101))
        self.verticalLayoutWidget_3.setObjectName("verticalLayoutWidget_3")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.widget_4 = QtWidgets.QWidget(self.verticalLayoutWidget_3)
        self.widget_4.setObjectName("widget_4")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.widget_4)
        self.lineEdit_3.setGeometry(QtCore.QRect(20, 10, 111, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit_3.sizePolicy().hasHeightForWidth())
        self.lineEdit_3.setSizePolicy(sizePolicy)
        self.lineEdit_3.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_3.setReadOnly(True)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.verticalLayout_3.addWidget(self.widget_4)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.widget_10 = QtWidgets.QWidget(self.verticalLayoutWidget_3)
        self.widget_10.setObjectName("widget_10")
        self.pushButton_5 = QtWidgets.QPushButton(self.widget_10)
        self.pushButton_5.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_5.setText("")
        self.pushButton_5.setObjectName("pushButton_5")
        self.horizontalLayout_3.addWidget(self.widget_10)
        self.widget_11 = QtWidgets.QWidget(self.verticalLayoutWidget_3)
        self.widget_11.setObjectName("widget_11")
        self.pushButton_6 = QtWidgets.QPushButton(self.widget_11)
        self.pushButton_6.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_6.setText("")
        self.pushButton_6.setObjectName("pushButton_6")
        self.horizontalLayout_3.addWidget(self.widget_11)
        self.verticalLayout_3.addLayout(self.horizontalLayout_3)
        self.verticalLayoutWidget_4 = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget_4.setGeometry(QtCore.QRect(580, 320, 151, 101))
        self.verticalLayoutWidget_4.setObjectName("verticalLayoutWidget_4")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_4)
        self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.widget_5 = QtWidgets.QWidget(self.verticalLayoutWidget_4)
        self.widget_5.setObjectName("widget_5")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.widget_5)
        self.lineEdit_4.setGeometry(QtCore.QRect(20, 10, 111, 31))
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit_4.sizePolicy().hasHeightForWidth())
        self.lineEdit_4.setSizePolicy(sizePolicy)
        self.lineEdit_4.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_4.setReadOnly(True)
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.verticalLayout_4.addWidget(self.widget_5)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.widget_12 = QtWidgets.QWidget(self.verticalLayoutWidget_4)
        self.widget_12.setObjectName("widget_12")
        self.pushButton_7 = QtWidgets.QPushButton(self.widget_12)
        self.pushButton_7.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_7.setText("")
        self.pushButton_7.setObjectName("pushButton_7")
        self.horizontalLayout_4.addWidget(self.widget_12)
        self.widget_13 = QtWidgets.QWidget(self.verticalLayoutWidget_4)
        self.widget_13.setObjectName("widget_13")
        self.pushButton_8 = QtWidgets.QPushButton(self.widget_13)
        self.pushButton_8.setGeometry(QtCore.QRect(0, 0, 71, 51))
        self.pushButton_8.setText("")
        self.pushButton_8.setObjectName("pushButton_8")
        self.horizontalLayout_4.addWidget(self.widget_13)
        self.verticalLayout_4.addLayout(self.horizontalLayout_4)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.lineEdit.setText(_translate("MainWindow", "可回收垃圾"))
        self.lineEdit_2.setText(_translate("MainWindow", "厨余垃圾"))
        self.lineEdit_3.setText(_translate("MainWindow", "不可回收垃圾"))
        self.lineEdit_4.setText(_translate("MainWindow", "其他垃圾"))
from myvideowidget import myVideoWidget

接下来是myvideowidget的代码:

from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import *
class myVideoWidget(QVideoWidget):
    def __init__(self, parent=None):
        super(QVideoWidget, self).__init__(parent)

在写要播放的文件路径的时候一定要用///,file:///。注意一定是三个斜杠。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5是一个流行的Python GUI库,可用于开发跨平台的图形用户界面。在PyQt5中,可以使用QLabel类来显示图像和文本,并支持媒体文件的播放。如果想在PyQt5的QLabel中播放本地视频,则需要使用QMediaPlayer类和QVideoWidget类。 首先,在PyQt5中创建一个QLabel对象。然后,在QLabel对象中创建一个QVideoWidget对象,并将其设置为QLabel的子组件。接下来,创建一个QMediaPlayer对象,并将其与QVideoWidget对象连接起来。最后,将本地视频文件的路径传递给QMediaPlayer对象,并调用play()方法来启动视频播放。 下面是一段示例代码,演示如何在PyQt5中实现在QLabel中播放本地视频: ```python from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout from PyQt5.QtMultimedia import QMediaPlayer, QVideoWidget from PyQt5.QtCore import QUrl class VideoPlayer(QWidget): def __init__(self): super().__init__() self.setWindowTitle('Video Player') self.setGeometry(100, 100, 720, 480) # 创建QLabel对象 self.label = QLabel(self) # 创建QVideoWidget对象并将其设置为QLabel的子组件 self.video_widget = QVideoWidget(self.label) self.video_widget.setGeometry(0, 0, 720, 480) # 创建QMediaPlayer对象,并将其与QVideoWidget对象连接起来 self.media_player = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.media_player.setVideoOutput(self.video_widget) # 将本地视频文件的路径传递给QMediaPlayer对象 video_path = 'video.mp4' self.media_player.setMedia(QUrl.fromLocalFile(video_path)) # 启动视频播放 self.media_player.play() # 将QLabel对象添加到窗口中 layout = QVBoxLayout() layout.addWidget(self.label) self.setLayout(layout) if __name__ == '__main__': app = QApplication([]) player = VideoPlayer() player.show() app.exec_() ``` 这段代码创建了一个名为“Video Player”的窗口,并在其中播放了“video.mp4”文件。在该示例中,QLabel对象为窗口的主要部分,并且QVideoWidget对象作为QLabel的子组件用于显示视频内容。通过将QMediaPlayer对象连接到QVideoWidget对象的输出中,实现了本地视频文件的播放

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值