我写了一个Python程序,使用ffmpeg进行编码,将音频文件从任何受支持的格式转换为.flac。 Ffmpeg已安装在我的计算机中,因此在我的计算机上运行它时没有任何问题。
我使用pyinstaller在.exe中对程序进行硬编码,现在我希望我的朋友尝试一下。 由于ffmpeg对于随机用户而言不像我的朋友那样容易安装,因此我希望以某种方式将其包含在我的程序中。
首先想到的是,我将包括一个脚本来自动执行ffmpeg安装过程,并为ffmpeg安装程序打包好我的东西,但是我不知道该怎么做。
这甚至可能吗?如果是,该怎么办?这是一个好的解决方案吗?如果不是,您有什么建议?
致谢
答案 0 :(得分:0)
如果要在项目中使用外部文件,则需要将其捆绑到输出可执行文件中。只要可执行文件运行,它将把所有依赖项提取到temp目录中,并在代码中使用它。为此,您可以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