如何在 Qwidget 中添加视频播放器? [复制]

Posted

技术标签:

【中文标题】如何在 Qwidget 中添加视频播放器? [复制]【英文标题】:How to add Video Player inside the Qwidget? [duplicate] 【发布时间】:2021-05-27 13:06:56 【问题描述】:

我想在这个框中添加一个视频播放器。

用户界面截图:

我在 Qt Designer 中设计了 UI,这个框是一个名为“video”的 Qwidget。我不知道如何在这个盒子里集成视频播放器。我的目标是从“上传视频”按钮上传获取文件目录,然后从框中的视频播放器中的目录播放视频。我将不胜感激。

这是已插入小部件的 GUI 代码。

self.video = QWidget(self.Home_page)
self.video.setObjectName(u"video")
self.video.setStyleSheet(u"border:1px solid white\n""")

self.verticalLayout_6.addWidget(self.video)

【问题讨论】:

请提供minimal reproducible example 【参考方案1】:

您可以使用 QFileDialog 让用户选择他想要的文件。它将为您提供文件的文件系统路径。然后,您可以使用 QMediaPlayer 通过其路径加载文件。

编辑:示例(我使用了 PySide,但如果你用 PyQt 替换它应该可以工作):

from PySide2 import QtCore, QtWidgets, QtMultimedia, QtMultimediaWidgets


class VerySimpleMediaPlayer(QtWidgets.QWidget):
    def __init__(self, parent):
        super().__init__(parent)
        self.open_file_button = QtWidgets.QPushButton("Open file")
        self.open_file_button.clicked.connect(self.open_file)

        self.media_player = QtMultimedia.QMediaPlayer(self)
        self.media_widget = QtMultimediaWidgets.QVideoWidget(self)
        self.media_player.setVideoOutput(self.media_widget)
        self.media_widget.show()

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.open_file_button)
        layout.addWidget(self.media_widget)
        self.setLayout(layout)

    def open_file(self):
        filepath, _ = QtWidgets.QFileDialog.getOpenFileName(self, "Choose video file to load")
        self.media_player.setMedia(QtCore.QUrl.fromLocalFile(filepath))
        self.media_player.setVolume(20)  # not too loud
        self.media_player.play()


if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    main_window = QtWidgets.QMainWindow()

    example_widget = VerySimpleMediaPlayer(main_window)
    main_window.setCentralWidget(example_widget)

    main_window.setVisible(True)
    app.exec_()

它适用于收听 MP3 文件,但不适用于 MP4 文件,可能是因为编解码器。自己试试吧。

我使用了这些文档:

QtWidgets.QFileDialog (PySide) QtMultimedia.QMediaPlayer (Qt) QtMultimediaWidgets.QVideoWidget (Qt)

【讨论】:

感谢您的回答,但我能够做到。我不知道如何将 Qmediaplayer 集成到我放置在我的 GUI 中的 Qwidget 中。如果你能帮忙,请。 @OsamaJilani 我编辑了我的答案

以上是关于如何在 Qwidget 中添加视频播放器? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

QT中怎么在一个Widget中添加视频播放的功能,就是一打开这个Widget就自动播放视频?要用啥函数?

如何获取动态添加的视频以在 Chrome 上自动播放? [复制]

Qt视频播放出现的问题

使用PyQt5播放视频并添加字幕——最简单示例

DVD视频转换无法播放?如何将DVD复制到iPad正常播放

如何在 xamarin.forms 中添加视频播放器