【问题标题】:How to play video in a QVideoWidget promoted in Qt Designer?如何在 Qt Designer 中推广的 QVideoWidget 中播放视频?
【发布时间】:2021-10-16 01:04:18
【问题描述】:

我是 Qt 的初学者。但是按照一些教程,我在 qt 设计器中创建了一个 UI,它可以显示实时流视频。我已经读过,为了添加视频,我需要将小部件提升为 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_())

【问题讨论】:

    标签: python pyqt pyqt5 qt-designer qvideowidget


    【解决方案1】:

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

    ma​​in.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_())
    

    【讨论】:

    • 这就是我要找的。非常感谢。
    • 你有什么建议可以让我学习更多关于 qt 和 pyqt 的知识吗?再次感谢。
    • @Denlord 阅读 Qt 的文档
    • 您是否还知道如何在该小部件中放入来自 openCV 的直播而不是视频文件。
    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多