PyQt5 - откройте QMediaplayer в новом окне и воспроизведите видео
Это, вероятно, сводится к базовому пониманию 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 ответ
Решение
Вы должны построить 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_())