3 python ffmpeg export hardcode pyinstaller
我为 Windows 10 编写了一个 Python 程序,它将音频文件从任何支持的格式转换为 .flac,并使用 FFMPEG 进行编码。
我的电脑上安装了FFMPEG,所以在我的电脑上运行该程序没有任何问题。
我曾经PyInstaller将程序导出为 .exe,现在我想在发行版中包含 FFMPEG,这样人们就不必单独下载它来运行我的脚本。
我可以将 FFMPEG 包装/包含到我的程序中,并在需要时自动安装/使用它吗?如何?
如果您想在项目中使用外部文件,则需要将其捆绑到输出可执行文件中。每当您的可执行文件运行时,它都会将所有依赖项提取到临时目录中并在代码中使用它。为此,您可以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()
Run Code Online (Sandbox Code Playgroud)
使用以下命令生成可执行文件:
pyinstaller -F --add-data "./ffmpeg/*;./ffmpeg/" script.py
Run Code Online (Sandbox Code Playgroud)
并使用这样的程序:
script.exe sample.mp4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5954 次 |
| 最近记录: |