python pyqt5 setPlaybackRate показывает черный экран при изменении скорости воспроизведения видео
Привет, я новичок в python. Я практикую создание пользовательского интерфейса, который будет действовать как симулятор вождения. пользователь должен иметь возможность плавно изменять скорость видео, когда они изменяют свою скорость движения. все работает, кроме черного экрана, который появляется в фильме, когда пользователь достигает скорости, которая меняет скорость видео (50,90,110), есть идеи, как ее решить? Прикрепленный код спасибо!
from time import gmtime, strftime
import threading
import sys
from PyQt5.QtGui import *
from PyQt5 import QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import (QLCDNumber)
from PyQt5.QtCore import Qt, QUrl
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import ( QLabel)
from PyQt5.QtWidgets import QWidget, QPushButton
from PyQt5.QtCore import pyqtSlot
class Example2(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.video = False
self.thread_list = []
self.response = ""
self.setStyleSheet("QLabel {font: 20pt Comic Sans MS}")
lcd = QLCDNumber(self)
lcd.display(100)
lcd.setMaximumHeight(100)
lcd.setDigitCount(6)
sld = QSlider(Qt.Horizontal, self)
sld.setMaximum(140)
sld.setSingleStep(2.5)
sld.setValue(110)
lbl = QLabel(self)
lbl.setText("Please change your speed using the up and down arrows as you see fit")
fr = QFrame()
btn=QPushButton("start",self)
btn2=QPushButton("stop",self)
w = QVideoWidget()
w.resize(840, 680)
w.move(0, 0)
player = QMediaPlayer()
url = "video.mp4"
player.setMedia(QMediaContent(QUrl.fromLocalFile(url)))
print("player set media")
player.setVideoOutput(w)
@pyqtSlot()
def on_click():
player.play()
print('opened: ', str(strftime("%Y-%m-%d %H:%M:%S", gmtime())))
@pyqtSlot()
def on_stop():
print('stopped',str(strftime("%Y-%m-%d %H:%M:%S", gmtime())))
player.pause()
def int_save(x):
d={}
d[x] = str(strftime("%Y-%m-%d %H:%M:%S", gmtime())) + " v= "+str(x)
print(d[x])
y=player.duration()
print(y/(1000*60))
if x < 50:
player.setPlaybackRate(0.5)
if x > 50 and x < 90:
player.setPlaybackRate(1)
if x > 90 and x < 110:
player.setPlaybackRate(1.25)
if x > 110:
sad = QPixmap('sad.png')
btn.clicked.connect(on_click)
btn2.clicked.connect(on_stop)
grid = QGridLayout()
grid.setSpacing(10)
grid.addWidget(lbl, 0,1)
grid.addWidget(lcd, 3, 1)
grid.addWidget(w, 1, 0,2,0)
grid.addWidget(sld, 4, 1)
grid.addWidget(btn, 5, 1)
grid.addWidget(btn2, 5,0)
self.setLayout(grid)
sld.valueChanged.connect(lcd.display)
sld.valueChanged.connect(int_save)
print("done")
self.setGeometry(900, 900, 900, 900)
self.setWindowTitle('Signal and slot')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example2()
sys.exit(app.exec_())