如何在 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就自动播放视频?要用啥函数?