Я пытаюсь использовать QMediaPlayer
для создания .. медиаплеера. Я хочу иметь возможность перематывать видео при нажатии кнопки.
Но установка отрицательного значения playbackRate
с помощью QMediaPlayer.setPlaybackRate
не приводит к перемотке видео. Он просто продолжает играть вперед.
Я не хочу изменить позицию видео, я хочу, чтобы видео воспроизводилось с отрицательной скоростью . Согласно моей логике, установка playbackRate
в отрицательное значение заставит видео воспроизводиться в обратном направлении . Но этого просто не происходит. Если вы не можете понять меня ясно, вот видео о том, как должно выглядеть воспроизведение.
Вот некоторый код для воспроизведения проблемы:
import sys
from PyQt5.QtCore import Qt, QUrl, QEvent
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import QMainWindow, QApplication
class VideoWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
videoWidget = QVideoWidget()
self.setCentralWidget(videoWidget)
self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
self.mediaPlayer.setVideoOutput(videoWidget)
self.mediaPlayer.setMedia(
QMediaContent(QUrl.fromLocalFile(r"<some video file>.mp4"))
)
self.mediaPlayer.play()
app.installEventFilter(self)
def eventFilter(self, source, event):
if event.type() == QEvent.KeyPress:
key = event.key()
if key == Qt.Key_A:
self.mediaPlayer.setPlaybackRate(1.0)
elif key == Qt.Key_Y:
self.mediaPlayer.setPlaybackRate(-1.0) # This doesn't work! :(
return super().eventFilter(source, event)
def closeEvent(self, event):
self.mediaPlayer.setMedia(QMediaContent())
if __name__ == '__main__':
app = QApplication(sys.argv)
player = VideoWindow()
player.resize(640, 480)
player.show()
exitCode = app.exec_()
sys.exit(exitCode)
Я пытался найти решение, но не получил ничего, кроме того, что документация говорит (выделено мое):
Значения меньше нуля могут быть установлены и указывают, что носитель будет перематывать при
множитель стандартного темпа.
Однако я не вижу этого эффекта.
Я заметил это:
Не все службы воспроизведения поддерживают изменение скорости воспроизведения.
Возможно ли, что я не могу перемотать mp4? Возможно, мне нужно что-то установить / изменить?