external video
This commit is contained in:
parent
c8dc189f99
commit
b0b1d64b6b
77
comfy-nodes/external_video.py
Normal file
77
comfy-nodes/external_video.py
Normal file
@ -0,0 +1,77 @@
|
||||
import folder_paths
|
||||
import os
|
||||
|
||||
import uuid
|
||||
from tqdm import tqdm
|
||||
|
||||
video_extensions = ['webm', 'mp4', 'mkv', 'gif']
|
||||
|
||||
def input_video_files():
|
||||
input_dir = folder_paths.get_input_directory()
|
||||
files = []
|
||||
for f in os.listdir(input_dir):
|
||||
if os.path.isfile(os.path.join(input_dir, f)):
|
||||
file_parts = f.split('.')
|
||||
if len(file_parts) > 1 and (file_parts[-1] in video_extensions):
|
||||
files.append(f)
|
||||
return files
|
||||
|
||||
class ComfyUIDeployExternalVideo:
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
files = input_video_files()
|
||||
return {
|
||||
"required": {
|
||||
"input_id": (
|
||||
"STRING",
|
||||
{"multiline": False, "default": "input_video"},
|
||||
),
|
||||
},
|
||||
"optional": {
|
||||
"default_value": (sorted(files),),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = (sorted(input_video_files()),)
|
||||
RETURN_NAMES = ("video_path",)
|
||||
|
||||
FUNCTION = "run"
|
||||
|
||||
CATEGORY = "deploy"
|
||||
|
||||
def run(self, input_id, default_value=None):
|
||||
print("starting here?")
|
||||
input_dir = folder_paths.get_input_directory()
|
||||
if input_id.startswith('http'):
|
||||
import requests
|
||||
print("Fetching video from URL: ", input_id)
|
||||
response = requests.get(input_id, stream=True)
|
||||
file_size = int(response.headers.get('Content-Length', 0))
|
||||
file_extension = input_id.split('.')[-1].split('?')[0] # Extract extension and handle URLs with parameters
|
||||
if file_extension not in video_extensions:
|
||||
file_extension = ".mp4"
|
||||
|
||||
unique_filename = str(uuid.uuid4()) + "." + file_extension
|
||||
video_path = os.path.join(input_dir, unique_filename)
|
||||
chunk_size = 1024 # 1 Kibibyte
|
||||
|
||||
num_bars = int(file_size / chunk_size)
|
||||
|
||||
with open(video_path, 'wb') as out_file:
|
||||
for chunk in tqdm(
|
||||
response.iter_content(chunk_size=chunk_size),
|
||||
total=num_bars,
|
||||
unit='KB',
|
||||
desc="Downloading",
|
||||
leave=True
|
||||
):
|
||||
out_file.write(chunk)
|
||||
print("returning unique_filename: ", unique_filename)
|
||||
return (unique_filename,)
|
||||
|
||||
print("returning default_value: ", default_value)
|
||||
return (default_value,)
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {"ComfyUIDeployExternalVideo": ComfyUIDeployExternalVideo}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {"ComfyUIDeployExternalVideo": "External Video (ComfyUI Deploy)"}
|
Loading…
x
Reference in New Issue
Block a user