代码之家  ›  专栏  ›  技术社区  ›  Denlord

如何在QtDesigner中推广的QVideoWidget中播放视频?

  •  1
  • Denlord  · 技术社区  · 7 年前

    我是Qt的初学者。但在一些教程之后,我在qt designer中创建了一个UI,可以显示实时流视频。我已经读到为了添加视频,我需要将widget升级到QVideoWidget。然后我转换。ui到。py文件使用python语言访问它。问题是,一旦我完成了,我不知道如何将视频放入我在ui中制作的小部件中。非常感谢。

    下面的代码显示GUI。py文件。我正在将其导入另一个文件中,在那里我将对其进行编码以显示视频。但我不知道该怎么做谢谢

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'facebio.ui'
    #
    # Created by: PyQt5 UI code generator 5.6
    #
    # 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.resize(558, 388)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.listWidget = QtWidgets.QListWidget(self.centralwidget)
            self.listWidget.setGeometry(QtCore.QRect(280, 10, 261, 221))
            self.listWidget.setObjectName("listWidget")
            self.listWidget_2 = QtWidgets.QListWidget(self.centralwidget)
            self.listWidget_2.setGeometry(QtCore.QRect(20, 240, 521, 101))
            self.listWidget_2.setObjectName("listWidget_2")
            self.widget = QVideoWidget(self.centralwidget)
            self.widget.setGeometry(QtCore.QRect(20, 10, 241, 221))
            self.widget.setObjectName("widget")
            MainWindow.setCentralWidget(self.centralwidget)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    
    from PyQt5.QtMultimediaWidgets import QVideoWidget
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
    
    1 回复  |  直到 4 年前
        1
  •  2
  •   eyllanesc Yonghwan Shin    7 年前

    您只需从Qt Designer中选择的小部件继承并使用生成的设计,然后使用 QMediaPlayer 然后将其设置为 QVideoWidget :

    主要的py公司

    from PyQt5 import QtCore, QtGui, QtWidgets, QtMultimedia
    
    from GUI import Ui_MainWindow
    
    class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
        def __init__(self, *args, **kwargs):
            QtWidgets.QMainWindow.__init__(self, *args, **kwargs)
            self.setupUi(self)
    
            self.mediaPlayer = QtMultimedia.QMediaPlayer(self)
            self.mediaPlayer.setVideoOutput(self.widget)
            # fileName = "/path/of/your/local_file"
            # url = QtCore.QUrl.fromLocalFile(fileName)
            url = QtCore.QUrl("http://clips.vorwaerts-gmbh.de/VfE_html5.mp4")
            self.mediaPlayer.setMedia(QtMultimedia.QMediaContent(url))
            self.mediaPlayer.play()
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        w = MainWindow()
        w.show()
        sys.exit(app.exec_())