无法在PyQt4中定位视频

2 投票
2 回答
1028 浏览
提问于 2025-04-17 05:45

我用Phonon在PyQt4中写了一个简单的视频播放器。视频播放得很好。但是我无法将视频跳转到指定的位置。这是我写的代码:

#!/usr/bin/python

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.phonon import Phonon
import sys

class VideoPlayer(QWidget):

    def __init__(self, address, parent = None):
        self.address = address
        QWidget.__init__(self)
        self.player = Phonon.VideoPlayer(Phonon.VideoCategory, self)
        self.player.load(Phonon.MediaSource(self.address))
        window = QHBoxLayout(self)
        window.addWidget(self.player)
        self.setWindowTitle("Simple Video Player")
        self.player.play()
        self.player.seek(10240)

app = QApplication(sys.argv)
vp = VideoPlayer(sys.argv[1])
vp.show()
app.exec_()

我只是想在指定的位置开始和停止视频播放。

提前谢谢你们。

2 个回答

0

有些媒体文件在使用Phonon时不太容易进行快进快退。文档中提到:

请注意,如果媒体源不支持快进请求,后端可以选择忽略这个请求;你可以通过询问VideoPlayer中的媒体对象来检查这一点。

player->mediaObject()->isSeekable();

我猜你的影片可能是不支持快进的。

你使用的是什么媒体文件呢?像是流媒体视频(例如)通常是不支持快进的。

1

在媒体源还在加载的时候,无法直接跳转到某个位置。

所以,你需要连接一个处理器到媒体对象的 状态改变 信号,并且等到它的状态变成 播放中 后再尝试跳转。

self.player.mediaObject().stateChanged.connect(self.handleStateChanged)
...

def handleStateChanged(self, newstate, oldstate):
    if newstate == Phonon.PlayingState:
        self.player.seek(10240)

撰写回答