PyQt5 - 在新 window 中打开 QMediaplayer 并播放视频

PyQt5 - open QMediaplayer in new window and play video

这可能归结为基本的 python 理解,但我正在努力使用 PyQt5 和 Python3 在新 window 中打开视频。

当我运行这段代码时:

from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import  QApplication
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
import sys

app = QApplication(sys.argv)
w = QVideoWidget()
w.resize(300, 300)
w.move(0, 0)
w.show()
player = QMediaPlayer()
player.setMedia(QMediaContent(QUrl.fromLocalFile({inputVideo})))
player.setVideoOutput(w)
player.play()
sys.exit(app.exec_())

window 打开并播放视频文件。

我试图将这段代码添加到我的主程序中的一个 class 中,并尝试调用它,但总是失败。

我想要实现的是从主 GUI 按下 QPushbutton 打开一个新的 window 并在那个新的 window 中播放视频。

正如我所说,这可能是基本的 python 编码,但我想我还没有做到。

非常感谢您的帮助!! 谢谢!

您必须构建一个 QPushButtonconnectclicked 插槽到显示和播放您的视频的函数。

(你必须先setVideoOutput然后setMedia

from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QPushButton
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
import sys

class VideoPlayer:

    def __init__(self):
        self.video = QVideoWidget()
        self.video.resize(300, 300)
        self.video.move(0, 0)
        self.player = QMediaPlayer()
        self.player.setVideoOutput(self.video)
        self.player.setMedia(QMediaContent(QUrl.fromLocalFile("./some_video_file.avi")))

    def callback(self):
        self.player.setPosition(0) # to start at the beginning of the video every time
        self.video.show()
        self.player.play()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    v = VideoPlayer()
    b = QPushButton('start')
    b.clicked.connect(v.callback)
    b.show()
    sys.exit(app.exec_())