2

PyQt4 で Phonon を使用して簡単なビデオ プレーヤーを作成しました。動画は問題なく再生されています。しかし、私はビデオを特定の位置にシークすることができません。これは私が書いたコードです:

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

私がやろうとしているのは、特定の位置でビデオを開始および停止することだけです。

前もって感謝します。

4

2 に答える 2

1

ロード中のメディア ソース内の位置をシークすることはできません。

そのため、ハンドラーをメディア オブジェクトのstateChangedシグナルに接続し、状態がPlayingStateに変わるまで待ってから、シークを試みます。

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

def handleStateChanged(self, newstate, oldstate):
    if newstate == Phonon.PlayingState:
        self.player.seek(10240)
于 2011-11-06T20:46:38.363 に答える
0

一部のメディアは、Phonon で簡単にシークできません。ドキュメントによると

メディア ソースがシーク可能でない場合、バックエンドは自由にシーク リクエストを無視できることに注意してください。これは、VideoPlayer のメディア オブジェクトに問い合わせることで確認できます。

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

私の推測では、あなたの動画はシーク可能ではありません。

どのようなメディアを使用していますか? ストリーミング ビデオ (たとえば) のようなものは、通常シークできません。

于 2011-11-06T20:37:45.227 に答える