PyQt5 (python) GUI 在运行 .exe 后崩溃,未解决的错误代码 0x80004005 (未指明的错误)

问题描述 投票:0回答:1

我做了一个非常简单的PyQt5桌面应用,播放视频。它在Pycharm中工作得很好,这让我怀疑代码是好的,问题与Windows有关。

我用Pyinstaller创建了一个.exe文件。不幸的是,运行.exe后,应用程序在打开后短暂崩溃,视频灰暗而不是播放。

用于创建视频的部分代码。

        # create link to movie file

    movie_file = QtCore.QUrl.fromLocalFile('C:/Users/Owner/PycharmProjects/BF4 Deployment Timer/3d 
         video background 2.mp4')
    media = QtMultimedia.QMediaContent(movie_file)

    # create video widget
    self.videoWidget = QtMultimediaWidgets.QVideoWidget()
    self.setCentralWidget(self.videoWidget)

    # media player object   (video widget goes in media player)
    self.mediaPlayer = QtMultimedia.QMediaPlayer(None,
                                                 QtMultimedia.QMediaPlayer.VideoSurface)
    self.mediaPlayer.setVideoOutput(self.videoWidget)

    # playlist
    self.playlist = QtMultimedia.QMediaPlaylist()
    self.playlist.setCurrentIndex(0)
    self.playlist.setPlaybackMode(QtMultimedia.QMediaPlaylist.Loop)
    self.playlist.addMedia(media)

    # add content to media player
    self.mediaPlayer.setPlaylist(self.playlist)
    self.mediaPlayer.play()

命令窗口给我以下错误信息:

DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 (Unspecified error)

我无法通过google或者堆栈溢出来解决这个问题 这是个很大的挑战 因为我是一个相当新的程序员。

如果有解决的办法或者可以尝试的想法,我将非常感激。

python video pyqt5 exe pyinstaller
1个回答
0
投票

解决了

显然,PyQt5的QtMultimedia依赖于DirectShowPlayerService,为此你需要安装一个DirectShow解码器,比如LAV Filters。所以,这其实是我机器上的问题,而不是程序的问题。

基本安装了LAV滤镜,就解决了我的视频播放问题。我在google翻译了这个中文网站后,找到了这个答案。https:/blog.csdn.netWangguang_articledetails93312629。

LAV过滤器可以在这里找到。https:/www.videohelp.comsoftwareLAV-Filters

© www.soinside.com 2019 - 2024. All rights reserved.