Python 如何获取在PyQt4中播放的媒体的总持续时间?

Python 如何获取在PyQt4中播放的媒体的总持续时间?,python,pyqt,pyqt4,phonon,audio-player,Python,Pyqt,Pyqt4,Phonon,Audio Player,我正在尝试用PyQt4编写一个小型音频播放器。这是我编写的代码的一部分: class Player(QMainWindow): def __init__(self, fileLoc, parent = None): super(QMainWindow, self).__init__() self.totTime = 0 self.audioOutput = Phonon.AudioOutput(Phonon.MusicCategory,

我正在尝试用PyQt4编写一个小型音频播放器。这是我编写的代码的一部分:

class Player(QMainWindow):

    def __init__(self, fileLoc, parent = None):
        super(QMainWindow, self).__init__()
        self.totTime = 0
        self.audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
        self.mediaObject = Phonon.MediaObject(self)

        self.mediaObject.setTickInterval(1000)

        self.mediaObject.tick.connect(self.tick)
        self.mediaObject.stateChanged.connect(self.stateChanged)

        Phonon.createPath(self.mediaObject, self.audioOutput)

        #Define Play, Pause and Stop actions
        self.playAction = QAction(self.style().standardIcon(QStyle.SP_MediaPlay),
                            "Play", self, enabled = False, triggered = self.mediaObject.play)

        self.pauseAction = QAction(self.style().standardIcon(QStyle.SP_MediaPause),
                            "Pause", self, enabled = False, triggered = self.mediaObject.pause)

        self.stopAction = QAction(self.style().standardIcon(QStyle.SP_MediaStop),
                            "Stop", self, enabled = False, triggered = self.mediaObject.stop)

        #Initiate User Interface
        self.userInterface()
        self.timeDisp.display('00:00')

        self.mediaObject.setCurrentSource(Phonon.MediaSource(fileLoc))
        self.mediaObject.play()

    def tick(self, time):
        self.displayTime = QTime(0, (time / 60000) % 60, (time / 1000) % 60)
        self.timeDisp.display(self.displayTime.toString('mm:ss'))
我的问题是,我无法确定如何获取当前播放的文件的总持续时间。我已尝试在init()末尾打印mediObject.totalTime()的输出。但所有视频都返回-1。tick()中的mediObject.totalTime()返回的持续时间不正确(比实际持续时间长10-15秒)

此外,我可能必须从课外访问总持续时间的值。我该怎么做


提前感谢。

您可以将
暂停
播放
停止
操作与其他功能连接起来:

在类
\uuuu init\uuuu
中: self.total_time = 0 self.playing = False self.play_action = QAction(self.style().standardIcon((QStyle.SP_MediaPlay),"play",self) self.play_action.triggered.connect(self.play_triggered_event) 基本上,它是关于在触发影响所用时间的操作时保存一些程序状态

要获取类外的总时间,请为类编写访问器:

def get_total_time(self):
    return self.total_time

这对获取当前正在播放的文件的持续时间没有帮助,是吗?
def get_total_time(self):
    return self.total_time