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

Posted

技术标签:

【中文标题】PyQt5 (python) GUI 在运行 .exe 后崩溃,未解决的错误代码 0x80004005(未指定的错误)【英文标题】:PyQt5 (python) GUI crashes after running .exe, Unresolved error code 0x80004005 (Unspecified error) 【发布时间】:2020-05-13 23:33:48 【问题描述】:

我制作了一个播放视频的非常简单的 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)

我无法学习足够的谷歌搜索或堆栈溢出来修复它,这是一个真正的挑战,因为我是一个相当新的程序员

非常感谢尝试的解决方案或想法!

【问题讨论】:

【参考方案1】:

已解决

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

基本安装 LAV 过滤器解决了我的视频播放问题。 我在谷歌翻译这个中文网站后找到了这个答案: https://blog.csdn.net/Wangguang_/article/details/93312629

LAV 过滤器可在此处找到: https://www.videohelp.com/software/LAV-Filters

【讨论】:

以上是关于PyQt5 (python) GUI 在运行 .exe 后崩溃,未解决的错误代码 0x80004005(未指定的错误)的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.5,单独窗口中的 pyqt5 进度条 gui

PyQt5,MacOS - 强制 GUI 坚持当前打开的桌面空间

python GUI编程(基于PyQt5)

Python-GUI编程-PyQt5

如何在 Python 中将函数连接到 PyQT5 GUI

在不终止启动 Python 脚本的情况下关闭 pyqt5 GUI