python - 如何将 FFMPEG 导出到我的 Python 程序中?

标签 python ffmpeg export pyinstaller hardcode

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

我的电脑上安装了FFMPEG,所以在我的电脑上运行程序没有任何问题。

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

我能否将 FFMPEG 包装/包含到我的程序中,并在需要时自动安装/使用它?怎么办?

最佳答案

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

首先,从 here 下载预编译的二进制文件.然后将内容提取到名为 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

关于python - 如何将 FFMPEG 导出到我的 Python 程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56370173/

相关文章:

python - 如何在 numpydoc 中输入 int 列表

android - 如何更快地压缩android中的视频?

video - 我应该在压缩之前模糊视频还是在使用带有 ffmpeg 的过滤器期间模糊视频?

google-chrome - 如何使用 chrome.tabCapture.capture 生成无损视频文件?

xml - Oracle - 自动导出/卸载数据

mysql - 在 MySQL 中将规范化表导出为矩阵格式

python - 如何在 Python 3 中实现 POSIX 文件描述符?

python - 如何通过调用 Kivy Python 中的函数来设置小部件属性?

c++ - Visual Studio (2012) 更改 dll 以导出类和变量

python - 如何重载 `__eq__` 来比较 pandas DataFrames 和 Series?