使用时总是得到0QMediaPlayer.duration.持续时间()

2024-09-25 06:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

import sys
from PyQt5.Qt import QUrl
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent, QMediaPlaylist
from PyQt5.QtWidgets import QApplication, QWidget


class Demo(QWidget):
    def __init__(self):
        super(Demo, self).__init__()
        self.playlist = QMediaPlaylist(self)
        self.player = QMediaPlayer(self)
        self.player.setPlaylist(self.playlist)

        self.playlist.addMedia(QMediaContent(
            QUrl.fromLocalFile('mypath')))
        self.playlist.addMedia(QMediaContent(
            QUrl.fromLocalFile('mypath')))
        self.playlist.setPlaybackMode(QMediaPlaylist.Loop)
        self.playlist.setCurrentIndex(1)

        self.player.setVolume(80)
        self.player.play()

        self.player.durationChanged.connect(self.print_durantion)
        print(self.player.duration())  # 0

    def print_durantion(self, d):
        print(d)                       # never printed


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())

我试图获取文件的持续时间,但总是得到0。它在qtcassistant中表示,当初始播放开始时,该值可能不可用,并告诉我们使用durantionChanged来接收状态通知。在

但是,如果duration始终为0(值d从不打印),durationChanged信号将如何发出?在

播放媒体文件时,有没有办法获得持续时间?任何帮助都将不胜感激。(我在MacOS上测试了上述代码)


Tags: 代码fromimportselfdemosysplaylistpyqt5
1条回答
网友
1楼 · 发布于 2024-09-25 06:31:41

选择介质后,您正在附加durationChanged信号。此信号只在选择介质时触发一次,而不是之后触发。在

如果您将它放在setCurrentIndex之前,它应该可以正常工作,但是您可能需要在链接播放列表之前附加它。在

这里有一个工作mediaplayer demo application in PyQt5来确认信号是否适用于当前的PyQt5安装。在

相关问题 更多 >