103 lines
5.3 KiB
Markdown
103 lines
5.3 KiB
Markdown
# Documentation
|
|
- Class name: LoadVideoUpload
|
|
- Category: Video Helper Suite 🎥🅥🅗🅢
|
|
- Output node: False
|
|
- Repo Ref: https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.git
|
|
|
|
LoadVideoUpload节点旨在高效管理和处理视频文件。它能够从多种来源加载视频,包括本地文件和URL,并提供上采样和操作视频帧的功能。该节点确保视频数据被正确格式化并准备好用于后续处理阶段。
|
|
|
|
# Input types
|
|
## Required
|
|
- video
|
|
- 'video'参数至关重要,因为它指定了要处理的视频文件的来源。它可以是指向本地文件的路径,也可以是指向在线视频的URL。此参数直接影响节点加载和访问视频内容的能力。
|
|
- Comfy dtype: STRING
|
|
- Python dtype: str
|
|
## Optional
|
|
- force_rate
|
|
- 'force_rate'参数允许调整视频的帧率。这是一个可选设置,可用于确保不同视频之间的帧率一致,这对于某些视频处理任务很重要。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- force_size
|
|
- 'force_size'参数用于指定视频帧的期望分辨率。它提供几种预设选项,并允许设置自定义尺寸,这对于保持纵横比或适应特定的显示要求可能是必要的。
|
|
- Comfy dtype: STRING
|
|
- Python dtype: str
|
|
- custom_width
|
|
- 当需要自定义视频尺寸时,'custom_width'设置视频帧的宽度。这是一个重要的参数,用于视频尺寸调整操作,确保视频适应所需的宽度限制。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- custom_height
|
|
- 'custom_height'参数通过设置视频帧的高度来补充'custom_width'。它在视频尺寸调整中扮演重要角色,特别是当视频内容需要特定的高度要求时。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- frame_load_cap
|
|
- 'frame_load_cap'参数决定了从视频中加载的最大帧数。它有助于控制内存使用和处理时间,特别是处理长视频时。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- skip_first_frames
|
|
- 'skip_first_frames'参数使节点能够跳过视频开头指定数量的帧。这对于从视频处理工作流程中省略不需要的内容或片头很有用。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- select_every_nth
|
|
- 'select_every_nth'参数用于从视频中以规律间隔选择帧。它有助于降低帧率或创建视频内容的摘要。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
|
|
# Output types
|
|
- IMAGE
|
|
- 'IMAGE'输出以张量的形式提供视频帧,这是一个多维数组,适用于进一步的视频分析和处理。
|
|
- Comfy dtype: TENSOR
|
|
- Python dtype: torch.Tensor
|
|
- frame_count
|
|
- 'frame_count'输出指示从视频中加载的总帧数,这对于了解视频数据的范围至关重要。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- audio
|
|
- 'audio'输出是一个函数,当被调用时,提供对视频的音频流的访问。这可以用于音频分析或与视频帧一起用于进一步处理。
|
|
- Comfy dtype: FUNCTION
|
|
- Python dtype: Callable[[], Any]
|
|
- video_info
|
|
- 'video_info'输出包含有关视频的元数据,如帧率、时长和尺寸。这些信息对于需要了解视频特性的各种视频处理任务非常有价值。
|
|
- Comfy dtype: DICT
|
|
- Python dtype: Dict[str, Union[int, float, str]]
|
|
|
|
# Usage tips
|
|
- Infra type: CPU
|
|
|
|
# Source code
|
|
```
|
|
class LoadVideoUpload:
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
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 {'required': {'video': (sorted(files),), 'force_rate': ('INT', {'default': 0, 'min': 0, 'max': 60, 'step': 1}), 'force_size': (['Disabled', 'Custom Height', 'Custom Width', 'Custom', '256x?', '?x256', '256x256', '512x?', '?x512', '512x512'],), 'custom_width': ('INT', {'default': 512, 'min': 0, 'max': DIMMAX, 'step': 8}), 'custom_height': ('INT', {'default': 512, 'min': 0, 'max': DIMMAX, 'step': 8}), 'frame_load_cap': ('INT', {'default': 0, 'min': 0, 'max': BIGMAX, 'step': 1}), 'skip_first_frames': ('INT', {'default': 0, 'min': 0, 'max': BIGMAX, 'step': 1}), 'select_every_nth': ('INT', {'default': 1, 'min': 1, 'max': BIGMAX, 'step': 1})}, 'optional': {'meta_batch': ('VHS_BatchManager',)}, 'hidden': {'unique_id': 'UNIQUE_ID'}}
|
|
CATEGORY = 'Video Helper Suite 🎥🅥🅗🅢'
|
|
RETURN_TYPES = ('IMAGE', 'INT', 'VHS_AUDIO', 'VHS_VIDEOINFO')
|
|
RETURN_NAMES = ('IMAGE', 'frame_count', 'audio', 'video_info')
|
|
FUNCTION = 'load_video'
|
|
|
|
def load_video(self, **kwargs):
|
|
return load_video_cv(**kwargs)
|
|
|
|
@classmethod
|
|
def IS_CHANGED(s, video, **kwargs):
|
|
image_path = folder_paths.get_annotated_filepath(video)
|
|
return calculate_file_hash(image_path)
|
|
|
|
@classmethod
|
|
def VALIDATE_INPUTS(s, video, force_size, **kwargs):
|
|
import requests
|
|
if video.startswith('http'):
|
|
resp = requests.head(video)
|
|
if resp.status_code != 200:
|
|
return 'Invalid video file: {}'.format(video)
|
|
elif not folder_paths.exists_annotated_filepath(video):
|
|
return 'Invalid video file: {}'.format(video)
|
|
return True
|
|
``` |