gpt4 book ai didi

python - QMediaPlayer negative playbackRate 不倒回视频

转载 作者:太空狗 更新时间:2023-10-29 19:28:22 30 4
gpt4 key购买 nike

我正在尝试使用 QMediaPlayer 创建一个..媒体播放器。我希望能够在按下按钮时倒带视频。

但是通过 QMediaPlayer.setPlaybackRate 设置负的 playbackRate 似乎不会让视频倒带。它只是继续向前播放。

不想更改视频的位置,我希望视频以负速度播放。根据我的一些逻辑,将 playbackRate 设置为负值将使视频反向播放。但这并没有发生。如果你看不懂我的话,这里是video回放应该是什么样子。

这里是重现问题的一些准系统代码:

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)

我尝试寻找解决方案,但除了 documentation 之外什么也没有得到说(强调我的):

Values less than zero can be set and indicate the media will rewind at the multiplier of the standard pace.

但是,我没有看到这种效果。

我确实注意到了这一点:

Not all playback services support change of the playback rate.

我可能无法倒带 mp4 吗?也许我需要安装/更改一些东西?

最佳答案

QMediaPlayer.playbackRate 属性保存当前媒体的播放速率。该值是应用于媒体标准播放速率的乘数。

Key_AKey_ZKey_Y 键,看看它是如何工作的。


如果您想倒回视频,您应该使用 QMediaPlayer.position 属性,它包含当前媒体的播放位置。该值是当前播放位置,以媒体开始后的毫秒数表示。

Key_MKey_P 键查看其工作原理。

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

# It Playback Rate !
if key == Qt.Key_A:
#self.mediaPlayer.setPlaybackRate(1.0)
self.mediaPlayer.setPlaybackRate(1.5)
elif key == Qt.Key_Z:
self.mediaPlayer.setPlaybackRate(0.8)
elif key == Qt.Key_Y:
self.mediaPlayer.setPlaybackRate(1.0)

# setPosition(int), argument is in milliseconds.
elif key == Qt.Key_M:
self.mediaPlayer.setPosition(self.mediaPlayer.position() - 10000)
elif key == Qt.Key_P:
self.mediaPlayer.setPosition(self.mediaPlayer.position() + 10000)

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)

关于python - QMediaPlayer negative playbackRate 不倒回视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52155722/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com