diff --git a/README.md b/README.md index f5a8534..707469b 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ The SaveVideo node takes in extracted frames and saves them back as a video file Saves output video file and/or extracted frames. The node takes extracted frames and metadata and can save them as a new video file and/or individual frame images. Video compression and frame PNG compression can be configured. +NOTE: If you are using **LoadVideo** as source of the frames, the audio of the original file will be maintained but only in case **images_limit** and **starting_frame** are equal to Zero. ### LoadFramesFromFolder The LoadFramesFromFolder node allows loading image frames from a folder and returning them as a batch. diff --git a/__init__.py b/__init__.py index 50bc22d..b75e7b2 100644 --- a/__init__.py +++ b/__init__.py @@ -3,117 +3,14 @@ import importlib.util import glob import os import sys -from .nnodes import init, get_ext_dir +from .nnodes import init, get_ext_dir,check_and_install,downloader import folder_paths -import requests -import subprocess import traceback -import platform - -import torch NODE_CLASS_MAPPINGS = {} NODE_DISPLAY_NAME_MAPPINGS = {} -def check_nvidia_gpu(): - try: - # Utilizza torch per verificare la presenza di una GPU NVIDIA - return torch.cuda.is_available() and 'NVIDIA' in torch.cuda.get_device_name(0) - except Exception as e: - print(f"Error while checking for NVIDIA GPU: {e}") - return False - -def get_cuda_version(): - try: - if torch.cuda.is_available(): - cuda_version = torch.version.cuda.replace(".","").strip() - - return "cu"+cuda_version - else: - return "No NVIDIA GPU available" - except Exception as e: - print(f"Error while checking CUDA version: {e}") - return "Unable to determine CUDA version" - -def check_avx2_support(): - import cpuinfo - try: - info = cpuinfo.get_cpu_info() - return 'avx2' in info['flags'] - except Exception as e: - print(f"Error while checking AVX2 support: {e}") - return False - -def get_python_version(): - return platform.python_version() - -def check_and_install(package, import_name=""): - if import_name == "": - import_name = package - try: - importlib.import_module(import_name) - print(f"{import_name} is already installed.") - except ImportError: - print(f"{import_name} is not installed. Installing...") - if package == "llama_cpp": - install_llama() - else: - install_package(package) - -def install_package(package): - subprocess.check_call([sys.executable, "-m", "pip", "install", "--no-cache-dir", package]) - -def install_llama(): - gpu = check_nvidia_gpu() - avx2 = check_avx2_support() - #python_version = get_python_version() - - - #python -m pip install llama-cpp-python --force-reinstall --no-deps --index-url=https://jllllll.github.io/llama-cpp-python-cuBLAS-wheels/AVX2/cu117 - if avx2: - avx="AVX2" - else: - avx="AVX" - - if gpu: - cuda = get_cuda_version() - subprocess.check_call([sys.executable, "-m", "pip", "install", "llama-cpp-python", "--no-cache-dir", "--force-reinstall", "--no-deps" , f"--index-url=https://jllllll.github.io/llama-cpp-python-cuBLAS-wheels/{avx}/{cuda}"]) - else: - subprocess.check_call([sys.executable, "-m", "pip", "install", "llama-cpp-python", "--no-cache-dir", "--force-reinstall"]) - -# llama wheels https://github.com/jllllll/llama-cpp-python-cuBLAS-wheels - -def check_module(package): - import importlib - try: - print("Detected: ", package) - importlib.import_module(package) - return True - except ImportError: - return False -import zipfile - - -def downloader(link): - print("Downloading dependencies...") - response = requests.get(link, stream=True) - try: - os.makedirs(folder_paths.get_temp_directory()) - except: - pass - temp_file = os.path.join(folder_paths.get_temp_directory(), "file.zip") - with open(temp_file, "wb") as f: - for chunk in response.iter_content(chunk_size=1024): - if chunk: - f.write(chunk) - - zip_file = zipfile.ZipFile(temp_file) - target_dir = os.path.join(folder_paths.folder_names_and_paths["custom_nodes"][0][0],"ComfyUI-N-Nodes","libs","rifle") # Cartella dove estrarre lo zip - - zip_file.extractall(target_dir) - - if init(): @@ -123,7 +20,6 @@ if init(): check_and_install('gitpython','git') check_and_install('moviepy') check_and_install("opencv-python","cv2") - check_and_install('zipfile') check_and_install('scikit-build',"skbuild") #LLAMA DEPENTENCIES check_and_install('typing') diff --git a/install.py b/install.py deleted file mode 100644 index 173f143..0000000 --- a/install.py +++ /dev/null @@ -1,30 +0,0 @@ -# code based on pysssss repo -import glob -import os -from .nnodes import init, get_ext_dir,check_and_install,downloader -import folder_paths - - - -py = get_ext_dir("py") -files = glob.glob("*.py", root_dir=py, recursive=False) -check_and_install('py-cpuinfo',"cpuinfo") -check_and_install('gitpython','git') -check_and_install('moviepy') -check_and_install("opencv-python","cv2") -check_and_install('zipfile') -check_and_install('scikit-build',"skbuild") -#LLAMA DEPENTENCIES -check_and_install('typing') -check_and_install('diskcache') -check_and_install('llama_cpp') - -#git clone https://github.com/hzwer/Practical-RIFE.git -from git import Repo -if not os.path.exists(os.path.join(folder_paths.folder_names_and_paths["custom_nodes"][0][0],"ComfyUI-N-Nodes","libs","rifle")): - Repo.clone_from("https://github.com/hzwer/Practical-RIFE.git", os.path.join(folder_paths.folder_names_and_paths["custom_nodes"][0][0],"ComfyUI-N-Nodes","libs","rifle")) -#if train_log folder not exists -if not os.path.exists(os.path.join(folder_paths.folder_names_and_paths["custom_nodes"][0][0],"ComfyUI-N-Nodes","libs","rifle","train_log")): - downloader("https://github.com/Nuked88/DreamingAI/raw/main/RIFE_trained_model_v4.7.zip") - - diff --git a/nnodes.py b/nnodes.py index f864866..a886394 100644 --- a/nnodes.py +++ b/nnodes.py @@ -9,10 +9,10 @@ from tqdm import tqdm import requests import subprocess import platform - +import importlib.util import torch - - +import folder_paths +import sys config = None