You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用auto-py-to-exe打包PyQT应用时无法包含ffmpeg.exe的问题

打包带FFmpeg的PyQt应用解决方案

问题根源

你本地跑exe没问题是因为系统Path里已经装了FFmpeg,而打包进去的FFmpeg没被代码正确识别——PyInstaller打包后,运行时会把二进制文件解压到临时目录(sys._MEIPASS),直接敲ffmpeg命令的话,系统优先找Path里的,不会管打包进去的那个。至于你本地打包后反而找不到,大概率是本地环境的FFmpeg Path有冲突,或者运行exe时的工作目录不对。

一步步解决

1. 改代码,让程序自动找到打包的FFmpeg

不管用auto-py-to-exe还是PyInstaller,都得让代码能定位到打包进去的FFmpeg:
先加个获取路径的函数:

import sys
import os

def get_ffmpeg():
    # 打包后的临时目录,没打包的话就取当前脚本目录
    base_dir = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_dir, 'ffmpeg.exe')

然后把原来的os.system('ffmpeg -i ...')改成指定路径调用,推荐用subprocess比os.system更靠谱:

import subprocess
ffmpeg_exe = get_ffmpeg()
subprocess.run([ffmpeg_exe, '-i', '你的输入文件', '你的输出文件'], check=True)

2. 用auto-py-to-exe正确打包FFmpeg

打开auto-py-to-exe后:

  • 切到Additional Files标签,点Add Files选你的ffmpeg.exe
  • 打包模式选One File或One Directory都行:选One File的话,FFmpeg会被打包进exe,运行时自动解压到临时文件夹;选One Directory的话,FFmpeg会和生成的exe放在同一个文件夹里

3. 解决本地运行exe找不到FFmpeg的问题

你本地出现报错,试试这两个办法:

  • 别在命令行随便路径下运行exe,先cd到exe所在的文件夹,再运行
  • 临时把系统Path里的FFmpeg删掉,测试打包后的exe能不能调用自带的版本,验证是否正常

4. 备选:直接把FFmpeg和exe放一起分发

如果不想把FFmpeg打包进exe,也可以直接把ffmpeg.exe和生成的exe放同一个文件夹,代码里这么写:

ffmpeg_exe = os.path.join(os.path.dirname(sys.executable), 'ffmpeg.exe')
subprocess.run([ffmpeg_exe, '-i', '输入文件', '输出文件'])

为啥其他机器能正常跑?

其他机器没装系统级的FFmpeg,所以运行exe时会自动找打包进去的或者同目录的FFmpeg;而你本地有Path里的FFmpeg,要么是路径优先级的问题,要么是本地FFmpeg版本和打包的版本冲突,导致调用失败。

内容的提问来源于stack exchange,提问作者YYY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:22:56