无法使用 auto-py-to-exe 包含 ffmpeg.exe

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

我正在尝试使用 auto-py-to-exe 为使用 ffmpeg 的 PyQT 应用程序生成一个 exe。

在应用程序中,有对 ffmpeg 作为操作系统命令的调用(如“ffmpeg -i file ... output”)。 由于我的计算机上安装了 ffmpeg,并且可以从 Windows 路径访问,因此当我在计算机上运行应用程序 exe 时,没有任何问题。

但是,当有人没有安装 ffmpeg 时,他/她会遇到类似“'ffmpeg' 未被识别为内部或外部命令、操作程序或批处理文件”的错误

我不想将 ffmpeg 放在应用程序的文件夹中,因为我调用已经将 ffmpeg 作为操作系统命令调用的本地模块。

我首先尝试将 ffmpeg.exe 添加为文件(按照一篇 stackoverflow 帖子中的建议),然后添加为二进制文件,但没有成功

我已经尝试过这里所述的配置

有人可以帮我吗?

python windows ffmpeg exe auto-py-to-exe
1个回答
0
投票

对我有帮助的答案是这里。 我将 ffmpeg.exe 添加到根目录下的二进制文件中,并将其作为附加文件添加到根目录下。

--add-data "D:/sdw/ffmpeg/ffmpeg.exe;." --add-binary "D:/sdw/ffmpeg/ffmpeg.exe;."  

然后在代码中,您需要使用上面答案中突出显示的相对路径来调用 ffmpeg -i... 内容。

def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
    # PyInstaller creates a temp folder and stores path in _MEIPASS
    base_path = sys._MEIPASS
except Exception:
    base_path = os.path.abspath(".")

所以 subprocess.run 是这样的

subprocess.run(resource_path('ffmpeg -i .... ')

这对我有用,但是我只是一个从事小项目的菜鸟,所以我希望它至少为您指明了正确的方向。

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