这是我的代码:
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.它在QtAssistant中说在初始播放开始时该值可能不可用并告诉我们使用durantionChanged来接收状态通知。
但是,如果持续时间始终为0(从不打印值d),durationChanged信号将如何发出?
播放媒体文件时有没有办法获得持续时间?任何帮助将不胜感激。 (我在MacOS上测试了上面的代码)
选择媒体后,您将附加durationChanged
信号。选择介质时,此信号仅触发一次,而不是之后。
如果你把它放在setCurrentIndex
之前它应该按预期工作,但你可能需要在链接播放列表之前附加它。
这是一个工作mediaplayer demo application in PyQt5来确认信号适用于您当前的PyQt5安装。