Compare commits

...
35 Commits
Author SHA1 Message Date
sakura1bgx 131b0b93d3 Update pyproject.toml 2025-02-16 01:48:19 +09:00
sakura1bgx fe96226508 Update README.md 2025-02-16 01:46:12 +09:00
sakura1bgx 55d621d288 Update flipstreamviewer.py
- Improve status message.
- Enhance node flexibility.
- Optimize frame processing.
2025-02-16 01:44:25 +09:00
sakura1bgx 163a5da00d Add files via upload 2025-02-16 01:38:20 +09:00
sakura1bgx d433488062 Update pyproject.toml 2025-02-14 20:06:23 +09:00
sakura1bgx 466f08ea11 Update grab_rembg_depth_animate.json 2025-02-14 20:05:46 +09:00
sakura1bgx ef0e387e89 Update animate.json 2025-02-14 20:04:22 +09:00
sakura1bgx 76b80a0089 Update flipstreamviewer.py
- Reimplement FlipStreamVideoInput using imageio.
- Set default stream compression to 0.
2025-02-14 20:01:53 +09:00
sakura1bgx 3837719be1 Update pyproject.toml 2025-02-13 00:07:52 +09:00
sakura1bgx b3592893f7 Update requirements.txt 2025-02-13 00:07:21 +09:00
sakura1bgx 02c0549a5b Update flipstreamviewer.py
- Faster streaming.
- Removed refresh checkbox.
2025-02-13 00:06:30 +09:00
sakura1bgx f9eed7e13e Update flipstreamviewer.py
- Remove unnecessary import
- Implement checkbox to enable/disable status refresh
- Optimize stream logic for better performance
2025-02-11 03:50:52 +09:00
sakura1bgx 5bebd491fd Update pyproject.toml 2025-02-09 14:04:42 +09:00
sakura1bgx 5d9981a956 Update README.md 2025-02-09 14:03:26 +09:00
sakura1bgx e6ddef866c Update flipstreamviewer.py
- Fixed presetDialog buttons layout.
- Fixed presetFolder, presetFile queries.
2025-02-09 13:50:13 +09:00
sakura1bgx 8a145a1494 Update pyproject.toml 2025-02-09 07:32:11 +09:00
sakura1bgx ee34b613b7 Update README.md 2025-02-09 07:30:14 +09:00
sakura1bgx 5689d49335 Update README.md 2025-02-09 07:29:47 +09:00
sakura1bgx 379656b405 Update README.md 2025-02-09 07:25:30 +09:00
sakura1bgx e633e18387 Add files via upload 2025-02-09 06:49:36 +09:00
sakura1bgx 5135252801 Add files via upload
- Add new nodes: FlipStreamSection, FlipStreamFileSelect_ControlNetModel, FlipStreamFileSelect_Input, FlipStreamFileSelect_Output, FlipStreamScreenGrabber, FlipStreamSource, and FlipStreamRembg.
- Remove nodes: FlipStreamVideoInput and FlipStreamFileSelect_VideoSrc due to missing some codec support.
- Implement preset selection button and dialog.
- Add new queries: toggleView, showPresetDialog, presetFolder, and preset.
2025-02-09 06:48:51 +09:00
sakura1bgx c727b903bb Update README.md
add animate.json workflow and some fix.
2025-01-31 01:54:41 +09:00
sakura1bgx f3dda0da69 Add files via upload 2025-01-31 01:53:13 +09:00
sakura1bgx 76480e9198 Update flipstreamviewer.py
fix to clean warning
2025-01-30 20:09:20 +09:00
sakura1bgx 30eed43b99 Update README.md
fix escape
2025-01-30 20:00:39 +09:00
sakura1bgx 104a71a380 Update pyproject.toml
v3.0.0
2025-01-30 19:49:20 +09:00
sakura1bgx 5ede2a6213 Update README.md 2025-01-30 19:46:00 +09:00
sakura1bgx 1739c61b68 Update README.md 2025-01-30 19:41:50 +09:00
sakura1bgx d63f8322e5 Update README.md 2025-01-30 19:38:43 +09:00
sakura1bgx 3bddecf4fe Add files via upload 2025-01-30 19:31:13 +09:00
sakura1bgx ba62ff8503 Delete workflows/workflow.json 2025-01-30 19:29:45 +09:00
sakura1bgx 214573981c Delete presetsamples directory 2025-01-30 19:29:19 +09:00
sakura1bgx ff5fa12bfc Update publish.yml
fix branches
2025-01-30 13:58:59 +09:00
sakura1bgx 5a8f1af2e8 Add files via upload
- Fix videosrc function.
2024-11-04 13:39:41 +09:00
sakura1bgx b46775489c Add files via upload
- Fix to {lora} replacement can be used in appPrompt.
2024-10-31 18:58:34 +09:00
14 changed files with 13491 additions and 2188 deletions
-1
View File
@@ -4,7 +4,6 @@ on:
push:
branches:
- main
- master
paths:
- "pyproject.toml"
+82 -92
View File
@@ -1,128 +1,118 @@
# ComfyUI_FlipStreamViewer
**ComfyUI_FlipStreamViewer** is a tool that provides a viewer interface for flipping images with frame interpolation, allowing you to watch high-fidelity pseudo-videos without needing AnimateDiff.
**ComfyUI_FlipStreamViewer** is a tool that provides a customizable viewer interface for flipping images with frame interpolation.
![sample](https://github.com/user-attachments/assets/4ceecd68-bd35-4eb5-95bf-4ce822ff0591)
## Required Custom Nodes
Please install the following nodes via ComfyUI-Manager:
- ComfyUI Impact Pack
- ComfyUI Frame Interpolation
- ComfyUI WD 1.4 Tagger
- ComfyUI-Advanced-ControlNet
- ComfyUI-AutomaticCFG
- LoRA Tag Loader for ComfyUI
<div><video controls src="https://github.com/user-attachments/assets/2a40c7c6-045e-4d86-a0fd-51a24f5472b4"></video></div>
## Getting Started
1. **Run ComfyUI** and from ComfyUI-Manager, select Manager -> Custom Node Manager and install ComfyUI_FlipStreamViewer.
2. **Restart ComfyUI** and load the `workflow.json` file located in the `workflows` folder.
3. Access the viewer at the following URL if ComfyUI is running at `http://localhost:8188`:
2. **Restart ComfyUI** and load the `simple.json` file located in the `workflows` folder.
3. Access the viewer at the following URL if ComfyUI is running at localhost port 8188:
`http://localhost:8188/viewer`
`http://localhost:8188/flipstreamviewer`
4. To respond to viewer input:
- Check 'Extra options', 'Auto Queue', and 'instant' on the ComfyUI control panel.
- Then click the 'Queue Prompt' button.
5. The 'preset' folder may be created in the current directory for saving and loading preset files. Sample presets can be found in the `presetsamples` folder.
5. The UI nodes will refresh after the workflow is completed once, so you need to click 'Update and reload' after that.
## Prompt Format
6. The 'preset' folder may be created in the current directory for saving and loading preset files.
Use the following format for input prompts. The 'pre text' and 'append text' sections apply to all frames. The separator `----` should consist of four hyphens, and each line of 'frameN text' applies to individual frames. The '{lora}' means it will be replaced by the LoRA input contents at the right panel.
```
pre text,
{lora}
----
- frame1 text
- frame2 text
----
append text
```
### Limitations
## Limitations
- Please note that this tool is not designed with security measures against third-party attacks. Therefore, it should only be used for personal purposes within a secure network.
- There is no save video function available; please customize your workflow as needed.
- Excessively long text may cause exceptions.
- The keywords `BREAK`, `AND` cannot be used in the prompt.
## Parameters
## Optional Custom Nodes dependencies
You can adjust the following parameters on the viewer:
The following custom nodes can be used as needed:
- ComfyUI-WD14-Tagger: For Tagger
- ComfyUI-Inspyrenet-Rembg: For FlipStreamRembg
- ComfyUI-Florence2: For FlipStreamSegMask
- ComfyUI-Frame-Interpolation: For FlipStreamFilmVfi
- **Seed**: Random seed for KSampler.
- **Keep**: Keeped seed.
- **Iv**: Interval in seconds for auto-changing the random seed.
- **Nstp**: Steps for KSampler.
- **Ncfg**: CFG for KSampler.
- **Nsta**: Start step for the second KSampler; increasing this value will stabilize the output between frames.
- **Nfrm**: Number of frames; each frame undergoes x8 interpolation in the sample workflow.
- **Nspf**: Seconds per frame displayed in the viewer stream.
- **Rate**: LoRA late for toggle and add tags rank.
- **Nfst**: Seek first frame for video source
- **Nskp**: Skip frames for video source
- **Nstr**: Strength for video source controlnet
- **Nwth**: Threshould for WD14Tagger.
- **Ncth**: Character threshould for WD14Tagger.
The following custom nodes may also be used within workflows:
- ComfyUI Impact Pack
- LoRA Tag Loader for ComfyUI
- ComfyUI-AnimateDiff-Evolved
- ComfyUI-VideoHelperSuite
- ComfyUI-DepthAnythingV2
## Inputs
## UI Features
Provide the following text inputs in the viewer:
- **Customizable Left Panel**: The left panel UI is customizable with UI Nodes.
- **UI Node Ordering**: These UI nodes are ordered by their titles, and you can change the node titles to something like '10.steps' or '11.cfg'. You can also click on the title to compact the node on the workflow.
- **Label Input**: Each UI node has a 'label' input, which should be a unique identifier used as the parameter name. 'loramode', 'lora', 'offsetX', 'offsetY' and 'scale' are internally used, so they cannot be used for labels.
- **Enable Output**: Each UI node also has an 'enable' output to use with 'Control Bridge' for switching to bypass some nodes or FlipStreamSwitch* for switching input.
- **Right Panel**: You can operate several prepared functions such as Status, Darker, Tagger, Preset, and Lora.
- **Status**: The right panel shows ComfyUI status and error information.
- **Darker**: You can adjust the image brightness on the viewer using the darker parameter. It can also be set via query:
`http://localhost:8188/flipstreamviewer?darker=0.33`
- **Tagger**: You can capture screenshots and generate tags from images using WD14. It depends on ComfyUI-WD14-Tagger.
- **Preset**: You can save and load parameters that are set on viewer controls. The 'M' button means Move to another folder. It can also be set via query:
`http://localhost:8188/flipstreamviewer?showPresetDialog=1&presetFolder=folder_name&presetFile=file_name.json`
- **Lora**: You can select LoRA and choose tags. It can also choose random tags. The LoRA preview box can be clicked to jump to the Civitai LoRA page if found. The 'M' button means Move to another folder. The 'T' button means Toggle. The 'R' button means Random choose.
- **Toggle View**: You can click the center panel to hide the left and right panels, and a subsequent click will hide the image. It can also be set via query:
`http://localhost:8188/flipstreamviewer?toggleView=1`
- **Auto Hide**: Stream and preview in the viewer will automatically hide after 5 minutes if the page is not reloaded.
- **Prompt Input**: Located at the top of the left panel (refer to the Prompt Format section above).
- **Negative Prompt Input**: Located below the Prompt Input; this applies to all frames.
- **LoRA Input**: Located in the middle of the right panel; input LoRA such as `<lora:startsfilename:1>`.
## UI Nodes
## Controls
- **FlipStreamSection**: A section label for UI Nodes.
- **FlipStreamSlider**: A slider for adjusting values.
- **FlipStreamTextBox**: A text box for inputting multiline text.
- **FlipStreamInputBox**: An input box for various boxtype inputs. The 'U' button means update. You can choose special boxtype 'seed' or 'r4d' with the 'R' button, which means randomize. The boxtype 'r4d' can be used to generate a 4-digit part of a prompt like 'MOV_{num}'. In this case, FlipStreamTextReplace can help find '{num}' and replace with the output of the input box.
- **FlipStreamSelectBox_Samplers**: A select box for choosing samplers.
- **FlipStreamSelectBox_Scheduler**: A select box for choosing schedulers.
- **FlipStreamFileSelect_Checkpoints**: A file selector for checkpoints. 'mode' is used to select a subfolder such as 'sd15', 'sdxl', 'pony', or 'flux' in 'checkpoints'. If 'use_lora' is true, it will also affect the 'mode' for the Lora selector. 'use_sub' means using subfolders in the 'mode' folder. 'use_move' means using the move file selector.
- **FlipStreamFileSelect_VAE**: A file selector for VAE models.
- **FlipStreamFileSelect_ControlNetModel**: A file selector for ControlNet models.
- **FlipStreamFileSelect_TensorRT**: A file selector for TensorRT models. It may be used with ComfyUI_TensorRT.
- **FlipStreamFileSelect_AnimateDiffModel**: A file selector for AnimateDiff models. It may be used with ComfyUI-AnimateDiff-Evolved.
- **FlipStreamFileSelect_Input**: A file selector for ComfyUI input folder.
- **FlipStreamFileSelect_Output**: A file selector for ComfyUI output folder.
- **FlipStreamPreviewBox**: A box for previewing input image.
**Left Panel Buttons:**
## Other Nodes
- **U**: Apply input data to the workflow.
- **R**: Change the random seed and update.
- **K**: Keep the seed to search for another good seed.
- **B**: Go back to the previous seed.
- **M**: Move the checkpoint file.
**Right Panel Buttons:**
- **T**: Toggle LoRA enable/disable.
- **M**: Move the LoRA file.
- **T**: Toggle tag enable/disable at the LoRA Input.
- **R**: Add random tags at the LoRA Input.
- **PV**: Preview video source.
- **R**: Select random preset.
- **P**: Load a preset prompt only.
- **L**: Load a preset.
- **M**: Move the Preset file.
- **Save**: Save the current preset.
- **C**: Capture an image from another browser tab or desktop and set it as the first frame; useful with W.
- **W**: Apply WD14Tagger to the first frame; outputs tags to LoRA input.
- **T**: Toggle tags in LoRA input.
- **U**: Update without reload; useful with T.
- **Clr**: Clear the LoRA input.
## Additional Features
- **LoRA Preview**: At the bottom of the right panel; click to jump to the Civitai LoRA page if found.
- **Auto-hide**: Click to hide controls and images or the viewer auto-hides after 5 minutes of inactivity (reload).
- **FlipStreamSetParam**: A node for setting parameters. However, it needs a reload to update the value in the viewer UI.
- **FlipStreamGetParam**: A node for getting parameters. 'lora' is a prepared parameter that contains text at the Lora input. Some prompts can contain '{lora}' and FlipStreamTextReplace can help find '{lora}' and replace it with the output of the get param node of 'lora'. 'b64dec' is true for 'lora' and other 'FlipStreamTextBox' parameters, because these multiline parameters are internally base64 encoded.
- **FlipStreamImageSize**: A node for getting image size.
- **FlipStreamTextReplace**: A node for replacing text. It will output the result of `text.replace(find, replace.format(value))`.
- **FlipStreamScreenGrabber**: A node for grab multiframe screenshots.
- **FlipStreamSource**: A node for prepare image or latent source.
- **FlipStreamSwitchImage**: A node for switching images.
- **FlipStreamSwitchLatent**: A node for switching latents.
- **FlipStreamRembg**: A node for remove background. It depends on ComfyUI-Inspyrenet-Rembg.
- **FlipStreamSegMask**: A node for segmentation masks. The target can contain multiple words separated by commas for segmentation. It will use the 'microsoft/Florence-2-large' model, which you can download using the DownloadAndLoadFlorence2Model node of ComfyUI-Florence2. Segmentation sometimes fails, so you may need to try some other random seeds.
- **FlipStreamBatchPrompt**: A node for simple batch prompting. Use the following format for the input prompt of this node. The 'pre text' and 'append text' sections apply to all frames. The separator `----` should consist of four hyphens, and each line of 'frame text' applies evenly to the number of frames specified in 'frames'. For example, if 'frames' is 8 and there are 2 'frame text' lines, they will be applied starting from frames 0 and 4.
```
pre text,
----
- frame text,
- frame text,
----
append text
```
- **FlipStreamFilmVfi**: A node for video frame interpolation. It depends on ComfyUI-Frame-Interpolation.
- **FlipStreamViewer**: A node for viewing content. The 'allowip' parameter allows you to set IP addresses that can access the viewer. ComfyUI commandline options "--listen 0.0.0.0" and appropriate firewall settings are also needed for that. The 'w14exc' parameter is used to set exclude_tags for the WD14 Tagger. 'fps' can control flip speed.
## For More Quality
- Use more higher-quality checkpoint models.
- To enhance stability between frames, use a deliberate prompt in the 'pre text' to establish a consistent background, such as `ideal background, on desk`.
- Select the appropriate words or LoRA in 'frameN text' to achieve the desired motion.
- Select the appropriate words or LoRA in 'frame text' to achieve the desired motion.
## For More Speed
- ComfyUI commandline options '--highvram --fast --fp8_e4m3fn-unet' are good for speed, however it depends on system and model.
- ComfyUI commandline options '--fast --fp8_e4m3fn-unet' are good for speed, however it depends on system and model.
## Customizing Workflow
## Workflow Examples
You can customize the workflow for specific needs:
- **FlipStreamLoader**: Use the 'mode' parameter to switch between sub-directories for checkpoints and LoRAs, useful for managing models like sd15, pony, etc.
- **FlipStreamSetMode**: Only change the 'mode' parameter for the workflow without checkpoints.
- **FlipStreamViewer**: The 'allowip' parameter allows you to set IP addresses that can access the viewer. The 'w14exc' parameter is used to set exclude_tags for the WD14 Tagger.
- **simple.json**: Customized a ComfyUI default workflow for FlipStreamViewer UI nodes.
- **dmd2_lora.json**: Using DMD2 and some LoRA, only needs 5 steps to generate an image.
- **segmask.json**: A 2-step process for generating frames using batch prompts and segmentation mask, followed by interpolation.
- **animate.json**: Using AnimateDiff with FlipStreamSource, FlipStreamBatchPrompt, and FlipStreamFilmVfi.
- **grab_rembg_depth_animate.json**: Using ControlNet and AnimateDiff with FlipStreamScreenGrabber, FlipStreamRembg.
- **quick_vid2vid.json**: Quick tuning workflow for vid2vid.
+1504 -684
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -1 +0,0 @@
{"prompt": "aGlnaHJlcywgaWRlYWwgYmFja2dyb3VuZCwgb24gdGFibGUsIHNvbG8sIGJsYWNrIGNhdCwKe2xvcmF9Ci0tLS0KLSAKLSBzaXR0aW5nCi0tLS0=", "negativePrompt": "", "seed": 0, "keepSeed": 0, "steps": 12, "cfg": 4, "interval": 30, "sampler": "dpmpp_2m,sgm_uniform", "checkpoint": "", "lora": "bG9yYSBhbmQgZGV0YWlscw==", "startstep": 0, "frames": 2, "framewait": 1, "offsetX": 0, "offsetY": 0, "scale": 100}
+2 -2
View File
@@ -1,7 +1,7 @@
[project]
name = "comfyui_flipstreamviewer"
description = "ComfyUI_FlipStreamViewer is a tool that provides a viewer interface for flipping images with frame interpolation, allowing you to watch high-fidelity pseudo-videos without needing AnimateDiff. Please note that this tool is not designed with security measures against third-party attacks. Therefore, it should only be used for personal purposes within a secure network."
version = "2.1.0"
description = "ComfyUI_FlipStreamViewer is a tool that provides a customizable viewer interface for flipping images with frame interpolation."
version = "3.1.4"
license = {file = "LICENSE.txt"}
[project.urls]
+2 -1
View File
@@ -1 +1,2 @@
opencv-python
imageio
mss
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff