首页 > 解决方案 > 如何将 FFMPEG 导出到我的 Python 程序中?

问题描述

我为 Windows 10 编写了一个 Python 程序,它将音频文件从任何支持的格式转换为 .flac,并使用 FFMPEG 进行编码。

FFMPEG 已安装在我的计算机上,因此在我的计算机上运行该程序时没有任何问题。

我曾经PyInstaller以 .exe 格式导出我的程序,现在我想在发行版中包含 FFMPEG,这样人们就不必单独下载它来运行我的脚本。

我可以将 FFMPEG 包装/包含到我的程序中,并在需要时自动安装/使用它吗?如何?

标签: pythonffmpegexportpyinstallerhardcode

解决方案


如果你想在你的项目中使用外部文件,你需要将它捆绑到你的输出可执行文件中。每当您的可执行文件运行时,它都会将所有依赖项提取到临时目录中并在您的代码中使用它。为此,您可以add-data标记。

首先,从这里下载预编译的二进制文件。然后将内容提取到名为ffmpeg(脚本文件旁边)的文件夹中。在下面的示例中,应用程序 ( script.py) 尝试使用 播放示例视频ffplay。我假设输入视频的路径将作为外部参数传递给程序。

import subprocess
import os
import sys


def resource_path(relative_path):
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)


def play():
   ffplay_path = "./ffmpeg/ffplay.exe"
   if len(sys.argv) > 1:
      file_path = sys.argv[1]
      p = subprocess.Popen([resource_path(ffplay_path), file_path])
   else:
      print("No file passed as argument!")


if __name__ == "__main__":
   play()

使用以下命令生成可执行文件:

pyinstaller -F --add-data "./ffmpeg/*;./ffmpeg/" script.py

并像这样使用程序:

script.exe sample.mp4

推荐阅读