Если вы хотите использовать внешние файлы с вашим проектом, вам нужно связать его с выходным исполняемым файлом. Который всякий раз, когда исполняется ваш исполняемый файл, он извлекает все зависимости во временный каталог и использует его в вашем коде. Для этого вы можете add-data
flag.
Сначала скачайте скомпилированные двоичные файлы из здесь . Затем извлеките содержимое в папку с именем 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