Vamsi Krishna
Vamsi Krishna

Reputation: 93

Unable to seek video in PyQt4

I wrote a simple video player using Phonon in PyQt4. The videos are playing fine. But I am unable to seek the video to given position. This the code I've written:

#!/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_()

All I am trying to do is to start and stop a video at given positions.

Thanks in advance.

Upvotes: 2

Views: 1038

Answers (2)

ekhumoro
ekhumoro

Reputation: 120608

It is not possible to seek to a position in a media source whilst it is still loading.

So connect a handler to the media object's stateChanged signal, and wait until it's state changes to PlayingState before attempting to seek.

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

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

Upvotes: 1

jedwards
jedwards

Reputation: 30210

Some media isn't easily seekable by Phonon. The documentation says

Note that the backend is free to ignore the seek request if the media source isn't seekable; you can check this by asking the media object of the VideoPlayer.

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

My guess is that your video isn't seekable.

What media are you using? Things like streaming video (for example), generally aren't seekable.

Upvotes: 0

Related Questions