特别提醒
QMediaPlayer.duration()的作用是获得当前播放媒体的总时间
如果你一开始就要用到这个数值,需要先进行判定,当前播放状态 是播放中(self.player.playbackState()==self.player.PlayingState)
为了方便,我直接将QSlider的最大值设置为Player.duration()
self.timeSlider.setMinimum(0)
self.timeSlider.setMaximum(self.player.duration())
运行程序发现视频正常播放,但是进度条不随着移动,而且不可挪动,导致后续功能无法正常进行
但是如果我把上面代码改成
self.timeSlider.setMinimum(0)
self.timeSlider.setMaximum(151116) #这个数值就是Player.duration(),也就是视频的总时长
我很迷惑,151116就是等于self.player.duration(),二者没有一点区别,为什么结果天差地别,
下面是调试,记录self.player.duration()是播放过程的变化
可以看到,在刚开始播放的时候self.player.duration()=0,然后把0赋值给self.timeSlider.setMaximum,所以进度条一直动不了,查了官方文档这有说:“ The value may change across the life time of the QMediaPlayer object and may not be available when initial playback begins”这个值在播放周期可能发生改变,且初始播放时可能不可用
后面我就在用self.player.duration()赋值的时候加了一个判定语句,程序完美运行
if self.player.playbackState()==self.player.PlayingState:
self.timeSlider.setMaximum(self.player.duration())