PySide6/QMediaPlayer视频播放结束后无法自动循环问题求助
解决PySide6 QMediaPlayer视频播放结束后无法自动循环的问题
你遇到的问题是因为视频播放到EndOfMedia状态时,播放器的播放位置停留在视频末尾,直接调用play()不会自动从头开始。需要先重置播放位置到起始点,再启动播放。
修改你的state_change槽函数如下:
@QtCore.Slot() def state_change(self, state): print("StateChange: ", state) if state == QMediaPlayer.MediaStatus.EndOfMedia: # 重置播放位置到开头 self.player.setPosition(0) self.player.play()
如果上述方法仍不生效,可以尝试先停止播放器再重置位置并播放:
@QtCore.Slot() def state_change(self, state): print("StateChange: ", state) if state == QMediaPlayer.MediaStatus.EndOfMedia: self.player.stop() self.player.setPosition(0) self.player.play()
为什么按钮点击可以正常播放?
因为按钮点击时,播放器处于StoppedState,此时调用play()会自动从起始位置开始播放;而EndOfMedia状态触发时,播放器的位置仍在视频末尾,缺少重置位置的步骤,所以无法重新启动。
内容的提问来源于stack exchange,提问作者Kenneth Østby
相关产品推荐
相关产品推荐

