我创建了我的VideoPlayer类,它只适合玩一次
但当我试着播放一段视频重复很多次(无穷无尽)时,它不起作用。我调用play()来video_player.mediaPlayer.play()
,但它们只打印黑色
我认为这是一个QMediaPlaylist问题,但我找不到任何问题
class VideoPlayer(QWidget):
def __init__(self, video_path, parent=None):
super(VideoPlayer, self).__init__(parent)
self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
videoWidget = QVideoWidget()
layout = QVBoxLayout()
layout.addWidget(videoWidget)
self.setLayout(layout)
self.mediaPlayer.setVideoOutput(videoWidget)
playlist = QMediaPlaylist()
playlist.addMedia(QMediaContent(QUrl.fromLocalFile(video_path)))
playlist.setCurrentIndex(1)
playlist.setPlaybackMode(QMediaPlaylist.CurrentItemInLoop)
self.mediaPlayer.setPlaylist(playlist)
只播放一次的代码是self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(video_path)))
。它工作得很好
与许多其他Qt对象一样,如果它们既没有父对象也没有持久引用,它们只会被删除
您的问题是
playlist
一返回__init__
就被垃圾收集,导致QMediaPlayer没有剩余的内容可供播放使播放列表对象成为实例的成员,或使用父对象(例如,窗口)创建它:
相关问题 更多 >
编程相关推荐