PyQt5 (python) GUI 在 运行 .exe 后崩溃,未解决的错误代码 0x80004005(未指定的错误)
PyQt5 (python) GUI crashes after running .exe, Unresolved error code 0x80004005 (Unspecified error)
我制作了一个非常简单的 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()
命令 window 给我以下错误消息:
DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 (Unspecified error)
我无法学习足够的谷歌搜索或堆栈溢出来修复它,这是一个真正的挑战,因为我是一个相当新的程序员。
非常感谢您提供尝试的解决方案或想法!
已解决
显然,PyQt5 中的 QtMultimedia 依赖于 DirectShowPlayerService,为此您需要安装 DirectShow 解码器,例如 LAV Filters。所以,这实际上是我机器上的问题,而不是程序上的问题。
基本安装 LAV 过滤器解决了我的视频播放问题。
我在 google 翻译这个中文网站后找到了这个答案:
https://blog.csdn.net/Wangguang_/article/details/93312629
可以在此处找到 LAV 过滤器:
https://www.videohelp.com/software/LAV-Filters
我制作了一个非常简单的 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()
命令 window 给我以下错误消息:
DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 (Unspecified error)
我无法学习足够的谷歌搜索或堆栈溢出来修复它,这是一个真正的挑战,因为我是一个相当新的程序员。
非常感谢您提供尝试的解决方案或想法!
已解决
显然,PyQt5 中的 QtMultimedia 依赖于 DirectShowPlayerService,为此您需要安装 DirectShow 解码器,例如 LAV Filters。所以,这实际上是我机器上的问题,而不是程序上的问题。
基本安装 LAV 过滤器解决了我的视频播放问题。
我在 google 翻译这个中文网站后找到了这个答案:
https://blog.csdn.net/Wangguang_/article/details/93312629
可以在此处找到 LAV 过滤器: https://www.videohelp.com/software/LAV-Filters