Compare commits

...
133 Commits
Author SHA1 Message Date
sakura1bgx 844bc7adad Update pyproject.toml 2026-09-21 11:34:07 +09:00
sakura1bgx cb06e1c129 Update README.md 2026-09-21 11:33:34 +09:00
sakura1bgx 62bf68f397 Update flipstreamviewer.js 2026-09-21 11:22:24 +09:00
sakura1bgx 5b85650858 Update flipstreamviewer.py
- Changed FlipStreamChatJson: `temperature` and `top_p` are now inputs.
- Add FlipStreamViewerVideo: streams frames and optional audio to the viewer.
- Add FlipStreamFileSelect_DiffusionModels.
- Add FlipStreamLogger.
- Some fixes.
2026-09-21 11:21:28 +09:00
sakura1bgx 98f3faabbc Update README.md 2026-01-17 09:27:38 +09:00
sakura1bgx 3339d466e5 Update pyproject.toml 2026-01-17 09:21:24 +09:00
sakura1bgx 085eb339df Update README.md 2026-01-17 09:20:47 +09:00
sakura1bgx bd9257763c Update README.md 2026-01-17 09:19:45 +09:00
sakura1bgx 5fd1ddcf24 Merge pull request #16 from sakura1bgx/develop
- Remove Tagger UI and WD14 functions.
- Remove wd14exc option from FlipStreamViewer
- Add FlipStreamButton
- Add FlipStreamGetFrame, it can be use with WD14Tagger node.
- Remove Tagger.
- AddFlipStreamFileSelect_Loras.
- Refine FlipStreamSetParam to refresh UI.
- Refine Section to folding UI.
- Add Secret xor_crypt function (joking level crypt).
- Fix FlipStreamFileSelect to be selectable collect path.
- Fix FlipStreamChat n_ctx, max_tokens option range.
- Add pingpong option to FlipStreamViewer.
- Add FlipStreamFileSelect_LLM node.
- Add elapsed time bar UI.
- Refine FlipStreamSource to support upscale with keep aspect.
- Add FlipStreamFileSelect_LLM node.
- Add elapsed time bar UI.
- Add FlipStreamPasteBox.
- Add FlipStreamTextConcat.
- Add loraMode selection and @mode{} format.
- Add FlipStreamLoraMode to set loraMode.
- Add FlipStreamLoadLora like Lora Tag Loader, it can select mode to apply @mode{} section.
- Refine updating status control to check Comfy task remaining.
- Add FlipStreamCurrent to show any text in status info.
- Change FlipStreamSetUpdateAndReload to FlipStreamRunOnce.
- Change progress bar range to 120 sec.
- Add FlipStreamSetState, FlipStreamGetState.
- Change FlipStreamGetParam outputs
- Add frame trimming options for FlipStreamGetFrame.
- Add FlipStreamSizeSelect.
- Add FlipStreamViewerSimple, FlipStreamAllowIp.
- Add FlipStreamSaveApiWorkflow, FlipStreamRunApiWorkflow.
- Add FlipStreamFree.
- Add FlipStreamShutdown.
- Add experimental nodes FlipStreamAnd, FlipStreamOr,  FlipStreamGet, FlipStreamChatJson.
- Depricated FlipStreamGate, FlipStreamSegMask.
- And some minor changes.
2026-01-17 09:14:30 +09:00
sakura1bgx 2bf629280c Update README.md 2026-01-17 09:03:27 +09:00
sakura1bgx dcaf4ac593 Update README.md 2026-01-17 09:00:50 +09:00
sakura1bgx 453caa62da Update README.md 2026-01-17 08:56:50 +09:00
sakura1bgx beea6b09cd Update README.md 2026-01-17 08:55:51 +09:00
sakura1bgx 47d0e5110c Create flipstreamviewer.js 2026-01-17 08:22:37 +09:00
sakura1bgx cd1ac4bd9e Update __init__.py 2026-01-17 08:19:01 +09:00
sakura1bgx ad959afa21 Update flipstreamviewer.py
- Add loraMode selection and @mode{} format.
- Add FlipStreamLoraMode to set loraMode.
- Add FlipStreamLoadLora like Lora Tag Loader, it can select mode to apply @mode{} section.
- Refine FlipStreamPasteBox.
- Refine updating status control to check Comfy task remaining.
- Add FlipStreamCurrent to show any text in status info.
- Change Update button to Run button.
- Change FlipStreamSetUpdateAndReload to FlipStreamRunOnce.
- Change progress bar range to 120 sec.
- Add FlipStreamSetState, FlipStreamGetState.
- Change FlipStreamGetParam outputs
- Add frame trimming options for FlipStreamGetFrame.
- Add FlipStreamSizeSelect.
- Add FlipStreamViewerSimple, FlipStreamAllowIp.
- Add FlipStreamSaveApiWorkflow, FlipStreamRunApiWorkflow.
- Add FlipStreamFree.
- Add FlipStreamShutdown.
- Add experimental nodes FlipStreamAnd, FlipStreamOr,  FlipStreamGet, FlipStreamChatJson.
- Depricated FlipStreamGate, FlipStreamSegMask.
- And some minor changes.
2026-01-17 08:17:57 +09:00
sakura1bgx 7520526dc1 Update README.md 2025-12-30 23:58:38 +09:00
sakura1bgx 1a7f142c9b Update flipstreamviewer.py
- Add FlipStreamTextConcat.
- Fix FlipStreamPasteBox.
- Refine some code.
2025-12-30 23:57:15 +09:00
sakura1bgx fb16962357 Update README.md 2025-12-28 11:55:13 +09:00
sakura1bgx 946a0106bb Update flipstreamviewer.py
- Add FlipStreamPasteBox.
- Change Capture button order.
2025-12-28 11:52:40 +09:00
sakura1bgx 88ab694ae4 Update flipstreamviewer.py
- Add FlipStreamFileSelect_LLM node.
- Add elapsed time bar UI.
- Refine FlipStreamSource to support upscale with keep aspect.
2025-12-21 20:31:09 +09:00
sakura1bgx 428f247253 Update flipstreamviewer.py
- Fix FlipStreamFileSelect to be selectable collect path.
- Fix FlipStreamChat n_ctx, max_tokens option range.
- Add pingpong option to FlipStreamViewer.
2025-11-19 00:42:36 +09:00
sakura1bgx 68370b4b82 Update flipstreamviewer.py
- Add Secret xor_crypt function.
2025-11-10 00:03:26 +09:00
sakura1bgx c0c5d924fd Update flipstreamviewer.py
- AddFlipStreamFileSelect_Loras.
- Refine FlipStreamSetParam to refresh UI.
- Refine Section to folding UI.
2025-11-09 19:58:04 +09:00
sakura1bgx a5e4f3893b Update README.md 2025-11-08 02:27:08 +09:00
sakura1bgx 6685866cd9 Update flipstreamviewer.py
- Changed FlipStreamButton order.
2025-11-08 02:25:56 +09:00
sakura1bgx 5b39eb16b2 Update README.md
- Remove Tagger.
- Update llama cpp python building description.
- Add sage attention building description.
2025-11-08 02:17:02 +09:00
sakura1bgx 0daa37e1c3 Update flipstreamviewer.py
- Remove Tagger UI and WD14 functions.
- Remove wd14exc option from FlipStreamViewer
- Add FlipStreamButton
- Add FlipStreamGetFrame, it can be use with WD14Tagger node.
2025-11-08 01:57:47 +09:00
sakura1bgx 947d1b942d Merge pull request #15 from sakura1bgx/main
Update
2025-11-08 01:54:32 +09:00
sakura1bgx eb9513674c Update pyproject.toml 2025-11-05 16:33:16 +09:00
sakura1bgx 93005dfc2c Update flipstreamviewer.py
- Add fontsize option for FlipStreamSetMessage.
- Changed to split json_input by "\n" for FlipStreamParseJson.
2025-11-05 16:32:15 +09:00
sakura1bgx b42d40addf Update pyproject.toml 2025-10-04 13:47:35 +09:00
sakura1bgx 9b6f84d187 Update flipstreamviewer.py
- Add reset_updating flag for FlipStreamViewer, it enable to use multiple FlipStreamViewer nodes.
2025-10-04 13:47:13 +09:00
sakura1bgx 73c1b67dec Update pyproject.toml 2025-09-21 00:03:24 +09:00
sakura1bgx c0cd4f1fef Update requirements.txt 2025-09-20 23:59:34 +09:00
sakura1bgx 04bf0f397b Update flipstreamviewer.py
- Fix FlipStreamVideoInput
2025-09-20 23:59:13 +09:00
sakura1bgx 0bb1fe65f5 Update pyproject.toml 2025-09-20 22:46:09 +09:00
sakura1bgx 1ae9d32ed9 Update requirements.txt 2025-09-20 22:45:48 +09:00
sakura1bgx 8a2eee3b2a Update flipstreamviewer.py
- Change streaming method to improve processing speed.
2025-09-20 22:45:07 +09:00
sakura1bgx 927f47d73b Update pyproject.toml 2025-09-05 19:53:00 +09:00
sakura1bgx 8b70e94d0c Update flipstreamviewer.py
- FlipStreamTextReplace: 'find' support multiple words by comma(,) separated.
- FlipStreamParseJson: igonre json error.
- FlipStreamViewer: show frame size console log
2025-09-05 19:52:06 +09:00
sakura1bgx 675ab1f3b6 Update README.md 2025-07-05 10:32:49 +09:00
sakura1bgx 38c85016cd Update README.md 2025-07-05 10:23:39 +09:00
sakura1bgx c5d89b6f5a Update pyproject.toml 2025-07-05 10:10:04 +09:00
sakura1bgx 9d08101663 Update README.md 2025-07-05 10:08:51 +09:00
sakura1bgx 6b1f89a229 Update flipstreamviewer.py
- Align MessageBox layout
- Add FlipStreamLogBox
- Clear old params when loading presets
- Add response_format to FlipStreamChat
- Change max_history behavior in FlipStreamChat
- Add FlipStreamParseJson
2025-07-05 09:55:43 +09:00
sakura1bgx 232d54440e Update pyproject.toml 2025-05-31 10:16:41 +09:00
sakura1bgx 78a887fba4 Update README.md
- Update "Toggle View" description.
2025-05-31 10:16:14 +09:00
sakura1bgx c5c0effed6 Update flipstreamviewer.py
- Refine status info to keep height and show update processing time.
- Change click behavior of the center panel to keep image shown.
2025-05-31 10:12:37 +09:00
sakura1bgx ad47db33ff Update flipstreamviewer.py
fix auto hide of previewbox
2025-05-25 05:09:39 +09:00
sakura1bgx b33c90dfee Update pyproject.toml 2025-05-24 08:23:52 +09:00
sakura1bgx 9af3f373a7 Update flipstreamviewer.py
- fix import path for custom_nodes
2025-05-24 08:23:21 +09:00
sakura1bgx 80992559d8 Update pyproject.toml 2025-04-19 08:59:08 +09:00
sakura1bgx 5d94d31ec7 Merge pull request #14 from sakura1bgx/develop
- Support utf8 in base64 encoding.
- Add message box at the bottom of center panel.
- Refine refresh view process.
- Add FlipStreamSetUpdateAndReload node.
- Add FlipStreamSetMessage node.
- Add FlipStreamChat node.
- Add FlipStreamSwitch node.
- Fix loraTagSelect.
2025-04-19 08:57:38 +09:00
sakura1bgx b742c7405e Update README.md 2025-04-19 08:46:05 +09:00
sakura1bgx a1da4dc4a3 Add files via upload 2025-04-19 08:43:25 +09:00
sakura1bgx 1828ed0b46 Update README.md 2025-04-19 08:13:33 +09:00
sakura1bgx a17ba97cfe Merge pull request #13 from ComfyNodePRs/update-publish-yaml
Update Github Action for Publishing to Comfy Registry
2025-04-19 05:38:49 +09:00
sakura1bgx 699e9459c1 Update flipstreamviewer.py
- Fix loraTagSelect.
2025-03-22 18:39:24 +09:00
sakura1bgx 488d59f0df Update flipstreamviewer.py
- Add FlipStreamSwitch node.
- Fix minor issues.
2025-03-10 04:34:43 +09:00
sakura1bgx 4e09723821 Update README.md
- Merge to FlipStreamChat
2025-03-07 04:51:36 +09:00
sakura1bgx 1881ad9eb6 Update flipstreamviewer.py
- Fix model management.
2025-03-07 04:48:29 +09:00
sakura1bgx 22d59bd44b Update flipstreamviewer.py
- Merge FlipStreamLoadChatModel to FlipStreamChat and add close_after_use option.
2025-03-07 04:12:22 +09:00
sakura1bgx 9ce270721c Update flipstreamviewer.py
- Refine FlipStreamChat parameters.
- Fix darker.
2025-03-07 03:25:23 +09:00
sakura1bgx 476602aa2f Update flipstreamviewer.py
- Rename FlipStreamChatLoad to FlipStreamLoadChatModel
2025-03-03 04:28:10 +09:00
sakura1bgx ab06b9d5f1 Update README.md
- Description for llama-cpp-python dependency.
2025-03-03 04:22:18 +09:00
sakura1bgx ee55a0affb Update README.md
- Add new nodes descriptions.
2025-03-03 04:09:46 +09:00
sakura1bgx ed8e98270e Update flipstreamviewer.py
- Support utf8 in base64 encoding.
- Add message box at the bottom of center panel.
- Refine refresh view process.
- Add FlipStreamSetUpdateAndReload node.
- Add FlipStreamSetMessage node.
- Add FlipStreamChatLoad node.
- Add FlipStreamChat node.
2025-03-03 03:51:17 +09:00
sakura1bgx 1f69a9cb78 Merge pull request #12 from sakura1bgx/main
main to develop
2025-02-27 21:11:19 +09:00
sakura1bgx 3d6d951c94 Merge pull request #11 from sakura1bgx/develop
Merge pull request #10 from sakura1bgx/main
2025-02-27 21:09:11 +09:00
sakura1bgx f49630d622 Update README.md 2025-02-27 21:03:31 +09:00
sakura1bgx 73044772e9 Update README.md 2025-02-27 21:03:05 +09:00
sakura1bgx 72e3ffe342 Update flipstreamviewer.py
- Remove print.
2025-02-27 21:01:36 +09:00
sakura1bgx 9267444da0 Add files via upload 2025-02-27 21:01:02 +09:00
sakura1bgx cf75bc7722 Merge pull request #10 from sakura1bgx/main
v3.2.0 to develop
2025-02-27 20:34:05 +09:00
sakura1bgx 14dc44a74d Update pyproject.toml
- Add FlipStreamGetPreviewRoi.
- Add FlipStreamGate.
- Add loramode option to FlipStreamViewer.
- Removed use_lora option from FlipStreamFileSelect.
2025-02-27 20:29:02 +09:00
sakura1bgx fe5f9c416b Update README.md
- Add FlipStreamGetPreviewRoi
- Add FlipStreamGate
2025-02-27 20:25:45 +09:00
sakura1bgx 3949a20047 Merge pull request #9 from sakura1bgx/develop
Develop to main
2025-02-27 20:16:32 +09:00
sakura1bgx 6a31483d47 Update flipstreamviewer.py
- Fix comfyui_tensorrt import
2025-02-27 20:14:29 +09:00
sakura1bgx c95e470fcc Update flipstreamviewer.py
- Prevent double execution during update.
- Improved FlipStreamGate for KSampler.
2025-02-24 10:52:17 +09:00
sakura1bgx 9edb0e9d99 Update README.md
- Update FlipStreamFileSelect_Checkpoints descriptions.
2025-02-23 01:58:44 +09:00
sakura1bgx c50f25580a Update README.md
- Update label input descriptions.
2025-02-23 01:40:12 +09:00
sakura1bgx 9e01d94d7d Update flipstreamviewer.py
- Remove use_lora options from FileSelect nodes.
- Move loramode param to loraMode state.
- Add loramode input to the Viewer node.
2025-02-23 01:38:50 +09:00
sakura1bgx 324bfb81fe Merge v3.1.5 to develop 2025-02-22 23:47:24 +09:00
sakura1bgx d606136136 Update flipstreamviewer.py
- Fix FileSelect folder path to support linux
2025-02-22 23:38:30 +09:00
sakura1bgx e1fc07d19e Update README.md
- Fix label input descriptions.
2025-02-22 23:02:37 +09:00
sakura1bgx c06b5b3154 Update pyproject.toml
- Fix to support Python 3.11 and linux
2025-02-22 22:29:49 +09:00
sakura1bgx cf33bed93f Update segmask.json
- Fix to support linux
2025-02-22 22:27:04 +09:00
sakura1bgx d0ce5a7941 Update quick_vid2vid.json
- Fix to support linux
2025-02-22 22:26:40 +09:00
sakura1bgx 190df55c88 Update grab_rembg_depth_animate.json
- Fix to support linux
2025-02-22 22:25:57 +09:00
sakura1bgx 2c7e0a42e8 Update dmd2_and_lora.json
- Fix to support linux
2025-02-22 22:24:33 +09:00
sakura1bgx fbd9d544e4 Update animate.json
- Fix to support linux
2025-02-22 22:24:08 +09:00
sakura1bgx c0a28913f6 Update simple.json
- Fix to support linux
2025-02-22 22:22:04 +09:00
sakura1bgx 0a43dd359d Update flipstreamviewer.py
- Fix to support python 3.11
2025-02-22 22:20:59 +09:00
sakura1bgx dd64a6ad2d Update flipstreamviewer.py
- Add FlipStreamGate.
- Change FlipStreamSource upscale method.
- Fix FlipStreamVideoInput.
2025-02-22 21:04:25 +09:00
sakura1bgx bae2d39701 Update flipstreamviewer.py
- Fix to set update flag on change PreviewRoi
- Fix to save all param.
2025-02-17 09:41:31 +09:00
sakura1bgx c31babf59d Update flipstreamviewer.py
- Add FlipStreamGetPreviewRoi.
2025-02-16 23:28:11 +09:00
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
snomiao df741f1dea chore(publish): update GitHub Actions workflow for node publishing
- Add permissions for issue writing
- Update condition to check repository owner instead of fork status
- Change action version from `main` to `v1` for stability and consistency
2025-01-25 06:26:26 +00: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
18 changed files with 21205 additions and 2328 deletions
+5 -4
View File
@@ -4,21 +4,22 @@ on:
push:
branches:
- main
- master
paths:
- "pyproject.toml"
permissions:
issues: write
jobs:
publish-node:
name: Publish Custom Node to registry
runs-on: ubuntu-latest
# if this is a forked repository. Skipping the workflow.
if: github.event.repository.fork == false
if: ${{ github.repository_owner == 'sakura1bgx' }}
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Publish Custom Node
uses: Comfy-Org/publish-node-action@main
uses: Comfy-Org/publish-node-action@v1
with:
## Add your own personal access token to your Github Repository secrets and reference it here.
personal_access_token: ${{ secrets.REGISTRY_ACCESS_TOKEN }}
+130 -100
View File
@@ -1,128 +1,158 @@
# 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.
4. Run a workflow on the ComfyUI
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' 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-Inspyrenet-Rembg: For FlipStreamRembg
- 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-WD14-Tagger
- ComfyUI-AnimateDiff-Evolved
- ComfyUI-VideoHelperSuite
- ComfyUI-DepthAnythingV2
- ComfyUI-Advanced-ControlNet
## Inputs
## Optional Python Packages Dependencies
Provide the following text inputs in the viewer:
llama-cpp-python for FlipStreamChat:
```
REM Before that, may be need to install Visual Studio 2022, VC++ development options and cmake
set PATH=D:\ComfyUI_windows_portable\python_embeded;D:\ComfyUI_windows_portable\python_embeded\Scripts;%PATH%
cd python_embeded
python -m pip install scikit-build-core
python -m pip install cmake
set CMAKE_ARGS="-DGGML_CUDA=on"
python -m pip install llama-cpp-python
```
- **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 Features
## Controls
- **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. 'lora' is 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, 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`
- **Preset**: You can save and load parameters that are set on viewer controls. There are joking level XOR crypt mode for preset files, it can be use with &px query. 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/right panels and the message box, a subsequent click will show them. It can also be set via query:
`http://localhost:8188/flipstreamviewer?toggleView=1`
- **Run on Load**: The workflow can be run when the page is loaded via query:
`http://localhost:8188/flipstreamviewer?run=1`
- **Message Box**: If a message is set by FlipStreamSetMessage, you can view it at the top left of the center panel.
- **Auto Hide**: Stream and preview in the viewer will automatically hide after 5 minutes if the page is not reloaded.
- **Reset**: clears the queue, interrupts the current run and resets all viewer parameters, state and stream. It can be called via query:
`http://localhost:8188/flipstreamviewer?reset=1`
**Left Panel Buttons:**
## UI 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.
- **FlipStreamSection**: A section label for UI Nodes. 'closed' makes the section collapsed initially.
- **FlipStreamButton**: Run and Capture buttons. The Capture button can be use with FlipStreamGetFrame to get captured image.
- **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.
- **FlipStreamSizeSelect**: A select box for choosing size by aspect ratio. The size can also get using FlipStreamGetSize.
- **FlipStreamFileSelect_Checkpoints**: A file selector for checkpoints. 'mode' is used to select a subfolder such as 'sd15', 'sdxl', 'pony', or 'flux' in 'checkpoints'. 'use_sub' means using subfolders in the 'mode' folder. 'use_move' means using the move file selector.
- **FlipStreamFileSelect_DiffusionModels**: A file selector for diffusion models.
- **FlipStreamFileSelect_VAE**: A file selector for VAE models.
- **FlipStreamFileSelect_LLM**: A file selector for LLM 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 the input image. You can select the ROI (Region of Interest) in the preview by dragging the mouse.
- **FlipStreamPasteBox**: A box for paste an input image. You can select the box by click once, then you can paste image from clipboard by Ctrl+V or delete image by DEL.
- **FlipStreamLogBox**: A box for displaying logs on the screen.
**Right Panel Buttons:**
## Other Nodes
- **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.
- **FlipStreamRunOnce**: Updates parameters, reloads pages, and run the current workflow once.
- **FlipStreamSetMessage**: Sets a message for the message box at the bottom of the center panel.
- **FlipStreamAnd(experimental)**: Multiple inputs AND operation node.
- **FlipStreamOr(experimental)**: Multiple inputs OR operation node.
- **FlipStreamSetState**: A node for setting internal state.
- **FlipStreamGetState**: A node for getting internal state.
- **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.
- **FlipStreamGet(experimental)**: A node for getting internal state and parameters with independent node cache.
- **FlipStreamGetFrame**: A node for get image from frame buffer. It can be use with FlipStreamButton - Capture button to get captured image.
- **FlipStreamGetPreviewRoi**: A node for obtaining the preview ROI (Region of Interest) selection.
- **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))`.
- **FlipStreamTextConcat**: A node for concatenate text.
- **FlipStreamScreenGrabber**: A node for grab multiframe screenshots.
- **FlipStreamVideoInput**: A node for input video frames.
- **FlipStreamSource**: A node for prepare image or latent source.
- **FlipStreamSwitchImage**: A node for switching images.
- **FlipStreamSwitchLatent**: A node for switching latents.
- **FlipStreamGate(deprecated)**: A node for consolidating input timing to ensure that inputs to the sampler do not occur sequentially.
- **FlipStreamRembg**: A node for remove background. It depends on ComfyUI-Inspyrenet-Rembg.
- **FlipStreamSegMask(deprecated)**: Currently cannot use, so please use original node ComfyUI-Florence2.
- **FlipStreamChat**: Loads an LLM (Large Language Model) and obtains chat responses. It only supports *.gguf files in the models/LLM folder and uses llama-cpp-python. The output format can be customized using the response_format parameter, which supports [JSON Schema](https://llama-cpp-python.readthedocs.io/en/latest/#json-schema-mode) for structured responses.
- **FlipStreamParseJson**: Extracts values for multiple keys from a JSON string and joins them using a specified delimiter.
- **FlipStreamChatJson**: Mix and simplified FlipStreamChat and FlipStreamParseJson using auto generated json scheme.
- **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.
- **FlipStreamViewerSimple**: Simplified FlipStreamViewer.
- **FlipStreamViewerVideo**: Streams frames (and optional audio) to the viewer as a single MP4 instead of PNG frames, it is much faster for long or large videos. Audio is muted and the volume is 0 by default, the mute button and volume slider appear at the top left. FlipStreamGetFrame cannot get frames from the video stream.
- **FlipStreamLogger**: Prints the input data to the console with a label.
- **FlipStreamCurrent**: A node for setting current information text on the right panel status info.
- **FlipStreamAllowIp**: A node for setting allowip.
- **FlipStreamLoraMode**: A node for setting loraMode.
- **FlipStreamSaveApiWorkflow**: A node for save current workflow as api workflow.
- **FlipStreamRunApiWorkflow**: A node for run an api workflow.
- **FlipStreamFree**: A node for free model and comfy caches.
- **FlipStreamShutdown**: A node for scheduling shutdown (Windows only).
## Additional Features
## Workflow Examples
- **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).
These workflow are sometimes old.
## 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.
## For More Speed
- ComfyUI commandline options '--highvram --fast --fp8_e4m3fn-unet' are good for speed, however it depends on system and model.
## Customizing Workflow
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.
- **quick_vid2vid_roi.json**: An example demonstrating the use of FlipStreamGetPreviewRoi and FlipStreamGate.
- **visualnobel.json**: Visual nobel like UI using FlipStreamChat.
+2 -3
View File
@@ -1,3 +1,2 @@
from .flipstreamviewer import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
__all__ = ['NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
from .flipstreamviewer import WEB_DIRECTORY, NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
__all__ = ['WEB_DIRECTORY', 'NODE_CLASS_MAPPINGS', 'NODE_DISPLAY_NAME_MAPPINGS']
+3496 -810
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 = "4.1.0"
license = {file = "LICENSE.txt"}
[project.urls]
+2 -1
View File
@@ -1 +1,2 @@
opencv-python
imageio
mss
Binary file not shown.
+68
View File
@@ -0,0 +1,68 @@
import { app } from "../../../scripts/app.js";
import { api } from "../../../scripts/api.js";
app.registerExtension({
name: "FlipStreamViewer.RunOnce",
async setup() {
api.addEventListener("FlipStreamViewer_run_once", async () => {
await api.interrupt();
await api.fetchApi("/queue", {
method: "POST",
body: JSON.stringify({ clear: true }),
});
await app.queuePrompt(0, 1);
});
}
});
app.registerExtension({
name: "FlipStreamViewer.FlipStreamChatJson",
async beforeRegisterNodeDef(t, d) {
const config = {
"FlipStreamGet": { in: 0, out: 2, range: 20, iname:'label', oname:'value', useo: true },
"FlipStreamChatJson": { in: 11, out: 3, range: 20, iname:'label', oname:'value', useo: true },
"FlipStreamTextConcat": { in: 2, out: 1, range: 20, iname:'text', oname:'', useo: false }
};
const CFG = config[d.name];
if (!CFG) return;
const sync = (n) => {
const w = n.widgets;
if (CFG.useo) {
while (n.outputs.length > w.length + CFG.out - CFG.in) {
if (n.outputs.length < CFG.out || n.outputs[n.outputs.length - 1]?.links?.length) break;
n.removeOutput(n.outputs.length - 1);
n.outputs_dirty = true;
}
}
if (w.length < CFG.in + CFG.range && (w.at(-1)?.value || n.inputs[w.length - 1]?.link !== null)) {
if (CFG.useo) {
n.addOutput(`${CFG.oname}${w.length - CFG.in}`, "*");
n.outputs_dirty = true;
}
const inputName = `${CFG.iname}${w.length - CFG.in}`;
n.addWidget("string", inputName, "", () => {}, { forceInput: true });
n.inputs_dirty = true;
}
while (w.length > CFG.in + 1 && (!w.at(-1).value && n.inputs[w.length - 1]?.link === null) && (!w.at(-2).value && n.inputs[w.length - 2]?.link === null)) {
if (n.outputs[w.length + CFG.out - CFG.in - 1]?.links?.length) break;
if (CFG.useo) {
n.removeOutput(w.length + CFG.out - CFG.in - 1);
n.outputs_dirty = true;
}
w.pop();
n.inputs_dirty = true;
}
n.setSize(n.computeSize());
n.setDirtyCanvas(true, true);
};
t.prototype.onNodeCreated = function() { sync(this); };
t.prototype.onWidgetChanged = function() { sync(this); };
t.prototype.onConnectionsChange = function(type, slot, connected, info) { requestAnimationFrame(() => sync(this)); };
t.prototype.onConfigure = function(c) {
c.widgets_values.forEach((v, i) => { if (this.widgets[i]) this.widgets[i].value = v; sync(this);});
};
}
});
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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff