120 lines
4.6 KiB
Markdown
120 lines
4.6 KiB
Markdown
---
|
|
tags:
|
|
- Multimedia
|
|
- VideoHelperSuite
|
|
---
|
|
|
|
# Load Video (Path) 🎥🅥🅗🅢
|
|
## Documentation
|
|
- Class name: `VHS_LoadVideoPath`
|
|
- Category: `Video Helper Suite 🎥🅥🅗🅢`
|
|
- Output node: `False`
|
|
|
|
The VHS_LoadVideoPath node facilitates the loading of video files from specified paths for integration into a video processing workflow. It ensures the video file is accessible, validates the path, and prepares the video for subsequent processing or analysis tasks within the Video Helper Suite.
|
|
## Input types
|
|
### Required
|
|
- **`video`**
|
|
- Specifies the path to the video file to be loaded, enabling the node to access and process the video.
|
|
- Comfy dtype: `STRING`
|
|
- Python dtype: `str`
|
|
- **`force_rate`**
|
|
- Determines the frame rate to be enforced on the loaded video, allowing for consistent frame rate processing across videos.
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
- **`force_size`**
|
|
- Allows specifying a desired resolution for the video, facilitating the standardization of video sizes for processing.
|
|
- Comfy dtype: `COMBO[STRING]`
|
|
- Python dtype: `str`
|
|
- **`custom_width`**
|
|
- Sets a custom width for the video, enabling precise control over the video's dimensions.
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
- **`custom_height`**
|
|
- Sets a custom height for the video, enabling precise control over the video's dimensions.
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
- **`frame_load_cap`**
|
|
- Limits the number of frames to be loaded from the video, useful for processing videos within memory constraints.
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
- **`skip_first_frames`**
|
|
- Skips a specified number of initial frames in the video, useful for starting processing at a later point in the video.
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
- **`select_every_nth`**
|
|
- Selects every nth frame from the video for loading, allowing for sparse sampling of video frames.
|
|
- Comfy dtype: `INT`
|
|
- Python dtype: `int`
|
|
### Optional
|
|
- **`meta_batch`**
|
|
- Associates the loaded video with a specific batch for processing, facilitating batch operations within the Video Helper Suite.
|
|
- Comfy dtype: `VHS_BatchManager`
|
|
- Python dtype: `VHS_BatchManager`
|
|
## Output types
|
|
- **`IMAGE`**
|
|
- Comfy dtype: `IMAGE`
|
|
- The loaded video frames as images, ready for further processing.
|
|
- Python dtype: `List[Image]`
|
|
- **`frame_count`**
|
|
- Comfy dtype: `INT`
|
|
- The total number of frames loaded from the video.
|
|
- Python dtype: `int`
|
|
- **`audio`**
|
|
- Comfy dtype: `VHS_AUDIO`
|
|
- The audio track extracted from the video, if any.
|
|
- Python dtype: `VHS_AUDIO`
|
|
- **`video_info`**
|
|
- Comfy dtype: `VHS_VIDEOINFO`
|
|
- Metadata and information about the loaded video.
|
|
- Python dtype: `VHS_VIDEOINFO`
|
|
## Usage tips
|
|
- Infra type: `CPU`
|
|
- Common nodes: unknown
|
|
|
|
|
|
## Source code
|
|
```python
|
|
class LoadVideoPath:
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {
|
|
"required": {
|
|
"video": ("STRING", {"default": "X://insert/path/here.mp4", "vhs_path_extensions": video_extensions}),
|
|
"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):
|
|
if kwargs['video'] is None or validate_path(kwargs['video']) != True:
|
|
raise Exception("video is not a valid path: " + kwargs['video'])
|
|
return load_video_cv(**kwargs)
|
|
|
|
@classmethod
|
|
def IS_CHANGED(s, video, **kwargs):
|
|
return hash_path(video)
|
|
|
|
@classmethod
|
|
def VALIDATE_INPUTS(s, video, **kwargs):
|
|
return validate_path(video, allow_none=True)
|
|
|
|
```
|