PyQt5 - откройте QMediaplayer в новом окне и воспроизведите видео - PullRequest
0 голосов
/ 15 ноября 2018

Это, вероятно, сводится к базовому пониманию 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_())

открывается окно и воспроизводится видеофайл.

Я пытался добавить этот код в класс в своей основной программе и пытался вызвать его, но он всегда не удался.

Что яхочу добиться - нажать кнопку QPush из основного графического интерфейса, чтобы открыть новое окно и воспроизвести видео в этом новом окне.

Как я уже сказал, это, вероятно, базовое кодирование на Python, но я полагаю, что меня там нетпока.

Ваша помощь очень ценится!Спасибо!

1 Ответ

0 голосов
/ 15 ноября 2018

Вы должны создать QPushButton и connect его слот clicked для функции, которая показывает и воспроизводит ваше видео.

(Вы должны 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_())
...