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

时间:2018-11-15 14:27:19

标签: python pyqt pyqt5 qmediaplayer qvideowidget

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

当我运行此代码时:

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_())

窗口打开并播放视频文件。

我试图将此代码添加到主程序中的类中,并试图调用它,但是它总是失败。

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

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

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

1 个答案:

答案 0 :(得分:1)

您必须在其QPushButton插槽中构建一个connectclicked,以显示和播放视频。

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_())