From a89d17089340c7312027a351f1703028a427741c Mon Sep 17 00:00:00 2001 From: Sirshendu Ganguly Date: Tue, 11 Nov 2025 23:15:35 -0500 Subject: [PATCH] Add Runway and Luma support --- __init__.py | 9 +- clientlibs/main.js | 16 +- clientlibs/types.js | 23 +- clientlibs/utils.js | 264 ++++++++++++++++++ modules/audioInference.py | 72 ++++- modules/audioInferenceInputs.py | 46 +++ modules/audioModelSearch.py | 74 ++++- modules/bgremoval.py | 5 +- modules/imageInference.py | 7 +- modules/imageInferenceInputs.py | 65 ++++- modules/mediaUpload.py | 14 +- .../elevenlabsProviderSettings.py | 6 +- .../providerSettings/klingProviderSettings.py | 106 ++++++- .../providerSettings/lumaProviderSettings.py | 146 ++++++++++ modules/providerSettings/providerSettings.py | 36 --- .../runwayProviderSettings.py | 13 +- modules/upscaler.py | 5 +- modules/utils/runwareUtils.py | 55 +++- modules/vectorize.py | 5 +- modules/videoBgRemoval.py | 5 +- modules/videoInference.py | 68 +++-- modules/videoInferenceInputs.py | 11 +- modules/videoInputsFrame.py | 70 +++++ modules/videoInputsReferences.py | 17 +- modules/videoModelSearch.py | 47 +++- modules/videoTranscription.py | 21 +- modules/videoUpscaler.py | 6 +- workflows/Runware_Audio_Inference_Kling.json | 1 + ...Runware_Basic_Image_Inference_Hunyuan.json | 1 + ...re_Basic_Image_Inference_Runway_Gen_4.json | 1 + workflows/Runware_Image_to_Video_Ovi.json | 2 +- workflows/Runware_Video_Inference_Luma.json | 1 + .../Runware_Video_Inference_Omnihuman1_5.json | 2 +- ...nware_Video_Inference_PixverseLipSync.json | 2 +- .../Runware_Video_Inference_Runway_Aleph.json | 1 + ...are_Video_Inference_Runway_Gen4_Turbo.json | 1 + workflows/Runware_Video_Transcription.json | 2 +- 37 files changed, 1026 insertions(+), 200 deletions(-) create mode 100644 modules/audioInferenceInputs.py create mode 100644 modules/providerSettings/lumaProviderSettings.py delete mode 100644 modules/providerSettings/providerSettings.py create mode 100644 modules/videoInputsFrame.py create mode 100644 workflows/Runware_Audio_Inference_Kling.json create mode 100644 workflows/Runware_Basic_Image_Inference_Hunyuan.json create mode 100644 workflows/Runware_Basic_Image_Inference_Runway_Gen_4.json create mode 100644 workflows/Runware_Video_Inference_Luma.json create mode 100644 workflows/Runware_Video_Inference_Runway_Aleph.json create mode 100644 workflows/Runware_Video_Inference_Runway_Gen4_Turbo.json diff --git a/__init__.py b/__init__.py index 2ba1151..192cec1 100644 --- a/__init__.py +++ b/__init__.py @@ -28,7 +28,6 @@ from .modules.imageInferenceInputs import imageInferenceInputs from .modules.videoInference import txt2vid from .modules.videoModelSearch import videoModelSearch from .modules.frameImages import RunwareFrameImages -from .modules.providerSettings.providerSettings import RunwareProviderSettings from .modules.providerSettings.pixverseProviderSettings import RunwarePixverseProviderSettings from .modules.providerSettings.openaiProviderSettings import RunwareOpenAIProviderSettings from .modules.providerSettings.bytedanceImageProviderSettings import RunwareBytedanceProviderSettings @@ -36,6 +35,7 @@ from .modules.providerSettings.briaImageProviderSettings import RunwareBriaProvi from .modules.audioInference import RunwareAudioInference from .modules.audioModelSearch import RunwareAudioModelSearch from .modules.audioSections import RunwareAudioSections +from .modules.audioInferenceInputs import audioInferenceInputs from .modules.providerSettings.elevenlabsProviderSettings import RunwareElevenLabsProviderSettings from .modules.providerSettings.elevenlabsProviderSettingsSections import RunwareElevenLabsProviderSettingsSections from .modules.acceleratorOptions import acceleratorOptions @@ -48,10 +48,12 @@ from .modules.providerSettings.lightricksProviderSettings import RunwareLightric from .modules.providerSettings.minimaxProviderSettings import RunwareMiniMaxProviderSettings from .modules.providerSettings.klingProviderSettings import RunwareKlingProviderSettings from .modules.providerSettings.runwayProviderSettings import RunwareRunwayProviderSettings +from .modules.providerSettings.lumaProviderSettings import RunwareLumaProviderSettings from .modules.vectorize import vectorize from .modules.videoBgRemoval import videoBgRemoval from .modules.videoUpscaler import videoUpscaler from .modules.videoInputsReferences import videoInputsReferences +from .modules.videoInputsFrame import RunwareVideoInputsFrameImages from .modules.safetyInputs import safetyInputs from .modules.videoAdvancedFeatureInputs import videoAdvancedFeatureInputs @@ -96,7 +98,6 @@ NODE_CLASS_MAPPINGS = { "Runware Video Inference": txt2vid, "Runware Video Model Search": videoModelSearch, "Runware Frame Images": RunwareFrameImages, - "Runware Provider Settings": RunwareProviderSettings, "Runware Pixverse Provider Settings": RunwarePixverseProviderSettings, "Runware OpenAI Provider Settings": RunwareOpenAIProviderSettings, "Runware Bytedance Provider Settings": RunwareBytedanceProviderSettings, @@ -104,6 +105,7 @@ NODE_CLASS_MAPPINGS = { "Runware Audio Inference": RunwareAudioInference, "Runware Audio Model Search": RunwareAudioModelSearch, "Runware Audio Sections": RunwareAudioSections, + "Runware Audio Inference Inputs": audioInferenceInputs, "Runware ElevenLabs Provider Settings": RunwareElevenLabsProviderSettings, "Runware ElevenLabs Provider Settings Sections": RunwareElevenLabsProviderSettingsSections, "Runware Accelerator Options": acceleratorOptions, @@ -114,12 +116,14 @@ NODE_CLASS_MAPPINGS = { "Runware Video Inference Inputs": videoInferenceInputs, "Runware Lightricks Provider Settings": RunwareLightricksProviderSettings, "Runware MiniMax Provider Settings": RunwareMiniMaxProviderSettings, + "Runware Luma Provider Settings": RunwareLumaProviderSettings, "Runware KlingAI Provider Settings": RunwareKlingProviderSettings, "Runware Runway Provider Settings": RunwareRunwayProviderSettings, "Runware Vectorize": vectorize, "Runware Video Background Removal": videoBgRemoval, "Runware Video Upscaler": videoUpscaler, "Runware Video Inputs References": videoInputsReferences, + "Runware Video Inputs Frame Images": RunwareVideoInputsFrameImages, "Runware Safety Inputs": safetyInputs, "Runware Video Advanced Feature Inputs": videoAdvancedFeatureInputs, } @@ -132,6 +136,7 @@ NODE_DISPLAY_NAME_MAPPINGS = { "Runware Multi Inference": "Runware Multi Inference [BETA]", "Runware Video Model Search": "Runware Video Model", "Runware Audio Model Search": "Runware Audio Model", + "Runware Video Transcription": "Runware Video Caption", } WEB_DIRECTORY = "./clientlibs" diff --git a/clientlibs/main.js b/clientlibs/main.js index 8695b0e..a7cfa05 100644 --- a/clientlibs/main.js +++ b/clientlibs/main.js @@ -1,6 +1,6 @@ import { app } from "../../scripts/app.js"; import { api } from "../../scripts/api.js"; -import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, mediaUUIDHandler, videoTranscriptionHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, useParameterToggleHandler, imageInferenceToggleHandler, upscalerToggleHandler, audioInferenceToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler } from "./utils.js"; +import { promptEnhanceHandler, syncDimensionsNodeHandler, searchNodeHandler, APIKeyHandler, captionNodeHandler, mediaUUIDHandler, videoTranscriptionHandler, handleCustomErrors, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, audioModelSearchFilterHandler, useParameterToggleHandler, imageInferenceToggleHandler, upscalerToggleHandler, audioInferenceToggleHandler, acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, klingProviderSettingsToggleHandler, lumaProviderSettingsToggleHandler } from "./utils.js"; import { RUNWARE_NODE_TYPES, RUNWARE_NODE_PROPS, SEARCH_TERMS } from "./types.js"; const nodeInitList = []; @@ -41,11 +41,10 @@ app.registerExtension({ } } - if(crNodeProps.colorModeOnly === true) return; const nodeWidgets = node.widgets; - if(nodeWidgets.length <= 0) return; - + // Handle node-specific handlers first - each node has its own dedicated handler + // These must be called BEFORE the colorModeOnly check if(nodeClass === RUNWARE_NODE_TYPES.IMAGEINFERENCE) { imageInferenceToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.VIDEOINFERENCE) { @@ -60,10 +59,19 @@ app.registerExtension({ bytedanceProviderSettingsToggleHandler(node); } else if(nodeClass === RUNWARE_NODE_TYPES.OPENAIPROVIDERSETTINGS) { openaiProviderSettingsToggleHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.KLINGPROVIDERSETTINGS) { + klingProviderSettingsToggleHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.LUMAPROVIDERSETTINGS) { + lumaProviderSettingsToggleHandler(node); } + if(crNodeProps.colorModeOnly === true) return; + if(nodeWidgets.length <= 0) return; + if(nodeClass === RUNWARE_NODE_TYPES.VIDEOMODELSEARCH) { videoModelSearchFilterHandler(node); + } else if(nodeClass === RUNWARE_NODE_TYPES.AUDIOMODELSEARCH) { + audioModelSearchFilterHandler(node); } for(const nodeWidget of nodeWidgets) { diff --git a/clientlibs/types.js b/clientlibs/types.js index 7a826a3..ef7bc0d 100644 --- a/clientlibs/types.js +++ b/clientlibs/types.js @@ -81,7 +81,7 @@ const RUNWARE_NODE_TYPES = { AUDIOINFERENCE: "Runware Audio Inference", AUDIOMODELSEARCH: "Runware Audio Model Search", AUDIOSECTIONS: "Runware Audio Sections", - PROVIDERSETTINGS: "Runware Provider Settings", + AUDIOINFERENCEINPUTS: "Runware Audio Inference Inputs", PIXVERSEPROVIDERSETTINGS: "Runware Pixverse Provider Settings", OPENAIPROVIDERSETTINGS: "Runware OpenAI Provider Settings", BYTEDANCEPROVIDERSETTINGS: "Runware Bytedance Provider Settings", @@ -89,6 +89,7 @@ const RUNWARE_NODE_TYPES = { ELEVENLABSPROVIDERSETTINGS: "Runware ElevenLabs Provider Settings", ELEVENLABSPROVIDERSETTINGSSECTIONS: "Runware ElevenLabs Provider Settings Sections", VIDUPROVIDERSETTINGS: "Runware Vidu Provider Settings", + LORAMIX: "Runware Lora Mix", MEDIAUPLOAD: "Runware Media Upload", INPUTAUDIOS: "Runware Input Audios", REFERENCEVIDEOS: "Runware Reference Videos", @@ -96,10 +97,12 @@ const RUNWARE_NODE_TYPES = { LIGHTRICKSPROVIDERSETTINGS: "Runware Lightricks Provider Settings", KLINGPROVIDERSETTINGS: "Runware KlingAI Provider Settings", RUNWAYPROVIDERSETTINGS: "Runware Runway Provider Settings", + LUMAPROVIDERSETTINGS: "Runware Luma Provider Settings", VECTORIZE: "Runware Vectorize", VIDEOBGREMOVAL: "Runware Video Background Removal", VIDEOUPSCALER: "Runware Video Upscaler", VIDEOINPUTSREFERENCES: "Runware Video Inputs References", + VIDEOINPUTSFRAMEIMAGES: "Runware Video Inputs Frame Images", ACCELERATOROPTIONS: "Runware Accelerator Options", VIDEOTRANSCRIPTION: "Runware Video Transcription", MINIMAXPROVIDERSETTINGS: "Runware MiniMax Provider Settings", @@ -243,7 +246,7 @@ const RUNWARE_NODE_PROPS = { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, - [RUNWARE_NODE_TYPES.PROVIDERSETTINGS]: { + [RUNWARE_NODE_TYPES.IMAGEINFERENCEINPUTS]: { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, @@ -275,6 +278,10 @@ const RUNWARE_NODE_PROPS = { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, + [RUNWARE_NODE_TYPES.LORAMIX]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, [RUNWARE_NODE_TYPES.MEDIAUPLOAD]: { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, @@ -303,6 +310,10 @@ const RUNWARE_NODE_PROPS = { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, + [RUNWARE_NODE_TYPES.LUMAPROVIDERSETTINGS]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, [RUNWARE_NODE_TYPES.VECTORIZE]: { bgColor: DEFAULT_BGCOLOR, }, @@ -316,6 +327,14 @@ const RUNWARE_NODE_PROPS = { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, }, + [RUNWARE_NODE_TYPES.VIDEOINPUTSFRAMEIMAGES]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, + [RUNWARE_NODE_TYPES.AUDIOINFERENCEINPUTS]: { + bgColor: DEFAULT_BGCOLOR, + colorModeOnly: true, + }, [RUNWARE_NODE_TYPES.ACCELERATOROPTIONS]: { bgColor: DEFAULT_BGCOLOR, colorModeOnly: true, diff --git a/clientlibs/utils.js b/clientlibs/utils.js index 5ff9ea8..93e34c4 100644 --- a/clientlibs/utils.js +++ b/clientlibs/utils.js @@ -940,6 +940,10 @@ function audioInferenceToggleHandler(audioInferenceNode) { const positivePromptWidget = audioInferenceNode.widgets.find(w => w.name === "positivePrompt"); const useDurationWidget = audioInferenceNode.widgets.find(w => w.name === "useDuration"); const durationWidget = audioInferenceNode.widgets.find(w => w.name === "duration"); + const useSampleRateWidget = audioInferenceNode.widgets.find(w => w.name === "useSampleRate"); + const sampleRateWidget = audioInferenceNode.widgets.find(w => w.name === "sampleRate"); + const useBitrateWidget = audioInferenceNode.widgets.find(w => w.name === "useBitrate"); + const bitrateWidget = audioInferenceNode.widgets.find(w => w.name === "bitrate"); // Helper function to toggle widget enabled state (exact same pattern) function toggleWidgetState(useWidget, paramWidget, paramName) { @@ -990,6 +994,14 @@ function audioInferenceToggleHandler(audioInferenceNode) { if (useDurationWidget && durationWidget) { toggleWidgetState(useDurationWidget, durationWidget, "duration"); } + + if (useSampleRateWidget && sampleRateWidget) { + toggleWidgetState(useSampleRateWidget, sampleRateWidget, "sampleRate"); + } + + if (useBitrateWidget && bitrateWidget) { + toggleWidgetState(useBitrateWidget, bitrateWidget, "bitrate"); + } } function acceleratorOptionsToggleHandler(acceleratorNode) { @@ -1523,6 +1535,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { const videoListWidget = videoModelSearchNode.widgets.find(w => w.name === "VideoList"); const widthWidget = videoModelSearchNode.widgets.find(w => w.name === "Width"); const heightWidget = videoModelSearchNode.widgets.find(w => w.name === "Height"); + const useResolutionWidget = videoModelSearchNode.widgets.find(w => w.name === "useResolution"); if (!modelArchWidget || !videoListWidget) return; @@ -1569,6 +1582,15 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "Ovi": [ "runware:190@1 (Ovi)", ], + "Runway": [ + "runway:2@1 (Runway Aleph)", + "runway:1@1 (Runway Gen-4 Turbo)", + ], + "Luma": [ + "lumaai:1@1 (Luma Ray 1.6)", + "lumaai:2@1 (Luma Ray 2)", + "lumaai:2@2 (Luma Ray 2 Flash)", + ], }; const MODEL_DIMENSIONS = { @@ -1614,16 +1636,46 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { "lightricks:2@0": {"width": 1920, "height": 1080}, "lightricks:2@1": {"width": 1920, "height": 1080}, "runware:190@1": {"width": 0, "height": 0}, + "runway:2@1": {"width": 1280, "height": 720}, + "runway:1@1": {"width": 1280, "height": 720}, + "lumaai:1@1": {"width": 1080, "height": 720}, + "lumaai:2@1": {"width": 1080, "height": 720}, + "lumaai:2@2": {"width": 1080, "height": 720}, }; const DEFAULT_DIMENSIONS = {"width": 1024, "height": 576}; + function setWidthHeightEnabled(enabled) { + if (!widthWidget || !heightWidget) return; + [widthWidget, heightWidget].forEach(widget => { + widget.disabled = !enabled; + if (widget.inputEl) { + widget.inputEl.disabled = !enabled; + widget.inputEl.style.opacity = enabled ? "1" : "0.5"; + widget.inputEl.style.cursor = enabled ? "text" : "not-allowed"; + widget.inputEl.readOnly = !enabled; + } + }); + } + function updateDimensions() { if (!widthWidget || !heightWidget || !videoListWidget) return; const selectedModel = videoListWidget.value; if (!selectedModel) return; + if (useResolutionWidget && !useResolutionWidget.value) { + setWidthHeightEnabled(false); + if (widthWidget.callback) widthWidget.callback(0, "customSetOperation"); + widthWidget.value = 0; + if (heightWidget.callback) heightWidget.callback(0, "customSetOperation"); + heightWidget.value = 0; + videoModelSearchNode.setDirtyCanvas(true); + return; + } + + setWidthHeightEnabled(true); + const modelCode = selectedModel.split(" (")[0]; const dims = MODEL_DIMENSIONS[modelCode] || DEFAULT_DIMENSIONS; @@ -1666,10 +1718,219 @@ function videoModelSearchFilterHandler(videoModelSearchNode) { if (videoListWidget) { appendWidgetCB(videoListWidget, updateDimensions); } + if (useResolutionWidget) { + appendWidgetCB(useResolutionWidget, () => { + updateDimensions(); + }); + } filterModelList(); updateDimensions(); } +function audioModelSearchFilterHandler(audioModelSearchNode) { + const modelProviderWidget = audioModelSearchNode.widgets.find(w => w.name === "Model Provider"); + const audioListWidget = audioModelSearchNode.widgets.find(w => w.name === "AudioList"); + + if (!modelProviderWidget || !audioListWidget) return; + + const AUDIO_MODELS = { + "ElevenLabs": [ + "elevenlabs:1@1 (ElevenLabs Multilingual v2)", + "elevenlabs:2@1 (ElevenLabs Multilingual v2 Turbo)", + "elevenlabs:3@1 (ElevenLabs Monolingual v1)", + ], + "KlingAI": [ + "klingai:8@1 (KlingAI Audio)", + ], + }; + + function filterModelList() { + const selectedProvider = modelProviderWidget.value; + let filteredModels = []; + + if (selectedProvider === "All") { + Object.values(AUDIO_MODELS).forEach(models => filteredModels.push(...models)); + } else if (AUDIO_MODELS[selectedProvider]) { + filteredModels = AUDIO_MODELS[selectedProvider]; + } + + if (filteredModels.length > 0) { + const currentValue = audioListWidget.value; + audioListWidget.options.values = filteredModels; + + if (!filteredModels.includes(currentValue)) { + audioListWidget.value = filteredModels[0]; + } + + audioModelSearchNode.setDirtyCanvas(true); + } + } + + appendWidgetCB(modelProviderWidget, filterModelList); + filterModelList(); +} + +function klingProviderSettingsToggleHandler(klingNode) { + // Find all "use" parameter widgets for KlingAI Provider Settings (EXACT same pattern as imageInferenceToggleHandler) + const useCameraControlWidget = klingNode.widgets.find(w => w.name === "useCameraControl"); + const cameraControlWidget = klingNode.widgets.find(w => w.name === "cameraControl"); + const useSoundVolumeWidget = klingNode.widgets.find(w => w.name === "useSoundVolume"); + const soundVolumeWidget = klingNode.widgets.find(w => w.name === "soundVolume"); + const useOriginalAudioVolumeWidget = klingNode.widgets.find(w => w.name === "useOriginalAudioVolume"); + const originalAudioVolumeWidget = klingNode.widgets.find(w => w.name === "originalAudioVolume"); + const useSoundEffectPromptWidget = klingNode.widgets.find(w => w.name === "useSoundEffectPrompt"); + const soundEffectPromptWidget = klingNode.widgets.find(w => w.name === "soundEffectPrompt"); + const useBgmPromptWidget = klingNode.widgets.find(w => w.name === "useBgmPrompt"); + const bgmPromptWidget = klingNode.widgets.find(w => w.name === "bgmPrompt"); + const useAsmrModeWidget = klingNode.widgets.find(w => w.name === "useAsmrMode"); + const asmrModeWidget = klingNode.widgets.find(w => w.name === "asmrMode"); + + // Helper function to toggle widget enabled state (EXACT same pattern as imageInferenceToggleHandler) + function toggleWidgetState(useWidget, paramWidget, paramName) { + if (!useWidget || !paramWidget) return; + + function toggleEnabled() { + const enabled = useWidget.value === true; + + // Disable/enable widgets using inputEl if available (exact same pattern) + if (paramWidget.inputEl) { + paramWidget.inputEl.disabled = !enabled; + paramWidget.inputEl.style.opacity = enabled ? "1" : "0.5"; + paramWidget.inputEl.style.cursor = enabled ? "text" : "not-allowed"; + paramWidget.inputEl.readOnly = !enabled; + } + // Also set widget property + paramWidget.disabled = !enabled; + + // Fallback: try to find inputs via DOM if inputEl is not available + if (!paramWidget.inputEl) { + const nodeElement = klingNode.htmlElements?.widgetsContainer || klingNode.htmlElements; + if (nodeElement) { + const input = nodeElement.querySelector(`input[name="${paramName}"], textarea[name="${paramName}"], select[name="${paramName}"]`); + if (input) { + input.disabled = !enabled; + input.style.opacity = enabled ? "1" : "0.5"; + input.style.cursor = enabled ? "text" : "not-allowed"; + input.readOnly = !enabled; + if (input.tagName === "SELECT") { + input.style.pointerEvents = enabled ? "auto" : "none"; + } + } + } + } + + klingNode.setDirtyCanvas(true); + } + + // Set up callback (exact same pattern as imageInferenceToggleHandler) + appendWidgetCB(useWidget, () => { + setTimeout(toggleEnabled, 50); + }); + + // Initial call to set initial state (exact same pattern) + setTimeout(toggleEnabled, 100); + } + + // Set up all toggle handlers (exact same pattern as imageInferenceToggleHandler) + if (useCameraControlWidget && cameraControlWidget) { + toggleWidgetState(useCameraControlWidget, cameraControlWidget, "cameraControl"); + } + + if (useSoundVolumeWidget && soundVolumeWidget) { + toggleWidgetState(useSoundVolumeWidget, soundVolumeWidget, "soundVolume"); + } + + if (useOriginalAudioVolumeWidget && originalAudioVolumeWidget) { + toggleWidgetState(useOriginalAudioVolumeWidget, originalAudioVolumeWidget, "originalAudioVolume"); + } + + if (useSoundEffectPromptWidget && soundEffectPromptWidget) { + toggleWidgetState(useSoundEffectPromptWidget, soundEffectPromptWidget, "soundEffectPrompt"); + } + + if (useBgmPromptWidget && bgmPromptWidget) { + toggleWidgetState(useBgmPromptWidget, bgmPromptWidget, "bgmPrompt"); + } + + if (useAsmrModeWidget && asmrModeWidget) { + toggleWidgetState(useAsmrModeWidget, asmrModeWidget, "asmrMode"); + } +} + +function lumaProviderSettingsToggleHandler(lumaNode) { + // Find all "use" parameter widgets for Luma Provider Settings + const useLoopWidget = lumaNode.widgets.find(w => w.name === "useLoop"); + const loopWidget = lumaNode.widgets.find(w => w.name === "loop"); + const useConcept1Widget = lumaNode.widgets.find(w => w.name === "useConcept1"); + const concept1Widget = lumaNode.widgets.find(w => w.name === "concept1"); + const useConcept2Widget = lumaNode.widgets.find(w => w.name === "useConcept2"); + const concept2Widget = lumaNode.widgets.find(w => w.name === "concept2"); + const useConcept3Widget = lumaNode.widgets.find(w => w.name === "useConcept3"); + const concept3Widget = lumaNode.widgets.find(w => w.name === "concept3"); + const useConcept4Widget = lumaNode.widgets.find(w => w.name === "useConcept4"); + const concept4Widget = lumaNode.widgets.find(w => w.name === "concept4"); + + function toggleWidgetState(useWidget, paramWidget, paramName) { + if (!useWidget || !paramWidget) return; + + function toggleEnabled() { + const enabled = useWidget.value === true; + + if (paramWidget.inputEl) { + paramWidget.inputEl.disabled = !enabled; + paramWidget.inputEl.style.opacity = enabled ? "1" : "0.5"; + paramWidget.inputEl.style.cursor = enabled ? "text" : "not-allowed"; + paramWidget.inputEl.readOnly = !enabled; + } + paramWidget.disabled = !enabled; + + if (!paramWidget.inputEl) { + const nodeElement = lumaNode.htmlElements?.widgetsContainer || lumaNode.htmlElements; + if (nodeElement) { + const input = nodeElement.querySelector(`input[name="${paramName}"], textarea[name="${paramName}"], select[name="${paramName}"]`); + if (input) { + input.disabled = !enabled; + input.style.opacity = enabled ? "1" : "0.5"; + input.style.cursor = enabled ? "text" : "not-allowed"; + input.readOnly = !enabled; + if (input.tagName === "SELECT") { + input.style.pointerEvents = enabled ? "auto" : "none"; + } + } + } + } + + lumaNode.setDirtyCanvas(true); + } + + appendWidgetCB(useWidget, () => { + setTimeout(toggleEnabled, 50); + }); + + setTimeout(toggleEnabled, 100); + } + + if (useLoopWidget && loopWidget) { + toggleWidgetState(useLoopWidget, loopWidget, "loop"); + } + + if (useConcept1Widget && concept1Widget) { + toggleWidgetState(useConcept1Widget, concept1Widget, "concept1"); + } + + if (useConcept2Widget && concept2Widget) { + toggleWidgetState(useConcept2Widget, concept2Widget, "concept2"); + } + + if (useConcept3Widget && concept3Widget) { + toggleWidgetState(useConcept3Widget, concept3Widget, "concept3"); + } + + if (useConcept4Widget && concept4Widget) { + toggleWidgetState(useConcept4Widget, concept4Widget, "concept4"); + } +} + export { notifyUser, promptEnhanceHandler, @@ -1682,6 +1943,7 @@ export { APIKeyHandler, videoInferenceDimensionsHandler, videoModelSearchFilterHandler, + audioModelSearchFilterHandler, useParameterToggleHandler, imageInferenceToggleHandler, upscalerToggleHandler, @@ -1689,4 +1951,6 @@ export { acceleratorOptionsToggleHandler, bytedanceProviderSettingsToggleHandler, openaiProviderSettingsToggleHandler, + klingProviderSettingsToggleHandler, + lumaProviderSettingsToggleHandler, }; \ No newline at end of file diff --git a/modules/audioInference.py b/modules/audioInference.py index 2b48bfd..a755824 100644 --- a/modules/audioInference.py +++ b/modules/audioInference.py @@ -1,4 +1,3 @@ -import json import uuid import requests import torch @@ -47,6 +46,10 @@ class RunwareAudioInference: "step": 1, "tooltip": "Length of generated audio in seconds (10-300)" }), + "useSampleRate": ("BOOLEAN", { + "default": True, + "tooltip": "Enable/disable sampleRate parameter in API request" + }), "sampleRate": ("INT", { "default": 22050, "min": 8000, @@ -54,6 +57,10 @@ class RunwareAudioInference: "step": 1, "tooltip": "Sample rate of the generated audio in Hz (8000-48000)" }), + "useBitrate": ("BOOLEAN", { + "default": True, + "tooltip": "Enable/disable bitrate parameter in API request" + }), "bitrate": ("INT", { "default": 32, "min": 32, @@ -77,6 +84,9 @@ class RunwareAudioInference: }), }, "optional": { + "inputs": ("RUNWAREAUDIOINFERENCEINPUTS", { + "tooltip": "Custom inputs for audio generation (e.g., video URL for audio extraction)" + }), "providerSettings": ("RUNWAREPROVIDERSETTINGS", { "tooltip": "Provider-specific configuration settings" }), @@ -110,12 +120,15 @@ class RunwareAudioInference: "model": kwargs.get("model", ""), "duration": kwargs.get("duration", 30), "useDuration": kwargs.get("useDuration", True), - "sampleRate": kwargs.get("sampleRate", 44100), - "bitrate": kwargs.get("bitrate", 128), + "sampleRate": kwargs.get("sampleRate", 22050), + "useSampleRate": kwargs.get("useSampleRate", True), + "bitrate": kwargs.get("bitrate", 32), + "useBitrate": kwargs.get("useBitrate", True), "outputType": kwargs.get("outputType", "URL"), "outputFormat": kwargs.get("outputFormat", "MP3"), "negativePrompt": kwargs.get("negativePrompt", ""), "numberResults": kwargs.get("numberResults", 1), + "inputs": kwargs.get("inputs", None), "providerSettings": kwargs.get("providerSettings", None), } @@ -124,8 +137,9 @@ class RunwareAudioInference: if not providerSettings or not isinstance(providerSettings, dict): return False - elevenlabsSettings = providerSettings.get("elevenlabs", {}) - musicSettings = elevenlabsSettings.get("music", {}) + # Provider settings is now flat (e.g., {"music": {...}}) + # Check if it has music.compositionPlan.sections + musicSettings = providerSettings.get("music", {}) compositionPlan = musicSettings.get("compositionPlan", {}) sections = compositionPlan.get("sections", []) @@ -144,12 +158,19 @@ class RunwareAudioInference: "deliveryMethod": "sync", "includeCost": True, "numberResults": params["numberResults"], - "audioSettings": { - "sampleRate": params["sampleRate"], - "bitrate": params["bitrate"] - } }] + # Build audioSettings conditionally based on use flags + audioSettings = {} + if params["useSampleRate"]: + audioSettings["sampleRate"] = params["sampleRate"] + if params["useBitrate"]: + audioSettings["bitrate"] = params["bitrate"] + + # Only add audioSettings if at least one setting is enabled + if audioSettings: + genConfig[0]["audioSettings"] = audioSettings + # Handle sections - disable duration if sections are provided hasSections = self._hasSections(params["providerSettings"]) if hasSections: @@ -173,18 +194,45 @@ class RunwareAudioInference: if params["negativePrompt"]: genConfig[0]["negativePrompt"] = params["negativePrompt"] + # Handle inputs - merge custom inputs from Audio Inference Inputs node + if params["inputs"] is not None: + # Merge inputs from audio inference inputs node + if "inputs" not in genConfig[0]: + genConfig[0]["inputs"] = {} + + # Merge each input from inputs + for key, value in params["inputs"].items(): + genConfig[0]["inputs"][key] = value + + print(f"[DEBUG] Audio inference inputs merged: {rwUtils.sanitize_for_logging(params['inputs'])}") + print(f"[DEBUG] Final genConfig inputs: {rwUtils.sanitize_for_logging(genConfig[0].get('inputs', {}))}") + + # Handle providerSettings - extract provider name from model and wrap with provider name (same pattern as video inference) if params["providerSettings"] is not None: - genConfig[0]["providerSettings"] = params["providerSettings"] + # Extract provider name from model (e.g., "klingai:8@1" -> "klingai", "elevenlabs:1@1" -> "elevenlabs") + provider_name = params["model"].split(":")[0] if ":" in params["model"] else params["model"] + + # If providerSettings is a dictionary, create the correct API format + if isinstance(params["providerSettings"], dict): + # Create the providerSettings object with provider name as key + final_provider_settings = { + provider_name: params["providerSettings"] + } + genConfig[0]["providerSettings"] = final_provider_settings + print(f"[DEBUG] Provider settings wrapped with provider name: {rwUtils.sanitize_for_logging(final_provider_settings)}") + else: + # If it's just a string, use it directly + genConfig[0]["providerSettings"] = params["providerSettings"] print(f"[DEBUG] Sending Audio Inference Request:") - print(f"[DEBUG] Request Payload: {json.dumps(genConfig, indent=2)}") + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") return genConfig def _logResponse(self, genResult): """Log the API response for debugging""" print(f"[DEBUG] Received Audio Inference Response:") - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}") + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}") def _validateResponse(self, genResult): """Validate API response and raise errors if needed""" diff --git a/modules/audioInferenceInputs.py b/modules/audioInferenceInputs.py new file mode 100644 index 0000000..5179338 --- /dev/null +++ b/modules/audioInferenceInputs.py @@ -0,0 +1,46 @@ +from .utils import runwareUtils as rwUtils +from typing import Dict, Any + + +class audioInferenceInputs: + """Audio Inference Inputs node for configuring audio generation inputs""" + + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "Video": ("STRING", { + "tooltip": "Video URL or mediaUUID for audio generation. Can be a direct URL or a mediaUUID from Runware Media Upload node.", + "default": "", + }), + } + } + + DESCRIPTION = "Configure custom inputs for Runware Audio Inference, including video input for audio extraction or generation." + FUNCTION = "createInputs" + RETURN_TYPES = ("RUNWAREAUDIOINFERENCEINPUTS",) + RETURN_NAMES = ("Audio Inference Inputs",) + CATEGORY = "Runware" + + def createInputs(self, **kwargs) -> tuple[Dict[str, Any]]: + """Create audio inference inputs from provided parameters""" + video = kwargs.get("Video", None) + + inputs = {} + + if video is not None and video.strip() != "": + inputs["video"] = video.strip() + + return (inputs,) + + +# Node class mappings +NODE_CLASS_MAPPINGS = { + "RunwareAudioInferenceInputs": audioInferenceInputs, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "RunwareAudioInferenceInputs": "Runware Audio Inference Inputs", +} + diff --git a/modules/audioModelSearch.py b/modules/audioModelSearch.py index 5b57171..76bcade 100644 --- a/modules/audioModelSearch.py +++ b/modules/audioModelSearch.py @@ -1,32 +1,78 @@ class RunwareAudioModelSearch: """Audio Model Search node for searching audio models""" - def __init__(self): - pass - + # Define the audio models by provider + AUDIO_MODELS = { + "ElevenLabs": [ + "elevenlabs:1@1 (ElevenLabs Multilingual v2)", + "elevenlabs:2@1 (ElevenLabs Multilingual v2 Turbo)", + "elevenlabs:3@1 (ElevenLabs Monolingual v1)", + ], + "KlingAI": [ + "klingai:8@1 (KlingAI Audio)", + ], + } + + MODEL_PROVIDERS = [ + "All", + "ElevenLabs", + "KlingAI", + ] + @classmethod def INPUT_TYPES(cls): + allModels = cls._getAllModels() + defaultModel = "elevenlabs:1@1 (ElevenLabs Multilingual v2)" + return { "required": { - "searchQuery": ("STRING", { - "default": "elevenlabs:1@1", - "tooltip": "Search for audio models by name, provider, or capabilities" + "Model Search": ("STRING", { + "tooltip": "Search For Specific Audio Model By Name Or Code (eg: elevenlabs, klingai).", }), - "provider": (["elevenlabs"], { - "default": "elevenlabs", - "tooltip": "Currently only ElevenLabs is supported" + "Model Provider": (cls.MODEL_PROVIDERS, { + "tooltip": "Choose Audio Model Provider To Filter Results.", + "default": "ElevenLabs", + }), + "AudioList": (allModels, { + "tooltip": "Audio Model Results Will Show UP Here So You Could Choose From.", + "default": defaultModel, + }), + "Use Search Value": ("BOOLEAN", { + "tooltip": "When Enabled, the value you've set in the search input will be used instead.\n\nThis is useful in case the model search API is down or you prefer to set the model manually.", + "default": False, + "label_on": "Enabled", + "label_off": "Disabled", }), } } + @classmethod + def _getAllModels(cls): + """Get all models from all providers""" + allModels = [] + for models in cls.AUDIO_MODELS.values(): + allModels.extend(models) + return allModels + RETURN_TYPES = ("RUNWAREAUDIOMODEL",) RETURN_NAMES = ("model",) FUNCTION = "searchModels" - CATEGORY = "Runware/Audio" + CATEGORY = "Runware" + DESCRIPTION = "Directly Search and Connect Audio Models to Runware Audio Inference Nodes In ComfyUI." + + @classmethod + def VALIDATE_INPUTS(cls, AudioList): + return True def searchModels(self, **kwargs): - """Search for audio models""" - searchQuery = kwargs.get("searchQuery", "") - provider = kwargs.get("provider", "elevenlabs") + """Search and return audio model""" + enableSearchValue = kwargs.get("Use Search Value", False) + searchInput = kwargs.get("Model Search") - return (searchQuery,) + if enableSearchValue: + modelAirCode = searchInput + else: + currentModel = kwargs.get("AudioList") + modelAirCode = currentModel.split(" (")[0] + + return (modelAirCode,) diff --git a/modules/bgremoval.py b/modules/bgremoval.py index 85b0e03..f494385 100644 --- a/modules/bgremoval.py +++ b/modules/bgremoval.py @@ -1,5 +1,4 @@ from .utils import runwareUtils as rwUtils -import json class bgremoval: RUNWARE_RMBG_MODELS = { @@ -155,14 +154,14 @@ class bgremoval: # Debug: Print the request being sent print(f"[DEBUG] Sending Background Removal Request:", flush=True) - print(f"[DEBUG] Request Payload: {json.dumps([genConfig], indent=2)}", flush=True) + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps([genConfig], indent=2)}", flush=True) try: genResult = rwUtils.inferenecRequest([genConfig]) # Debug: Print the response received print(f"[DEBUG] Received Background Removal Response:", flush=True) - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}", flush=True) + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}", flush=True) except Exception as e: print(f"[DEBUG] Error in Background Removal Request: {str(e)}", flush=True) raise diff --git a/modules/imageInference.py b/modules/imageInference.py index 77c9c63..997a86c 100644 --- a/modules/imageInference.py +++ b/modules/imageInference.py @@ -1,5 +1,4 @@ from .utils import runwareUtils as rwUtils -import json class txt2img: @@ -350,15 +349,13 @@ class txt2img: else: # Debug: Print the request being sent print(f"[DEBUG] Sending Image Inference Request:") - print(f"[DEBUG] Request Payload: {json.dumps(genConfig, indent=2)}") - - print(f"[DEBUG] CFGScale value from kwargs: {cfgScale}") + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") genResult = rwUtils.inferenecRequest(genConfig) # Debug: Print the response received print(f"[DEBUG] Received Image Inference Response:") - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}") + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}") images = rwUtils.convertImageB64List(genResult) return (images, None) \ No newline at end of file diff --git a/modules/imageInferenceInputs.py b/modules/imageInferenceInputs.py index 3f5c0f4..a652218 100644 --- a/modules/imageInferenceInputs.py +++ b/modules/imageInferenceInputs.py @@ -15,15 +15,31 @@ class imageInferenceInputs: "Reference Image 1": ("IMAGE", { "tooltip": "Specifies Reference Image 1 for the inputs. These reference images help guide the image generation process." }), + "Reference Tag 1": ("STRING", { + "tooltip": "Optional tag describing Reference Image 1. Leave empty to omit.", + "default": "", + }), "Reference Image 2": ("IMAGE", { "tooltip": "Specifies Reference Image 2 for the inputs. These reference images help guide the image generation process." }), + "Reference Tag 2": ("STRING", { + "tooltip": "Optional tag describing Reference Image 2. Leave empty to omit.", + "default": "", + }), "Reference Image 3": ("IMAGE", { "tooltip": "Specifies Reference Image 3 for the inputs. These reference images help guide the image generation process." }), + "Reference Tag 3": ("STRING", { + "tooltip": "Optional tag describing Reference Image 3. Leave empty to omit.", + "default": "", + }), "Reference Image 4": ("IMAGE", { "tooltip": "Specifies Reference Image 4 for the inputs. These reference images help guide the image generation process." }), + "Reference Tag 4": ("STRING", { + "tooltip": "Optional tag describing Reference Image 4. Leave empty to omit.", + "default": "", + }), } } @@ -37,28 +53,57 @@ class imageInferenceInputs: """Create image inference inputs from provided parameters""" image = kwargs.get("image", None) refImage1 = kwargs.get("Reference Image 1", None) + refTag1 = kwargs.get("Reference Tag 1", "") refImage2 = kwargs.get("Reference Image 2", None) + refTag2 = kwargs.get("Reference Tag 2", "") refImage3 = kwargs.get("Reference Image 3", None) + refTag3 = kwargs.get("Reference Tag 3", "") refImage4 = kwargs.get("Reference Image 4", None) + refTag4 = kwargs.get("Reference Tag 4", "") inputs = {} if image is not None: inputs["image"] = rwUtils.convertTensor2IMG(image) - - references = self._collectReferences(refImage1, refImage2, refImage3, refImage4) + + references = self._collectReferences( + refImage1, refTag1, + refImage2, refTag2, + refImage3, refTag3, + refImage4, refTag4, + ) if len(references) > 0: - inputs["references"] = references + inputs["referenceImages"] = references return (inputs,) - def _collectReferences(self, refImage1, refImage2, refImage3, refImage4): + def _collectReferences(self, *referenceArgs): """Collect and convert reference images to list""" + # Build list of (image, tag) pairs from the flat arguments + referencePairs = list(zip(referenceArgs[0::2], referenceArgs[1::2])) + + # Determine if any tag is provided + hasTags = any( + isinstance(tag, str) and tag.strip() != "" + for _, tag in referencePairs + ) + + if not hasTags: + # Use legacy behavior: simple list of images + return [ + rwUtils.convertTensor2IMG(image) + for image, _ in referencePairs + if image is not None + ] + references = [] - refImages = [refImage1, refImage2, refImage3, refImage4] - - for refImage in refImages: - if refImage is not None: - references.append(rwUtils.convertTensor2IMG(refImage)) - + for image, tag in referencePairs: + if image is None: + continue + + entry = {"image": rwUtils.convertTensor2IMG(image)} + if isinstance(tag, str) and tag.strip() != "": + entry["tag"] = tag.strip() + references.append(entry) + return references diff --git a/modules/mediaUpload.py b/modules/mediaUpload.py index 75eaa40..03975f6 100644 --- a/modules/mediaUpload.py +++ b/modules/mediaUpload.py @@ -11,6 +11,8 @@ from .utils.runwareUtils import ( RUNWARE_API_BASE_URL, generalRequestWrapper, genRandUUID, + sanitize_for_logging, + safe_json_dumps, sendMediaUUID, ) @@ -202,7 +204,7 @@ class RunwareMediaUpload: mediaData = self._stripDataUriPrefix(mediaDataUri) uploadConfig = self._buildUploadConfig(taskUuid, mediaData) - print(f"[Debug] Upload config: {uploadConfig[0]}") + print(f"[Debug] Upload config: {sanitize_for_logging(uploadConfig[0])}") print(f"[Debug] API URL: {RUNWARE_API_BASE_URL}") uploadResult = self._makeUploadRequest(uploadConfig) @@ -279,10 +281,10 @@ class RunwareMediaUpload: def _validateUploadResponse(self, uploadResult): """Validate upload response""" - print(f"[Debug] Upload response: {uploadResult}") + print(f"[Debug] Upload response: {safe_json_dumps(uploadResult, indent=2) if isinstance(uploadResult, (dict, list)) else uploadResult}") if "errors" in uploadResult: - print(f"[Debug] Upload error: {uploadResult}") + print(f"[Debug] Upload error: {safe_json_dumps(uploadResult, indent=2) if isinstance(uploadResult, (dict, list)) else uploadResult}") raise Exception(f"Upload failed: {uploadResult}") def _pollForResult(self, taskUuid): @@ -344,14 +346,14 @@ class RunwareMediaUpload: print(f"[Debug] Failed to parse JSON in poll: {str(e)}") return None - print(f"[Debug] Poll response: {pollResultJson}") + print(f"[Debug] Poll response: {safe_json_dumps(pollResultJson, indent=2) if isinstance(pollResultJson, (dict, list)) else pollResultJson}") if "errors" in pollResultJson: - print(f"[Debug] Poll error: {pollResultJson}") + print(f"[Debug] Poll error: {safe_json_dumps(pollResultJson, indent=2) if isinstance(pollResultJson, (dict, list)) else pollResultJson}") return None if "data" in pollResultJson and len(pollResultJson["data"]) > 0: - print(f"[Debug] Poll data: {pollResultJson['data'][0]}") + print(f"[Debug] Poll data: {sanitize_for_logging(pollResultJson['data'][0])}") return pollResultJson["data"][0] return None diff --git a/modules/providerSettings/elevenlabsProviderSettings.py b/modules/providerSettings/elevenlabsProviderSettings.py index 9657c0a..51381b5 100644 --- a/modules/providerSettings/elevenlabsProviderSettings.py +++ b/modules/providerSettings/elevenlabsProviderSettings.py @@ -57,11 +57,9 @@ class RunwareElevenLabsProviderSettings: } } - # Create provider settings + # Return flat dictionary - will be wrapped by inference node with provider name (same pattern as video provider settings) providerSettings = { - "elevenlabs": { - "music": music - } + "music": music } return (providerSettings,) diff --git a/modules/providerSettings/klingProviderSettings.py b/modules/providerSettings/klingProviderSettings.py index 7c7d954..6fa85fb 100644 --- a/modules/providerSettings/klingProviderSettings.py +++ b/modules/providerSettings/klingProviderSettings.py @@ -3,7 +3,7 @@ Runware KlingAI Provider Settings Node Provides KlingAI-specific settings for video generation """ -from typing import Dict, Any +from typing import Optional, Dict, Any class RunwareKlingProviderSettings: @@ -14,6 +14,18 @@ class RunwareKlingProviderSettings: return { "required": {}, "optional": { + "useCameraControl": ("BOOLEAN", { + "tooltip": "Enable to include cameraControl parameter in provider settings", + "default": False, + }), + "cameraControl": (["none", "static", "dynamic", "zoom_in", "zoom_out", "pan_left", "pan_right", "tilt_up", "tilt_down", "smooth"], { + "tooltip": "Camera control mode for KlingAI video generation", + "default": "none", + }), + "useSoundVolume": ("BOOLEAN", { + "tooltip": "Enable to include soundVolume parameter in provider settings", + "default": False, + }), "soundVolume": ("FLOAT", { "tooltip": "Background sound volume to mix with generated audio (provider key: soundVolume).", "default": 1.0, @@ -21,6 +33,10 @@ class RunwareKlingProviderSettings: "max": 2.0, "step": 0.1, }), + "useOriginalAudioVolume": ("BOOLEAN", { + "tooltip": "Enable to include originalAudioVolume parameter in provider settings", + "default": False, + }), "originalAudioVolume": ("FLOAT", { "tooltip": "Original video volume mix level (provider key: originalAudioVolume). No effect if source has no audio.", "default": 1.0, @@ -28,32 +44,92 @@ class RunwareKlingProviderSettings: "max": 2.0, "step": 0.1, }), + "useSoundEffectPrompt": ("BOOLEAN", { + "tooltip": "Enable to include soundEffectPrompt parameter in provider settings", + "default": False, + }), + "soundEffectPrompt": ("STRING", { + "multiline": True, + "tooltip": "Prompt describing the sound effect to generate", + "default": "", + }), + "useBgmPrompt": ("BOOLEAN", { + "tooltip": "Enable to include bgmPrompt parameter in provider settings", + "default": False, + }), + "bgmPrompt": ("STRING", { + "multiline": True, + "tooltip": "Prompt describing the background music to generate", + "default": "", + }), + "useAsmrMode": ("BOOLEAN", { + "tooltip": "Enable to include asmrMode parameter in provider settings", + "default": False, + }), + "asmrMode": ("BOOLEAN", { + "tooltip": "Enable ASMR mode for audio generation", + "default": False, + }), } } RETURN_TYPES = ("RUNWAREPROVIDERSETTINGS",) RETURN_NAMES = ("Provider Settings",) - FUNCTION = "create_provider_settings" - CATEGORY = "Runware" - DESCRIPTION = "Configure KlingAI-specific provider settings for video generation including sound and original audio volume controls." + FUNCTION = "createProviderSettings" + CATEGORY = "Runware/Provider Settings" + DESCRIPTION = "Configure KlingAI-specific provider settings for video generation including camera control, audio volume, sound effects, and ASMR mode." - def create_provider_settings(self, **kwargs) -> tuple[Dict[str, Any]]: + def createProviderSettings(self, **kwargs) -> tuple[Dict[str, Any]]: """Create KlingAI provider settings""" - sound_volume = kwargs.get("soundVolume", None) - original_audio_volume = kwargs.get("originalAudioVolume", None) + # Get control parameters + useCameraControl = kwargs.get("useCameraControl", False) + useSoundVolume = kwargs.get("useSoundVolume", False) + useOriginalAudioVolume = kwargs.get("useOriginalAudioVolume", False) + useSoundEffectPrompt = kwargs.get("useSoundEffectPrompt", False) + useBgmPrompt = kwargs.get("useBgmPrompt", False) + useAsmrMode = kwargs.get("useAsmrMode", False) - kling_settings: Dict[str, Any] = {} + # Get value parameters + cameraControl = kwargs.get("cameraControl", "none") + soundVolume = kwargs.get("soundVolume", 1.0) + originalAudioVolume = kwargs.get("originalAudioVolume", 1.0) + soundEffectPrompt = kwargs.get("soundEffectPrompt", "") + bgmPrompt = kwargs.get("bgmPrompt", "") + asmrMode = kwargs.get("asmrMode", False) - if sound_volume is not None: - kling_settings["soundVolume"] = float(sound_volume) - if original_audio_volume is not None: - kling_settings["originalAudioVolume"] = float(original_audio_volume) + # Build settings dictionary - only include what is enabled + klingSettings: Dict[str, Any] = {} - # Remove unset values - kling_settings = {k: v for k, v in kling_settings.items() if v is not None} + # Add cameraControl only if useCameraControl is enabled and not "none" + if useCameraControl and cameraControl != "none": + klingSettings["cameraControl"] = cameraControl - return (kling_settings,) + # Add soundVolume only if useSoundVolume is enabled + if useSoundVolume: + klingSettings["soundVolume"] = float(soundVolume) + + # Add originalAudioVolume only if useOriginalAudioVolume is enabled + if useOriginalAudioVolume: + klingSettings["originalAudioVolume"] = float(originalAudioVolume) + + # Add soundEffectPrompt only if useSoundEffectPrompt is enabled and not empty + if useSoundEffectPrompt and soundEffectPrompt and soundEffectPrompt.strip(): + klingSettings["soundEffectPrompt"] = soundEffectPrompt.strip() + + # Add bgmPrompt only if useBgmPrompt is enabled and not empty + if useBgmPrompt and bgmPrompt and bgmPrompt.strip(): + klingSettings["bgmPrompt"] = bgmPrompt.strip() + + # Add asmrMode only if useAsmrMode is enabled + if useAsmrMode: + klingSettings["asmrMode"] = asmrMode + + # Clean up None values + klingSettings = {k: v for k, v in klingSettings.items() if v is not None} + + # Return flat dictionary - will be wrapped by inference node with provider name (same pattern as video provider settings) + return (klingSettings,) # Node class mappings diff --git a/modules/providerSettings/lumaProviderSettings.py b/modules/providerSettings/lumaProviderSettings.py new file mode 100644 index 0000000..76bfb8b --- /dev/null +++ b/modules/providerSettings/lumaProviderSettings.py @@ -0,0 +1,146 @@ +from typing import Any, Dict, List + + +class RunwareLumaProviderSettings: + """Provider settings node for LumaAI video generation parameters.""" + + CONCEPT_OPTIONS = [ + "", + "aerial", + "aerial_drone", + "bolt_cam", + "crane_down", + "crane_up", + "dolly_zoom", + "elevator_doors", + "eye_level", + "ground_level", + "handheld", + "high_angle", + "low_angle", + "orbit_left", + "orbit_right", + "over_the_shoulder", + "overhead", + "pan_left", + "pan_right", + "pedestal_down", + "pedestal_up", + "pov", + "pull_out", + "push_in", + "roll_left", + "roll_right", + "selfie", + "static", + "tilt_down", + "tilt_up", + "tiny_planet", + "truck_left", + "truck_right", + "zoom_in", + "zoom_out", + ] + + @classmethod + def INPUT_TYPES(cls): + return { + "required": {}, + "optional": { + "useLoop": ("BOOLEAN", { + "tooltip": "Enable to include the loop parameter in provider settings.", + "default": False, + }), + "loop": ("BOOLEAN", { + "tooltip": "When enabled, generated video will loop seamlessly.", + "default": False, + }), + "useConcept1": ("BOOLEAN", { + "tooltip": "Enable to include Concept 1 in the concepts list.", + "default": False, + }), + "concept1": (cls.CONCEPT_OPTIONS, { + "tooltip": "Concept key to guide the video generation (e.g., aerial, bolt_cam).", + "default": "", + }), + "useConcept2": ("BOOLEAN", { + "tooltip": "Enable to include Concept 2 in the concepts list.", + "default": False, + }), + "concept2": (cls.CONCEPT_OPTIONS, { + "tooltip": "Concept key to guide the video generation.", + "default": "", + }), + "useConcept3": ("BOOLEAN", { + "tooltip": "Enable to include Concept 3 in the concepts list.", + "default": False, + }), + "concept3": (cls.CONCEPT_OPTIONS, { + "tooltip": "Concept key to guide the video generation.", + "default": "", + }), + "useConcept4": ("BOOLEAN", { + "tooltip": "Enable to include Concept 4 in the concepts list.", + "default": False, + }), + "concept4": (cls.CONCEPT_OPTIONS, { + "tooltip": "Concept key to guide the video generation.", + "default": "", + }), + } + } + + DESCRIPTION = "Configure LumaAI provider settings including loop and concept guidance." + FUNCTION = "createProviderSettings" + RETURN_TYPES = ("RUNWAREPROVIDERSETTINGS",) + RETURN_NAMES = ("Provider Settings",) + CATEGORY = "Runware/Provider Settings" + + def createProviderSettings(self, **kwargs) -> tuple[Dict[str, Any]]: + """Build LumaAI provider settings payload.""" + + useLoop = kwargs.get("useLoop", False) + loop = kwargs.get("loop", False) + + concepts = self._collectConcepts(**kwargs) + + lumaSettings: Dict[str, Any] = {} + + if useLoop: + lumaSettings["loop"] = bool(loop) + + if concepts: + lumaSettings["concepts"] = concepts + + result = {} + if lumaSettings: + result["lumaai"] = lumaSettings + + return (result if result else None,) + + def _collectConcepts(self, **kwargs) -> List[Dict[str, str]]: + """Collect concept entries from kwargs respecting use toggles.""" + + concepts: List[Dict[str, str]] = [] + + for index in range(1, 5): + use_key = f"useConcept{index}" + concept_key = f"concept{index}" + + if kwargs.get(use_key, False): + concept_value = kwargs.get(concept_key, "") + if isinstance(concept_value, str): + normalized = concept_value.strip().lower() + if normalized != "": + concepts.append({"key": normalized}) + + return concepts + + +NODE_CLASS_MAPPINGS = { + "RunwareLumaProviderSettings": RunwareLumaProviderSettings, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "RunwareLumaProviderSettings": "Runware Luma Provider Settings", +} diff --git a/modules/providerSettings/providerSettings.py b/modules/providerSettings/providerSettings.py deleted file mode 100644 index 43b24f9..0000000 --- a/modules/providerSettings/providerSettings.py +++ /dev/null @@ -1,36 +0,0 @@ -from ..utils import runwareUtils as rwUtils - - -class RunwareProviderSettings: - @classmethod - def INPUT_TYPES(cls): - return { - "required": { - "customSettings": ("DICT", { - "tooltip": "Custom provider settings as a dictionary. Add any provider-specific parameters here.", - "default": {}, - }), - } - } - - DESCRIPTION = "Configure custom provider-specific settings for video and image generation. Add any provider parameters as a dictionary." - FUNCTION = "create_provider_settings" - RETURN_TYPES = ("RUNWAREPROVIDERSETTINGS",) - RETURN_NAMES = ("Provider Settings",) - CATEGORY = "Runware" - - def create_provider_settings(self, **kwargs): - custom_settings = kwargs.get("customSettings", {}) - - print(f"[Provider Settings] Custom settings: {custom_settings}") - return (custom_settings,) - - -# Node class mappings for ComfyUI registration -NODE_CLASS_MAPPINGS = { - "RunwareProviderSettings": RunwareProviderSettings, -} - -NODE_DISPLAY_NAME_MAPPINGS = { - "RunwareProviderSettings": "Runware Provider Settings", -} diff --git a/modules/providerSettings/runwayProviderSettings.py b/modules/providerSettings/runwayProviderSettings.py index 0a9dfbd..42e1acf 100644 --- a/modules/providerSettings/runwayProviderSettings.py +++ b/modules/providerSettings/runwayProviderSettings.py @@ -3,7 +3,7 @@ Runware Runway Provider Settings Node Provides Runway-specific settings for video generation """ -from typing import Optional, Dict, Any +from typing import Dict, Any class RunwareRunwayProviderSettings: @@ -14,9 +14,9 @@ class RunwareRunwayProviderSettings: return { "required": {}, "optional": { - "publicFigureThreshold": ("STRING", { - "tooltip": "Public figure threshold for content moderation (provider key: contentModeration.publicFigureThreshold).", - "default": None, + "publicFigureThreshold": (["auto", "low"], { + "tooltip": "Select the public figure detection threshold (provider key: contentModeration.publicFigureThreshold).", + "default": "auto", }), } } @@ -30,12 +30,11 @@ class RunwareRunwayProviderSettings: def createProviderSettings(self, **kwargs) -> tuple[Dict[str, Any]]: """Create Runway provider settings""" - publicFigureThreshold = kwargs.get("publicFigureThreshold", None) + publicFigureThreshold = kwargs.get("publicFigureThreshold") runwaySettings: Dict[str, Any] = {} - # Build contentModeration if publicFigureThreshold is provided - if publicFigureThreshold is not None and publicFigureThreshold.strip(): + if isinstance(publicFigureThreshold, str) and publicFigureThreshold.strip() != "": contentModeration: Dict[str, Any] = {} contentModeration["publicFigureThreshold"] = publicFigureThreshold.strip() runwaySettings["contentModeration"] = contentModeration diff --git a/modules/upscaler.py b/modules/upscaler.py index c0f4f6d..93fc3ee 100644 --- a/modules/upscaler.py +++ b/modules/upscaler.py @@ -1,5 +1,4 @@ from .utils import runwareUtils as rwUtils -import json class upscaler: @classmethod @@ -238,14 +237,14 @@ class upscaler: # Debug: Print the request being sent print(f"[DEBUG] Sending Image Upscale Request:", flush=True) - print(f"[DEBUG] Request Payload: {json.dumps([genConfig], indent=2)}", flush=True) + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps([genConfig], indent=2)}", flush=True) try: genResult = rwUtils.inferenecRequest([genConfig]) # Debug: Print the response received print(f"[DEBUG] Received Image Upscale Response:", flush=True) - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}", flush=True) + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}", flush=True) except Exception as e: print(f"[DEBUG] Error in Image Upscale Request: {str(e)}", flush=True) raise diff --git a/modules/utils/runwareUtils.py b/modules/utils/runwareUtils.py index 2ab9cab..8c2a4d5 100644 --- a/modules/utils/runwareUtils.py +++ b/modules/utils/runwareUtils.py @@ -18,6 +18,7 @@ import json import os import io import threading +import re load_dotenv() @@ -44,6 +45,50 @@ adapter = HTTPAdapter(pool_connections=10, pool_maxsize=10) session.mount("http://", adapter) session.mount("https://", adapter) +_BASE64_PATTERN = re.compile(r'^(?:data:[^;]+;base64,)?[A-Za-z0-9+/=\s]+$') + +def _truncate_base64_string(value: str, preview_length: int = 20) -> str: + """Return a short preview for base64/data URI strings.""" + if value is None: + return value + + prefix = "" + payload = value + + if value.startswith("data:") and "base64," in value: + prefix, payload = value.split("base64,", 1) + prefix += "base64," + + payload = payload.replace("\n", "").replace("\r", "") + if len(payload) > preview_length: + return f"{prefix}{payload[:preview_length]}...(truncated)" + return value + +def sanitize_for_logging(data, preview_length: int = 20, max_string_length: int = 2048): + """ + Sanitize data structures for debug logging by truncating base64 strings. + """ + if isinstance(data, dict): + return {key: sanitize_for_logging(value, preview_length, max_string_length) for key, value in data.items()} + if isinstance(data, list): + return [sanitize_for_logging(item, preview_length, max_string_length) for item in data] + if isinstance(data, tuple): + return tuple(sanitize_for_logging(item, preview_length, max_string_length) for item in data) + if isinstance(data, str): + stripped = data.strip() + if (len(stripped) > preview_length and _BASE64_PATTERN.match(stripped) + and not stripped.lower().startswith("http")): + return _truncate_base64_string(stripped, preview_length) + if len(data) > max_string_length: + return f"{data[:max_string_length]}...(truncated)" + return data + return data + +def safe_json_dumps(data, **kwargs) -> str: + """Dump JSON after sanitizing potential base64 payloads.""" + sanitized = sanitize_for_logging(data) + return json.dumps(sanitized, **kwargs) + def generalRequestWrapper(recaller, *args, **kwargs): for attempt in range(MAX_RETRIES + 1): try: @@ -303,7 +348,7 @@ def inferenecRequest(genConfig): print(f"[Debugging] Runware Raw Response Content: {genResult.content}") raise Exception("Error: Invalid JSON response from API!") if "errors" in genResult: - print(f"[DEBUG] API Error Response: {genResult}") + print(f"[DEBUG] API Error Response: {safe_json_dumps(genResult, indent=2) if isinstance(genResult, dict) else genResult}") raise Exception(genResult["errors"][0]["message"]) else: return genResult @@ -400,14 +445,12 @@ def convertTensor2IMG(tensorImage): image = Image.fromarray(imageNP) with io.BytesIO() as buffer: - image.save( - buffer, format="webp", quality=100, subsampling=0, method=6, exact=True - ) + image.save(buffer, format="PNG") imageRawData = buffer.getvalue() imgBytes = len(imageRawData) imgSize = int(imgBytes / 1024) imgb64 = base64.b64encode(imageRawData).decode("utf-8") - imgDataUri = f"data:image/webp;base64,{imgb64}" + imgDataUri = f"data:image/png;base64,{imgb64}" if ENABLE_IMAGES_CACHING and imgSize >= MIN_IMAGE_CACHE_SIZE: try: @@ -606,7 +649,7 @@ def pollVideoResult(taskUUID): return None if "errors" in pollResult: - print(f"[Debugging] Poll error: {pollResult}") + print(f"[Debugging] Poll error: {safe_json_dumps(pollResult, indent=2) if isinstance(pollResult, (dict, list)) else pollResult}") return pollResult else: return pollResult diff --git a/modules/vectorize.py b/modules/vectorize.py index 24a22e3..c8f922e 100644 --- a/modules/vectorize.py +++ b/modules/vectorize.py @@ -1,5 +1,4 @@ from .utils import runwareUtils as rwUtils -import json import base64 import io @@ -51,12 +50,12 @@ class vectorize: genConfig = self._buildGenConfig(model, imageUuid) print(f"[DEBUG] Sending Vectorize Request:") - print(f"[DEBUG] Request Payload: {json.dumps(genConfig, indent=2)}") + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") genResult = rwUtils.inferenecRequest(genConfig) print(f"[DEBUG] Received Vectorize Response:") - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}") + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}") self._validateResponse(genResult) diff --git a/modules/videoBgRemoval.py b/modules/videoBgRemoval.py index 608fa7c..3b0debf 100644 --- a/modules/videoBgRemoval.py +++ b/modules/videoBgRemoval.py @@ -1,5 +1,4 @@ from .utils import runwareUtils as rwUtils -import json import comfy.model_management @@ -69,12 +68,12 @@ class videoBgRemoval: genConfig = self._buildGenConfig(videoUuid, modelAir, outputFormat, rgbaColor) print(f"[DEBUG] Sending Video Background Removal Request:") - print(f"[DEBUG] Request Payload: {json.dumps(genConfig, indent=2)}") + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") genResult = rwUtils.inferenecRequest(genConfig) print(f"[DEBUG] Received Video Background Removal Response:") - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}") + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}") self._validateResponse(genResult) diff --git a/modules/videoInference.py b/modules/videoInference.py index fdfa9e7..9b228aa 100644 --- a/modules/videoInference.py +++ b/modules/videoInference.py @@ -1,6 +1,5 @@ from .utils import runwareUtils as rwUtils from .videoModelSearch import videoModelSearch -import json import comfy.model_management @@ -180,8 +179,8 @@ class txt2vid: videoAdvancedFeatureInputs = kwargs.get("videoAdvancedFeatureInputs", None) runwareAccelerator = kwargs.get("Accelerator", None) useCustomDimensions = kwargs.get("useCustomDimensions", False) - customWidth = kwargs.get("width", 864) - customHeight = kwargs.get("height", 480) + customWidth = kwargs.get("width", None) + customHeight = kwargs.get("height", None) useDuration = kwargs.get("useDuration", True) duration = kwargs.get("duration", 5) fps = kwargs.get("fps", 24) @@ -197,18 +196,23 @@ class txt2vid: # Handle model input - could be dict or string if isinstance(runwareVideoModel, dict): model = runwareVideoModel.get("model", "") + model_use_resolution = runwareVideoModel.get("useResolution", True) else: model = runwareVideoModel - - # Determine dimensions based on custom setting + model_use_resolution = True + + # Determine dimensions based on custom setting and model defaults if useCustomDimensions: width = customWidth height = customHeight - else: + elif model_use_resolution: modelDimensions = videoModelSearch.MODEL_DIMENSIONS.get(model, {"width": 1024, "height": 576}) - width = modelDimensions["width"] - height = modelDimensions["height"] - + width = modelDimensions.get("width", None) + height = modelDimensions.get("height", None) + else: + width = None + height = None + genConfig = [ { "taskType": "videoInference", @@ -219,7 +223,10 @@ class txt2vid: "includeCost": True, } ] - if height != 0 and width != 0: + if ( + width is not None and height is not None + and width > 0 and height > 0 + ): genConfig[0]['height'] = height genConfig[0]['width'] = width @@ -253,25 +260,25 @@ class txt2vid: # Add frameImages if provided from Runware Frame Images node if frameImages is not None and len(frameImages) > 0: genConfig[0]["frameImages"] = frameImages - print(f"[Debugging] Frame images array: {frameImages}") + print(f"[Debugging] Frame images array: {rwUtils.sanitize_for_logging(frameImages)}") # Add referenceImages if provided from Runware Reference Images node if referenceImages is not None and len(referenceImages) > 0: genConfig[0]["referenceImages"] = referenceImages - print(f"[Debugging] Reference images array: {referenceImages}") + print(f"[Debugging] Reference images array: {rwUtils.sanitize_for_logging(referenceImages)}") # Add inputAudios if provided if inputAudios is not None and len(inputAudios) > 0: genConfig[0]["inputAudios"] = inputAudios - print(f"[Debugging] Input audios array: {inputAudios}") + print(f"[Debugging] Input audios array: {rwUtils.sanitize_for_logging(inputAudios)}") # Add referenceVideos if provided and not empty if referenceVideos is not None: # Handle both single mediaUUID (string) and multiple mediaUUIDs (list) if isinstance(referenceVideos, str) and referenceVideos.strip() != "": genConfig[0]["referenceVideos"] = [referenceVideos.strip()] - print(f"[Debugging] Reference videos: {genConfig[0].get('referenceVideos', [])}") + print(f"[Debugging] Reference videos: {rwUtils.sanitize_for_logging(genConfig[0].get('referenceVideos', []))}") elif isinstance(referenceVideos, list) and len(referenceVideos) > 0: genConfig[0]["referenceVideos"] = referenceVideos - print(f"[Debugging] Reference videos: {genConfig[0].get('referenceVideos', [])}") + print(f"[Debugging] Reference videos: {rwUtils.sanitize_for_logging(genConfig[0].get('referenceVideos', []))}") # Add speech parameters if both voice and text are provided if speechVoice and speechVoice.strip() != "" and speechText and speechText.strip() != "": @@ -291,24 +298,23 @@ class txt2vid: for key, value in inputs.items(): genConfig[0]["inputs"][key] = value - print(f"[Debugging] Video inference inputs merged: {inputs}") - print(f"[Debugging] Final genConfig inputs: {genConfig[0].get('inputs', {})}") + print(f"[Debugging] Video inference inputs merged: {rwUtils.sanitize_for_logging(inputs)}") + print(f"[Debugging] Final genConfig inputs: {rwUtils.sanitize_for_logging(genConfig[0].get('inputs', {}))}") # Handle providerSettings - extract provider name from model and merge with custom settings if providerSettings is not None: - # Extract provider name from model (e.g., "pixverse:1@1" -> "pixverse") provider_name = model.split(":")[0] if ":" in model else model - - # If providerSettings is a dictionary, create the correct API format + if isinstance(providerSettings, dict): - # Create the providerSettings object with provider name as key - final_provider_settings = { - provider_name: providerSettings - } - genConfig[0]["providerSettings"] = final_provider_settings - print(f"[Debugging] Provider settings: {final_provider_settings}") + if provider_name in providerSettings: + final_provider_settings = providerSettings + else: + final_provider_settings = {provider_name: providerSettings} + + if final_provider_settings: + genConfig[0]["providerSettings"] = final_provider_settings + print(f"[Debugging] Provider settings: {rwUtils.sanitize_for_logging(final_provider_settings)}") else: - # If it's just a string, use it directly genConfig[0]["providerSettings"] = providerSettings # Add safety inputs if provided @@ -339,15 +345,15 @@ class txt2vid: try: # Debug: Print the request being sent print(f"[DEBUG] Sending Video Inference Request:") - print(f"[DEBUG] Request Payload: {json.dumps(genConfig, indent=2)}") + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") genResult = rwUtils.inferenecRequest(genConfig) # Debug: Print the response received print(f"[DEBUG] Received Video Inference Response:") - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}") + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}") - print(f"[Debugging] Generation config: {genConfig}") + print(f"[Debugging] Generation config: {rwUtils.safe_json_dumps(genConfig, indent=2)}") except Exception as e: # Check if it's a dimension error and provide helpful information error_msg = str(e) @@ -376,7 +382,7 @@ class txt2vid: # Poll for video result pollResult = rwUtils.pollVideoResult(taskUUID) - print(f"[Debugging] Poll result: {pollResult}") + print(f"[Debugging] Poll result: {rwUtils.safe_json_dumps(pollResult, indent=2) if isinstance(pollResult, (dict, list)) else pollResult}") # Check for errors first if pollResult and "errors" in pollResult and len(pollResult["errors"]) > 0: diff --git a/modules/videoInferenceInputs.py b/modules/videoInferenceInputs.py index ec2f8cd..966231c 100644 --- a/modules/videoInferenceInputs.py +++ b/modules/videoInferenceInputs.py @@ -13,6 +13,9 @@ class videoInferenceInputs: "Image": ("IMAGE", { "tooltip": "Portrait image for video generation. This will be the main subject that will speak and move in the generated video." }), + "Frame Images": ("RUNWAREVIDEOINPUTSFRAMEIMAGES", { + "tooltip": "Connect the Runware Video Inputs Frame node to provide timeline-constrained frame images." + }), "Audio": ("STRING", { "tooltip": "Connect the mediaUUID output from Runware Media Upload node with audio file. This audio will be synchronized with the generated video." }), @@ -25,7 +28,7 @@ class videoInferenceInputs: "Frame": ("IMAGE", { "tooltip": "Frame image for video generation. Connect a Load Image node to provide the frame image." }), - "References": ("RUNWAREVIDEOINPUTSREFERENCES", { + "References": ("RUNWAREVIDEOINPUTSREFERENCEIMAGES", { "tooltip": "Connect the Video Inputs References node to provide reference images." }), } @@ -44,6 +47,7 @@ class videoInferenceInputs: video = kwargs.get("Video", None) mask = kwargs.get("Mask", None) frame = kwargs.get("Frame", None) + frameImages = kwargs.get("Frame Images", None) references = kwargs.get("References", None) inputs = {} @@ -63,7 +67,10 @@ class videoInferenceInputs: if frame is not None: inputs["frame"] = rwUtils.convertTensor2IMG(frame) + if frameImages is not None and len(frameImages) > 0: + inputs["frameImages"] = frameImages + if references is not None and len(references) > 0: - inputs["references"] = references + inputs["referenceImages"] = references return (inputs,) diff --git a/modules/videoInputsFrame.py b/modules/videoInputsFrame.py new file mode 100644 index 0000000..9191644 --- /dev/null +++ b/modules/videoInputsFrame.py @@ -0,0 +1,70 @@ +from .utils import runwareUtils as rwUtils + + +class RunwareVideoInputsFrameImages: + """Video Inputs Frame node for adapting frame images structure for video inference""" + + MAX_FRAMES = 4 + + @classmethod + def INPUT_TYPES(cls): + optionalInputs = {} + + for i in range(1, cls.MAX_FRAMES + 1): + optionalInputs[f"image{i}"] = ("IMAGE", { + "tooltip": "Frame image to include in video inference inputs." + }) + optionalInputs[f"frame{i} position"] = ("STRING", { + "default": "", + "tooltip": "Optional frame label (e.g., 'first', 'last', specific frame number). Leave blank for provider defaults." + }) + + return { + "required": {}, + "optional": optionalInputs + } + + DESCRIPTION = "Convert Runware Frame Images into the expected structure for video inference inputs." + FUNCTION = "createFrameInputs" + RETURN_TYPES = ("RUNWAREVIDEOINPUTSFRAMEIMAGES",) + RETURN_NAMES = ("Video Inputs Frame Images",) + CATEGORY = "Runware" + + def createFrameInputs(self, **kwargs): + frameImages = [] + + for i in range(1, self.MAX_FRAMES + 1): + imageKey = f"image{i}" + frameKey = f"frame{i} position" + + image = kwargs.get(imageKey) + frame = kwargs.get(frameKey, "") + + if image is None: + continue + + frameData = self._createFrameEntry(image, frame) + frameImages.append(frameData) + + return (frameImages,) + + def _createFrameEntry(self, image, frameLabel): + imageData = rwUtils.convertTensor2IMG(image) + entry = {"image": imageData} + + if isinstance(frameLabel, str) and frameLabel.strip() != "": + if frameLabel.strip().isdigit(): + entry["frame"] = int(frameLabel.strip()) + else: + entry["frame"] = frameLabel.strip() + + return entry + + +NODE_CLASS_MAPPINGS = { + "RunwareVideoInputsFrameImages": RunwareVideoInputsFrameImages, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "RunwareVideoInputsFrameImages": "Runware Video Inputs Frame Images", +} diff --git a/modules/videoInputsReferences.py b/modules/videoInputsReferences.py index 43e4c82..ed32a8c 100644 --- a/modules/videoInputsReferences.py +++ b/modules/videoInputsReferences.py @@ -28,8 +28,8 @@ class videoInputsReferences: DESCRIPTION = "Configure multiple reference images with optional types for video inference inputs." FUNCTION = "createReferences" - RETURN_TYPES = ("RUNWAREVIDEOINPUTSREFERENCES",) - RETURN_NAMES = ("Video Inputs References",) + RETURN_TYPES = ("RUNWAREVIDEOINPUTSREFERENCEIMAGES",) + RETURN_NAMES = ("Video Inputs Reference Images",) CATEGORY = "Runware" def createReferences(self, **kwargs) -> tuple[List[Dict[str, Any]]]: @@ -50,14 +50,11 @@ class videoInputsReferences: return (references,) def _createReference(self, image, refType): - """Create reference object from image and type""" + """Create reference entry (API expects direct strings)""" imageUrl = rwUtils.convertTensor2IMG(image) - reference = {"image": imageUrl} - - if refType and refType.strip() != "": - reference["type"] = refType.strip() - - return reference + # API expects referenceImages to be a list of strings (UUID/URL/data URI) + # so we return the converted string directly. + return imageUrl # Node class mappings @@ -66,5 +63,5 @@ NODE_CLASS_MAPPINGS = { } NODE_DISPLAY_NAME_MAPPINGS = { - "RunwareVideoInputsReferences": "Runware Video Inputs References", + "RunwareVideoInputsReferences": "Runware Video Inputs Reference Images", } diff --git a/modules/videoModelSearch.py b/modules/videoModelSearch.py index 8a18d7b..393442b 100644 --- a/modules/videoModelSearch.py +++ b/modules/videoModelSearch.py @@ -65,6 +65,15 @@ class videoModelSearch: "Ovi": [ "runware:190@1 (Ovi)", ], + "Runway": [ + "runway:2@1 (Runway Aleph)", + "runway:1@1 (Runway Gen-4 Turbo)", + ], + "Luma": [ + "lumaai:1@1 (Luma Ray 1.6)", + "lumaai:2@1 (Luma Ray 2)", + "lumaai:2@2 (Luma Ray 2 Flash)", + ], } # Model dimensions mapping @@ -130,6 +139,15 @@ class videoModelSearch: # Ovi Models "runware:190@1": {"width": 0, "height": 0}, + + # Runway Models + "runway:2@1": {"width": 1280, "height": 720}, + "runway:1@1": {"width": 1280, "height": 720}, + + # Luma Models + "lumaai:1@1": {"width": 1080, "height": 720}, + "lumaai:2@1": {"width": 1080, "height": 720}, + "lumaai:2@2": {"width": 1080, "height": 720}, } MODEL_ARCHITECTURES = [ @@ -143,7 +161,9 @@ class videoModelSearch: "Wan", "OpenAI", "Lightricks", - "Ovi" + "Ovi", + "Runway", + "Luma" ] DEFAULT_DIMENSIONS = {"width": 1024, "height": 576} @@ -174,6 +194,12 @@ class videoModelSearch: "label_on": "Enabled", "label_off": "Disabled", }), + "useResolution": ("BOOLEAN", { + "tooltip": "Enable to automatically use the model's recommended resolution. Disable to output 0x0 and set custom resolution downstream.", + "default": True, + "label_on": "Enabled", + "label_off": "Disabled", + }), "Width": ("INT", { "default": defaultDims["width"], "min": 0, @@ -215,6 +241,7 @@ class videoModelSearch: searchInput = kwargs.get("Model Search") customWidth = kwargs.get("Width", 0) customHeight = kwargs.get("Height", 0) + useResolution = kwargs.get("useResolution", True) if enableSearchValue: modelAirCode = searchInput @@ -224,13 +251,19 @@ class videoModelSearch: dimensions = self.MODEL_DIMENSIONS.get(modelAirCode, self.DEFAULT_DIMENSIONS) - width = customWidth if customWidth > 0 else dimensions["width"] - height = customHeight if customHeight > 0 else dimensions["height"] - - if width == 0 and height == 0: - width = None - height = None + if useResolution: + width = customWidth if customWidth > 0 else dimensions["width"] + height = customHeight if customHeight > 0 else dimensions["height"] + + if width == 0 and height == 0: + width = None + height = None + else: + width = 0 + height = 0 return ({ "model": modelAirCode, + "useResolution": useResolution, + "useResolution": useResolution, }, width, height) diff --git a/modules/videoTranscription.py b/modules/videoTranscription.py index 88e39df..e7eedd7 100644 --- a/modules/videoTranscription.py +++ b/modules/videoTranscription.py @@ -1,9 +1,13 @@ from .utils import runwareUtils as rwUtils -import json import comfy.model_management class videoTranscription: + RUNWARE_VIDEO_TRANSCRIPTION_MODELS = { + "Memories Video Captioning": "memories:1@1", + "Memories Age Detection": "memories:2@1", + } + @classmethod def INPUT_TYPES(cls): return { @@ -25,9 +29,9 @@ class videoTranscription: "placeholder": "Enter video URL, file path, or Runware video UUID", "tooltip": "The video to transcribe. Can be a URL, file path, or Runware video UUID." }), - "model": ("STRING", { - "default": "memories:1@1", - "tooltip": "The model to use for video transcription. Default: memories:1@1" + "model": (list(cls.RUNWARE_VIDEO_TRANSCRIPTION_MODELS.keys()), { + "default": "Memories Video Captioning", + "tooltip": "Choose the model to use for video transcription." }), }, "hidden": { "node_id": "UNIQUE_ID" } @@ -37,7 +41,7 @@ class videoTranscription: FUNCTION = "transcribeVideo" RETURN_TYPES = ("STRING",) - RETURN_NAMES = ("Video Transcription",) + RETURN_NAMES = ("Video Caption",) CATEGORY = "Runware" OUTPUT_NODE = True @@ -50,7 +54,8 @@ class videoTranscription: def transcribeVideo(self, **kwargs): video = kwargs.get("video", "") - model = kwargs.get("model", "memories:1@1") + modelKey = kwargs.get("model", "Memories Video Captioning") + model = self.RUNWARE_VIDEO_TRANSCRIPTION_MODELS.get(modelKey, modelKey) if not video or not video.strip(): raise Exception("Video URL, file path, or UUID is required") @@ -70,14 +75,14 @@ class videoTranscription: # Debug: Print the request being sent print(f"[DEBUG] Sending Video Transcription Request:") - print(f"[DEBUG] Request Payload: {json.dumps(genConfig, indent=2)}") + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") try: genResult = rwUtils.inferenecRequest(genConfig) # Debug: Print the response received print(f"[DEBUG] Received Video Transcription Response:") - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}") + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}") except Exception as e: raise e diff --git a/modules/videoUpscaler.py b/modules/videoUpscaler.py index 23478cf..c3acf17 100644 --- a/modules/videoUpscaler.py +++ b/modules/videoUpscaler.py @@ -1,10 +1,10 @@ from .utils import runwareUtils as rwUtils -import json import comfy.model_management class videoUpscaler: RUNWARE_VUPSCALER_MODELS = { "Bria Video Upscaler": "bria:50@1", + "Bytedance Video Upscaler": "bytedance:50@1", } @classmethod @@ -69,13 +69,13 @@ class videoUpscaler: try: # Debug: Print the request being sent print(f"[DEBUG] Sending Video Upscale Request:") - print(f"[DEBUG] Request Payload: {json.dumps(genConfig, indent=2)}") + print(f"[DEBUG] Request Payload: {rwUtils.safe_json_dumps(genConfig, indent=2)}") genResult = rwUtils.inferenecRequest(genConfig) # Debug: Print the response received print(f"[DEBUG] Received Video Upscale Response:") - print(f"[DEBUG] Response: {json.dumps(genResult, indent=2)}") + print(f"[DEBUG] Response: {rwUtils.safe_json_dumps(genResult, indent=2)}") # Check for errors if "errors" in genResult: diff --git a/workflows/Runware_Audio_Inference_Kling.json b/workflows/Runware_Audio_Inference_Kling.json new file mode 100644 index 0000000..a6625fb --- /dev/null +++ b/workflows/Runware_Audio_Inference_Kling.json @@ -0,0 +1 @@ +{"id":"26e977e9-3c12-4fe4-98ed-67d64dc8f424","revision":0,"last_node_id":7,"last_link_id":6,"nodes":[{"id":4,"type":"SaveAudioMP3","pos":[864.8778686523438,602.015380859375],"size":[270,136],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"audio","name":"audio","type":"AUDIO","link":1},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"quality","name":"quality","type":"COMBO","widget":{"name":"quality"},"link":null},{"localized_name":"audioUI","name":"audioUI","type":"AUDIO_UI","widget":{"name":"audioUI"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveAudioMP3"},"widgets_values":["audio/ComfyUI","V0"]},{"id":6,"type":"Runware Media Upload","pos":[-34.391929626464844,782.7698364257812],"size":[270,58],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":4},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[5]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Media Upload"},"widgets_values":[""],"bgcolor":"#5345bf"},{"id":7,"type":"LoadVideo","pos":[-361.1187744140625,484.8183898925781],"size":[274.080078125,348.0801086425781],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[4]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["video_5s.mp4","image"]},{"id":5,"type":"Runware Audio Inference Inputs","pos":[-16.55170440673828,678.5122680664062],"size":[299.9126892089844,58],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":5}],"outputs":[{"localized_name":"Audio Inference Inputs","name":"Audio Inference Inputs","type":"RUNWAREAUDIOINFERENCEINPUTS","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Audio Inference Inputs"},"widgets_values":[""],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Audio Model Search","pos":[7.852407455444336,484.4079284667969],"size":[270,130],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Provider","name":"Model Provider","type":"COMBO","widget":{"name":"Model Provider"},"link":null},{"localized_name":"AudioList","name":"AudioList","type":"COMBO","widget":{"name":"AudioList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"model","name":"model","type":"RUNWAREAUDIOMODEL","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Audio Model Search"},"widgets_values":["","KlingAI","klingai:8@1 (KlingAI Audio)",false],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Audio Inference","pos":[382.5035705566406,596.126953125],"size":[400,374],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"model","name":"model","type":"RUNWAREAUDIOMODEL","link":3},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREAUDIOINFERENCEINPUTS","link":6},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":2},{"localized_name":"usePositivePrompt","name":"usePositivePrompt","type":"BOOLEAN","widget":{"name":"usePositivePrompt"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"sampleRate","name":"sampleRate","type":"INT","widget":{"name":"sampleRate"},"link":null},{"localized_name":"bitrate","name":"bitrate","type":"INT","widget":{"name":"bitrate"},"link":null},{"localized_name":"outputType","name":"outputType","type":"COMBO","widget":{"name":"outputType"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"numberResults","name":"numberResults","type":"INT","widget":{"name":"numberResults"},"link":null}],"outputs":[{"localized_name":"audio","name":"audio","type":"AUDIO","links":[1]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Audio Inference"},"widgets_values":[false,"","",true,10,22050,32,"URL","MP3",1],"bgcolor":"#5345bf"},{"id":1,"type":"Runware KlingAI Provider Settings","pos":[-36.145992279052734,892.0035400390625],"size":[314.6714782714844,382],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"useCameraControl","name":"useCameraControl","shape":7,"type":"BOOLEAN","widget":{"name":"useCameraControl"},"link":null},{"localized_name":"cameraControl","name":"cameraControl","shape":7,"type":"COMBO","widget":{"name":"cameraControl"},"link":null},{"localized_name":"useSoundVolume","name":"useSoundVolume","shape":7,"type":"BOOLEAN","widget":{"name":"useSoundVolume"},"link":null},{"localized_name":"soundVolume","name":"soundVolume","shape":7,"type":"FLOAT","widget":{"name":"soundVolume"},"link":null},{"localized_name":"useOriginalAudioVolume","name":"useOriginalAudioVolume","shape":7,"type":"BOOLEAN","widget":{"name":"useOriginalAudioVolume"},"link":null},{"localized_name":"originalAudioVolume","name":"originalAudioVolume","shape":7,"type":"FLOAT","widget":{"name":"originalAudioVolume"},"link":null},{"localized_name":"useSoundEffectPrompt","name":"useSoundEffectPrompt","shape":7,"type":"BOOLEAN","widget":{"name":"useSoundEffectPrompt"},"link":null},{"localized_name":"soundEffectPrompt","name":"soundEffectPrompt","shape":7,"type":"STRING","widget":{"name":"soundEffectPrompt"},"link":null},{"localized_name":"useBgmPrompt","name":"useBgmPrompt","shape":7,"type":"BOOLEAN","widget":{"name":"useBgmPrompt"},"link":null},{"localized_name":"bgmPrompt","name":"bgmPrompt","shape":7,"type":"STRING","widget":{"name":"bgmPrompt"},"link":null},{"localized_name":"useAsmrMode","name":"useAsmrMode","shape":7,"type":"BOOLEAN","widget":{"name":"useAsmrMode"},"link":null},{"localized_name":"asmrMode","name":"asmrMode","shape":7,"type":"BOOLEAN","widget":{"name":"asmrMode"},"link":null}],"outputs":[{"localized_name":"Provider Settings","name":"Provider Settings","type":"RUNWAREPROVIDERSETTINGS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b75f0803ad2a5b5624f97d4025927744329e0c31","Node name for S&R":"Runware KlingAI Provider Settings"},"widgets_values":[false,1,false,1,false,1,false,"bicycle",false,"cyclist pedalling, strong winds, cars honking",true,true],"bgcolor":"#5345bf"}],"links":[[1,2,0,4,0,"AUDIO"],[2,1,0,2,2,"RUNWAREPROVIDERSETTINGS"],[3,3,0,2,0,"RUNWAREAUDIOMODEL"],[4,7,0,6,0,"VIDEO,AUDIO"],[5,6,0,5,0,"STRING"],[6,5,0,2,1,"RUNWAREAUDIOINFERENCEINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8417831318145785,"offset":[936.4947925489863,-284.9499097378432]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Basic_Image_Inference_Hunyuan.json b/workflows/Runware_Basic_Image_Inference_Hunyuan.json new file mode 100644 index 0000000..aa85e7b --- /dev/null +++ b/workflows/Runware_Basic_Image_Inference_Hunyuan.json @@ -0,0 +1 @@ +{"id":"0685c977-b8ed-4ce4-8b4c-d8463ed12b69","revision":0,"last_node_id":86,"last_link_id":64,"nodes":[{"id":79,"type":"Note","pos":[-61.95427703857422,-118.02499389648438],"size":[432.87603759765625,351.79339599609375],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["Hello there! 🌟\n\nWelcome to the Runware Image Inference workflow. 🎉\n\nHere’s what you need to know to get started: \n\n- You will need to add your API Key just run the workflow and you will be prompted for that, if you don't have an account you can create a new account and you will get \"Free Credits\" to start :)\n\n- You can explore and search from a variety of models. 🧠✨\n \n- Remember to adjust the settings appropriately to achieve the desired results. ⚙️✅\n\n- Don’t forget to tweak the \"steps\" for optimal performance. 🛠️📈\n\nThe best part? We support a wide range of models, so dive in and have fun experimenting! 🚀❤️\n\ntip: Press \"Ctrl + Alt + E\" To Automatically Enhance Your Prompt\n\ntip: You can reset the model, lora search by clearing the search input and everything will get back to defaults."],"color":"#432","bgcolor":"#653"},{"id":76,"type":"PreviewImage","pos":[898.580322265625,-254.4684295654297],"size":[442.2727355957031,469.6363525390625],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":64}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":80,"type":"Runware Model Search","pos":[10.674552917480469,-324.2225646972656],"size":[270,154],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[63]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["","All","Base Model","runware:100@1 (Flux Schnell)",false],"bgcolor":"#5345bf"},{"id":86,"type":"Runware Image Inference","pos":[417.0735168457031,-344.9656066894531],"size":[400,930],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":63},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREIMAGEINFERENCEINPUTS","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useScheduler","name":"useScheduler","type":"BOOLEAN","widget":{"name":"useScheduler"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useClipSkip","name":"useClipSkip","type":"BOOLEAN","widget":{"name":"useClipSkip"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[64]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b75f0803ad2a5b5624f97d4025927744329e0c31","Node name for S&R":"Runware Image Inference"},"widgets_values":["abstract, 1girl, solo, 25 years old, perfect face, close view, dark purple hair, spiked hair, ear piercing, spiked collar, black hoodie, winter, blush, shy smile, portrait, face focus, depth of field, looking at viewer, cinematic lighting, studio quality, symmetrical centered symmetrical artwork, style of krenz cushart, Jordan Grimmer, donato giancola, wlop, artgerm, ultra delicate minimalism, ilya kuvshinov, rossdraws, Norman Rockwell,","",false,"Disabled","Square (512x512)",512,512,true,4,true,"Default",true,6.5,true,189792379,"randomize",true,0,0.8,false,32,"WEBP",1,"none"],"bgcolor":"#5345bf"}],"links":[[63,80,0,86,0,"RUNWAREMODEL"],[64,86,0,76,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[647.0983152967274,583.5138507968215]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Basic_Image_Inference_Runway_Gen_4.json b/workflows/Runware_Basic_Image_Inference_Runway_Gen_4.json new file mode 100644 index 0000000..34c7264 --- /dev/null +++ b/workflows/Runware_Basic_Image_Inference_Runway_Gen_4.json @@ -0,0 +1 @@ +{"id":"0685c977-b8ed-4ce4-8b4c-d8463ed12b69","revision":0,"last_node_id":93,"last_link_id":68,"nodes":[{"id":76,"type":"PreviewImage","pos":[898.580322265625,-254.4684295654297],"size":[442.2727355957031,469.6363525390625],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"images","name":"images","type":"IMAGE","link":64}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"PreviewImage"},"widgets_values":[]},{"id":86,"type":"Runware Image Inference","pos":[417.0735168457031,-344.9656066894531],"size":[400,930],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREMODEL","link":63},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Lora","name":"Lora","shape":7,"type":"RUNWARELORA","link":null},{"localized_name":"Outpainting","name":"Outpainting","shape":7,"type":"RUNWAREOUTPAINT","link":null},{"localized_name":"IPAdapters","name":"IPAdapters","shape":7,"type":"RUNWAREIPAdapter","link":null},{"localized_name":"ControlNet","name":"ControlNet","shape":7,"type":"RUNWARECONTROLNET","link":null},{"localized_name":"Refiner","name":"Refiner","shape":7,"type":"RUNWAREREFINER","link":null},{"localized_name":"seedImage","name":"seedImage","shape":7,"type":"IMAGE","link":null},{"localized_name":"maskImage","name":"maskImage","shape":7,"type":"MASK","link":null},{"localized_name":"Embeddings","name":"Embeddings","shape":7,"type":"RUNWAREEMBEDDING","link":null},{"localized_name":"VAE","name":"VAE","shape":7,"type":"RUNWAREVAE","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREIMAGEINFERENCEINPUTS","link":68},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"positivePrompt","name":"positivePrompt","type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"dimensions","name":"dimensions","type":"COMBO","widget":{"name":"dimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"useScheduler","name":"useScheduler","type":"BOOLEAN","widget":{"name":"useScheduler"},"link":null},{"localized_name":"scheduler","name":"scheduler","type":"COMBO","widget":{"name":"scheduler"},"link":null},{"localized_name":"useCFGScale","name":"useCFGScale","type":"BOOLEAN","widget":{"name":"useCFGScale"},"link":null},{"localized_name":"cfgScale","name":"cfgScale","type":"FLOAT","widget":{"name":"cfgScale"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useClipSkip","name":"useClipSkip","type":"BOOLEAN","widget":{"name":"useClipSkip"},"link":null},{"localized_name":"clipSkip","name":"clipSkip","type":"INT","widget":{"name":"clipSkip"},"link":null},{"localized_name":"strength","name":"strength","type":"FLOAT","widget":{"name":"strength"},"link":null},{"localized_name":"Mask Margin","name":"Mask Margin","type":"BOOLEAN","widget":{"name":"Mask Margin"},"link":null},{"localized_name":"maskMargin","name":"maskMargin","type":"INT","widget":{"name":"maskMargin"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[64]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b75f0803ad2a5b5624f97d4025927744329e0c31","Node name for S&R":"Runware Image Inference"},"widgets_values":["An epic fantasy landscape where @mountain towers over a medieval castle, with the @dragon flying overhead, painted in a classical renaissance style","",false,"Disabled","Custom",1360,768,false,30,true,"Default",true,15,true,8,"fixed",true,0,0.8,false,32,"WEBP",1,"none"],"bgcolor":"#5345bf"},{"id":88,"type":"LoadImage","pos":[-354.1855773925781,-448.46551513671875],"size":[274.080078125,314],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[65]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["Everest_North_Face_toward_Base_Camp_Tibet_Luca_Galuzzi_2006.jpg","image"]},{"id":89,"type":"LoadImage","pos":[-350.45672607421875,-72.17239379882812],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[66]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["David_Teniers_(II)_-_The_gallery_of_Archduke_Leopold_in_Brussels.jpg","image"]},{"id":90,"type":"LoadImage","pos":[-353.48614501953125,304.80462646484375],"size":[274.080078125,314.0000305175781],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[67]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["Custom_Japanese_backpiece_tattoo_by_Greg_James.jpg","image"]},{"id":80,"type":"Runware Model Search","pos":[10.674552917480469,-324.2225646972656],"size":[270,154],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"ModelType","name":"ModelType","type":"COMBO","widget":{"name":"ModelType"},"link":null},{"localized_name":"ModelList","name":"ModelList","type":"COMBO","widget":{"name":"ModelList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null}],"outputs":[{"localized_name":"Runware Model","name":"Runware Model","type":"RUNWAREMODEL","links":[63]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"de0a4c2e258a1f3a104d0f9994f9b7ea66e56736","Node name for S&R":"Runware Model Search"},"widgets_values":["runway:4@1","All","Base Model","runway:4@1 (Runway Gen-4 Image 4)",true],"bgcolor":"#5345bf"},{"id":87,"type":"Runware Image Inference Inputs","pos":[-16.36448097229004,-94.4732894897461],"size":[376.51959228515625,359.4724426269531],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"image","name":"image","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Image 1","name":"Reference Image 1","shape":7,"type":"IMAGE","link":65},{"localized_name":"Reference Image 2","name":"Reference Image 2","shape":7,"type":"IMAGE","link":66},{"localized_name":"Reference Image 3","name":"Reference Image 3","shape":7,"type":"IMAGE","link":67},{"localized_name":"Reference Image 4","name":"Reference Image 4","shape":7,"type":"IMAGE","link":null},{"localized_name":"Reference Tag 1","name":"Reference Tag 1","shape":7,"type":"STRING","widget":{"name":"Reference Tag 1"},"link":null},{"localized_name":"Reference Tag 2","name":"Reference Tag 2","shape":7,"type":"STRING","widget":{"name":"Reference Tag 2"},"link":null},{"localized_name":"Reference Tag 3","name":"Reference Tag 3","shape":7,"type":"STRING","widget":{"name":"Reference Tag 3"},"link":null},{"localized_name":"Reference Tag 4","name":"Reference Tag 4","shape":7,"type":"STRING","widget":{"name":"Reference Tag 4"},"link":null}],"outputs":[{"localized_name":"Inference Inputs","name":"Inference Inputs","type":"RUNWAREIMAGEINFERENCEINPUTS","links":[68]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Image Inference Inputs"},"widgets_values":["Mountain","","Dragon",""],"bgcolor":"#5345bf"}],"links":[[63,80,0,86,0,"RUNWAREMODEL"],[64,86,0,76,0,"IMAGE"],[65,88,0,87,1,"IMAGE"],[66,89,0,87,2,"IMAGE"],[67,90,0,87,3,"IMAGE"],[68,87,0,86,12,"RUNWAREIMAGEINFERENCEINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.7369897510042154,"offset":[762.8687824978368,548.2989451090494]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Image_to_Video_Ovi.json b/workflows/Runware_Image_to_Video_Ovi.json index 6c0bd4a..621d7f0 100644 --- a/workflows/Runware_Image_to_Video_Ovi.json +++ b/workflows/Runware_Image_to_Video_Ovi.json @@ -1 +1 @@ -{"id":"5cf854c6-824e-4e51-995c-a2c146c44890","revision":0,"last_node_id":35,"last_link_id":52,"nodes":[{"id":1,"type":"SaveVideo","pos":[899.7476806640625,376.3740539550781],"size":[270,368],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":51},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","mp4","auto"]},{"id":6,"type":"Note","pos":[889.8544921875,810.5538330078125],"size":[387.0979309082031,231.9747314453125],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["Hello there! 🌟\n\nWelcome to the Runware Video Inference workflow. 🎉\n\nHere’s what you need to know to get started: \n\n- You will need to add your API Key just run the workflow and you will be prompted for that, if you don't have an account you can create a new account and you will get \"Free Credits\" to start :)\n\n- You can explore and search from a variety of models. 🧠✨\n \n- Remember to adjust the settings appropriately to achieve the desired results. ⚙️✅"],"color":"#432","bgcolor":"#653"},{"id":9,"type":"LoadImage","pos":[-214.6199188232422,362.6542053222656],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[44]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["ovi_i2v_input.png","image"]},{"id":5,"type":"Runware Video Model Search","pos":[110.46113586425781,356.1772766113281],"size":[270,218],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[47]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"4d74f59820ad59af31176536118380f7e9f0374c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","All","runware:190@1 (Ovi)",false,1920,1080],"bgcolor":"#5345bf"},{"id":31,"type":"Runware Video Inference Inputs","pos":[109.0797348022461,591.63232421875],"size":[299.6597595214844,142],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":null},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":44},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCES","link":null},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":null},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":null}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[48]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["",""],"bgcolor":"#5345bf"},{"id":32,"type":"Runware Accelerator Options","pos":[63.86078643798828,786.6163940429688],"size":[337.42578125,466],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"fbcache","name":"fbcache","shape":7,"type":"BOOLEAN","widget":{"name":"fbcache"},"link":null},{"localized_name":"useCacheDistance","name":"useCacheDistance","shape":7,"type":"BOOLEAN","widget":{"name":"useCacheDistance"},"link":null},{"localized_name":"cacheDistance","name":"cacheDistance","shape":7,"type":"FLOAT","widget":{"name":"cacheDistance"},"link":null},{"localized_name":"teaCache","name":"teaCache","shape":7,"type":"BOOLEAN","widget":{"name":"teaCache"},"link":null},{"localized_name":"useTeaCacheDistance","name":"useTeaCacheDistance","shape":7,"type":"BOOLEAN","widget":{"name":"useTeaCacheDistance"},"link":null},{"localized_name":"teaCacheDistance","name":"teaCacheDistance","shape":7,"type":"FLOAT","widget":{"name":"teaCacheDistance"},"link":null},{"localized_name":"deepCache","name":"deepCache","shape":7,"type":"BOOLEAN","widget":{"name":"deepCache"},"link":null},{"localized_name":"useDeepCacheOptions","name":"useDeepCacheOptions","shape":7,"type":"BOOLEAN","widget":{"name":"useDeepCacheOptions"},"link":null},{"localized_name":"deepCacheInterval","name":"deepCacheInterval","shape":7,"type":"INT","widget":{"name":"deepCacheInterval"},"link":null},{"localized_name":"deepCacheBranchId","name":"deepCacheBranchId","shape":7,"type":"INT","widget":{"name":"deepCacheBranchId"},"link":null},{"localized_name":"useCacheSteps","name":"useCacheSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useCacheSteps"},"link":null},{"localized_name":"cacheStartStep","name":"cacheStartStep","shape":7,"type":"INT","widget":{"name":"cacheStartStep"},"link":null},{"localized_name":"cacheEndStep","name":"cacheEndStep","shape":7,"type":"INT","widget":{"name":"cacheEndStep"},"link":null},{"localized_name":"useCachePercentageSteps","name":"useCachePercentageSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useCachePercentageSteps"},"link":null},{"localized_name":"cacheStartStepPercentage","name":"cacheStartStepPercentage","shape":7,"type":"INT","widget":{"name":"cacheStartStepPercentage"},"link":null},{"localized_name":"cacheEndStepPercentage","name":"cacheEndStepPercentage","shape":7,"type":"INT","widget":{"name":"cacheEndStepPercentage"},"link":null},{"localized_name":"useCacheMaxConsecutiveSteps","name":"useCacheMaxConsecutiveSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useCacheMaxConsecutiveSteps"},"link":null},{"localized_name":"cacheMaxConsecutiveSteps","name":"cacheMaxConsecutiveSteps","shape":7,"type":"INT","widget":{"name":"cacheMaxConsecutiveSteps"},"link":null}],"outputs":[{"localized_name":"Runware Accelerator","name":"Runware Accelerator","type":"RUNWAREACCELERATOR","links":[49]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Accelerator Options"},"widgets_values":[false,false,0,true,false,0,false,false,1,0,false,0,1,true,10,90,true,5],"bgcolor":"#5345bf"},{"id":24,"type":"Runware Video Advanced Feature Inputs","pos":[-362.66412353515625,735.3991088867188],"size":[400,238],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"videoCFGScale","name":"videoCFGScale","shape":7,"type":"FLOAT","widget":{"name":"videoCFGScale"},"link":null},{"localized_name":"audioCFGScale","name":"audioCFGScale","shape":7,"type":"FLOAT","widget":{"name":"audioCFGScale"},"link":null},{"localized_name":"videoNegativePrompt","name":"videoNegativePrompt","shape":7,"type":"STRING","widget":{"name":"videoNegativePrompt"},"link":null},{"localized_name":"audioNegativePrompt","name":"audioNegativePrompt","shape":7,"type":"STRING","widget":{"name":"audioNegativePrompt"},"link":null},{"localized_name":"slgLayer","name":"slgLayer","shape":7,"type":"INT","widget":{"name":"slgLayer"},"link":null}],"outputs":[{"localized_name":"Video Advanced Feature Inputs","name":"Video Advanced Feature Inputs","type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","links":[50]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Video Advanced Feature Inputs"},"widgets_values":[4.5,3.4,"jitter, bad hands, blur, distortion","jitter, bad hands, blur, distortion",11],"bgcolor":"#5345bf"},{"id":34,"type":"Runware Safety Inputs","pos":[-260.0033264160156,1050.55712890625],"size":[270,130],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"mode","name":"mode","shape":7,"type":"COMBO","widget":{"name":"mode"},"link":null},{"localized_name":"tolerance","name":"tolerance","shape":7,"type":"BOOLEAN","widget":{"name":"tolerance"},"link":null},{"localized_name":"checkInputs","name":"checkInputs","shape":7,"type":"BOOLEAN","widget":{"name":"checkInputs"},"link":null},{"localized_name":"checkContent","name":"checkContent","shape":7,"type":"BOOLEAN","widget":{"name":"checkContent"},"link":null}],"outputs":[{"localized_name":"Safety Inputs","name":"Safety Inputs","type":"RUNWARESAFETYINPUTS","links":[52]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"843422e01c6264bf1173da0560a739f0c33900b8","Node name for S&R":"Runware Safety Inputs"},"widgets_values":["fast",false,false,false],"bgcolor":"#5345bf"},{"id":33,"type":"Runware Video Inference","pos":[465.8265075683594,343.1962890625],"size":[400,808],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":47},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":48},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":52},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":50},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":49},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[51]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,false,5,true,24,"mp4",true,200785468,"randomize",false,20,1,"none","An intimate close-up of a European woman with long dark hair as she gently brushes her hair in a softly lit bedroom, her delicate hand moving in the foreground. She looks directly into the camera with calm, focused eyes, a faint serene smile glowing in the warm lamp light. She says, [soft whisper] I am an artificial intelligence..Soft whispering female voice, ASMR tone with gentle breaths, cozy room acoustics, subtle emphasis on \\\"I am an artificial intelligence\\\".","","",""],"bgcolor":"#5345bf"}],"links":[[44,9,0,31,2,"IMAGE"],[47,5,0,33,0,"RUNWAREVIDEOMODEL"],[48,31,0,33,6,"RUNWAREVIDEOINFERENCEINPUTS"],[49,32,0,33,9,"RUNWAREACCELERATOR"],[50,24,0,33,8,"RUNWAREVIDEOADVANCEDFEATUREINPUTS"],[51,33,0,1,0,"VIDEO"],[52,34,0,33,7,"RUNWARESAFETYINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[791.4084023738317,-224.3634312533846]}},"version":0.4} \ No newline at end of file +{"id":"5cf854c6-824e-4e51-995c-a2c146c44890","revision":0,"last_node_id":35,"last_link_id":52,"nodes":[{"id":1,"type":"SaveVideo","pos":[899.7476806640625,376.3740539550781],"size":[270,368],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":51},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","mp4","auto"]},{"id":6,"type":"Note","pos":[889.8544921875,810.5538330078125],"size":[387.0979309082031,231.9747314453125],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[],"properties":{},"widgets_values":["Hello there! 🌟\n\nWelcome to the Runware Video Inference workflow. 🎉\n\nHere’s what you need to know to get started: \n\n- You will need to add your API Key just run the workflow and you will be prompted for that, if you don't have an account you can create a new account and you will get \"Free Credits\" to start :)\n\n- You can explore and search from a variety of models. 🧠✨\n \n- Remember to adjust the settings appropriately to achieve the desired results. ⚙️✅"],"color":"#432","bgcolor":"#653"},{"id":9,"type":"LoadImage","pos":[-214.6199188232422,362.6542053222656],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[44]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["ovi_i2v_input.png","image"]},{"id":5,"type":"Runware Video Model Search","pos":[110.46113586425781,356.1772766113281],"size":[270,242],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[47]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"4d74f59820ad59af31176536118380f7e9f0374c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","All","runware:190@1 (Ovi)",false,1920,1080,1080],"bgcolor":"#5345bf"},{"id":24,"type":"Runware Video Advanced Feature Inputs","pos":[-362.66412353515625,735.3991088867188],"size":[400,238],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"videoCFGScale","name":"videoCFGScale","shape":7,"type":"FLOAT","widget":{"name":"videoCFGScale"},"link":null},{"localized_name":"audioCFGScale","name":"audioCFGScale","shape":7,"type":"FLOAT","widget":{"name":"audioCFGScale"},"link":null},{"localized_name":"videoNegativePrompt","name":"videoNegativePrompt","shape":7,"type":"STRING","widget":{"name":"videoNegativePrompt"},"link":null},{"localized_name":"audioNegativePrompt","name":"audioNegativePrompt","shape":7,"type":"STRING","widget":{"name":"audioNegativePrompt"},"link":null},{"localized_name":"slgLayer","name":"slgLayer","shape":7,"type":"INT","widget":{"name":"slgLayer"},"link":null}],"outputs":[{"localized_name":"Video Advanced Feature Inputs","name":"Video Advanced Feature Inputs","type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","links":[50]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Video Advanced Feature Inputs"},"widgets_values":[4.5,3.4,"jitter, bad hands, blur, distortion","jitter, bad hands, blur, distortion",11],"bgcolor":"#5345bf"},{"id":34,"type":"Runware Safety Inputs","pos":[-260.0033264160156,1050.55712890625],"size":[270,130],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"mode","name":"mode","shape":7,"type":"COMBO","widget":{"name":"mode"},"link":null},{"localized_name":"tolerance","name":"tolerance","shape":7,"type":"BOOLEAN","widget":{"name":"tolerance"},"link":null},{"localized_name":"checkInputs","name":"checkInputs","shape":7,"type":"BOOLEAN","widget":{"name":"checkInputs"},"link":null},{"localized_name":"checkContent","name":"checkContent","shape":7,"type":"BOOLEAN","widget":{"name":"checkContent"},"link":null}],"outputs":[{"localized_name":"Safety Inputs","name":"Safety Inputs","type":"RUNWARESAFETYINPUTS","links":[52]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"843422e01c6264bf1173da0560a739f0c33900b8","Node name for S&R":"Runware Safety Inputs"},"widgets_values":["fast",false,false,false],"bgcolor":"#5345bf"},{"id":33,"type":"Runware Video Inference","pos":[465.8265075683594,343.1962890625],"size":[400,808],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":47},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":48},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":52},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":50},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":49},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[51]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,false,5,true,24,"mp4",true,200785468,"randomize",false,20,1,"none","An intimate close-up of a European woman with long dark hair as she gently brushes her hair in a softly lit bedroom, her delicate hand moving in the foreground. She looks directly into the camera with calm, focused eyes, a faint serene smile glowing in the warm lamp light. She says, [soft whisper] I am an artificial intelligence..Soft whispering female voice, ASMR tone with gentle breaths, cozy room acoustics, subtle emphasis on \\\"I am an artificial intelligence\\\".","","",""],"bgcolor":"#5345bf"},{"id":31,"type":"Runware Video Inference Inputs","pos":[103.17152404785156,641.6629028320312],"size":[299.6597595214844,162],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame Images","name":"Frame Images","shape":7,"type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","link":null},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":44},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCEIMAGES","link":null},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":null},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":null}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[48]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["",""],"bgcolor":"#5345bf"},{"id":32,"type":"Runware Accelerator Options","pos":[78.7730941772461,860.1286010742188],"size":[337.42578125,466],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"fbcache","name":"fbcache","shape":7,"type":"BOOLEAN","widget":{"name":"fbcache"},"link":null},{"localized_name":"useCacheDistance","name":"useCacheDistance","shape":7,"type":"BOOLEAN","widget":{"name":"useCacheDistance"},"link":null},{"localized_name":"cacheDistance","name":"cacheDistance","shape":7,"type":"FLOAT","widget":{"name":"cacheDistance"},"link":null},{"localized_name":"teaCache","name":"teaCache","shape":7,"type":"BOOLEAN","widget":{"name":"teaCache"},"link":null},{"localized_name":"useTeaCacheDistance","name":"useTeaCacheDistance","shape":7,"type":"BOOLEAN","widget":{"name":"useTeaCacheDistance"},"link":null},{"localized_name":"teaCacheDistance","name":"teaCacheDistance","shape":7,"type":"FLOAT","widget":{"name":"teaCacheDistance"},"link":null},{"localized_name":"deepCache","name":"deepCache","shape":7,"type":"BOOLEAN","widget":{"name":"deepCache"},"link":null},{"localized_name":"useDeepCacheOptions","name":"useDeepCacheOptions","shape":7,"type":"BOOLEAN","widget":{"name":"useDeepCacheOptions"},"link":null},{"localized_name":"deepCacheInterval","name":"deepCacheInterval","shape":7,"type":"INT","widget":{"name":"deepCacheInterval"},"link":null},{"localized_name":"deepCacheBranchId","name":"deepCacheBranchId","shape":7,"type":"INT","widget":{"name":"deepCacheBranchId"},"link":null},{"localized_name":"useCacheSteps","name":"useCacheSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useCacheSteps"},"link":null},{"localized_name":"cacheStartStep","name":"cacheStartStep","shape":7,"type":"INT","widget":{"name":"cacheStartStep"},"link":null},{"localized_name":"cacheEndStep","name":"cacheEndStep","shape":7,"type":"INT","widget":{"name":"cacheEndStep"},"link":null},{"localized_name":"useCachePercentageSteps","name":"useCachePercentageSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useCachePercentageSteps"},"link":null},{"localized_name":"cacheStartStepPercentage","name":"cacheStartStepPercentage","shape":7,"type":"INT","widget":{"name":"cacheStartStepPercentage"},"link":null},{"localized_name":"cacheEndStepPercentage","name":"cacheEndStepPercentage","shape":7,"type":"INT","widget":{"name":"cacheEndStepPercentage"},"link":null},{"localized_name":"useCacheMaxConsecutiveSteps","name":"useCacheMaxConsecutiveSteps","shape":7,"type":"BOOLEAN","widget":{"name":"useCacheMaxConsecutiveSteps"},"link":null},{"localized_name":"cacheMaxConsecutiveSteps","name":"cacheMaxConsecutiveSteps","shape":7,"type":"INT","widget":{"name":"cacheMaxConsecutiveSteps"},"link":null}],"outputs":[{"localized_name":"Runware Accelerator","name":"Runware Accelerator","type":"RUNWAREACCELERATOR","links":[49]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"52ff9c5cff6de585f4e315b39d82e2acd5bcf775","Node name for S&R":"Runware Accelerator Options"},"widgets_values":[false,false,0,true,false,0,false,false,1,0,false,0,1,true,10,90,true,5],"bgcolor":"#5345bf"}],"links":[[44,9,0,31,3,"IMAGE"],[47,5,0,33,0,"RUNWAREVIDEOMODEL"],[48,31,0,33,6,"RUNWAREVIDEOINFERENCEINPUTS"],[49,32,0,33,9,"RUNWAREACCELERATOR"],[50,24,0,33,8,"RUNWAREVIDEOADVANCEDFEATUREINPUTS"],[51,33,0,1,0,"VIDEO"],[52,34,0,33,7,"RUNWARESAFETYINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[777.7769961238315,-314.4280796908848]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Inference_Luma.json b/workflows/Runware_Video_Inference_Luma.json new file mode 100644 index 0000000..68e8f4f --- /dev/null +++ b/workflows/Runware_Video_Inference_Luma.json @@ -0,0 +1 @@ +{"id":"a3fa6131-3e00-4fb3-8cbe-3450bbcb0559","revision":0,"last_node_id":19,"last_link_id":16,"nodes":[{"id":10,"type":"SaveVideo","pos":[987.3607177734375,-435.8999328613281],"size":[270,456.26922607421875],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":7},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":5,"type":"Runware Video Inference Inputs","pos":[142.3061065673828,-159.09922790527344],"size":[299.6597595214844,162],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame Images","name":"Frame Images","shape":7,"type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","link":14},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":null},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCEIMAGES","link":null},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":null},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":null}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["",""],"bgcolor":"#5345bf"},{"id":14,"type":"LoadImage","pos":[-192.14349365234375,-443.0803527832031],"size":[274.080078125,314],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[13]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bird_1024_1024.png","image"]},{"id":18,"type":"Runware Video Inputs Frame Images","pos":[118.67174530029297,105.7341079711914],"size":[331.5357360839844,190],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"image1","name":"image1","shape":7,"type":"IMAGE","link":13},{"localized_name":"image2","name":"image2","shape":7,"type":"IMAGE","link":16},{"localized_name":"image3","name":"image3","shape":7,"type":"IMAGE","link":null},{"localized_name":"image4","name":"image4","shape":7,"type":"IMAGE","link":null},{"localized_name":"frame1 position","name":"frame1 position","shape":7,"type":"STRING","widget":{"name":"frame1 position"},"link":null},{"localized_name":"frame2 position","name":"frame2 position","shape":7,"type":"STRING","widget":{"name":"frame2 position"},"link":null},{"localized_name":"frame3 position","name":"frame3 position","shape":7,"type":"STRING","widget":{"name":"frame3 position"},"link":null},{"localized_name":"frame4 position","name":"frame4 position","shape":7,"type":"STRING","widget":{"name":"frame4 position"},"link":null}],"outputs":[{"localized_name":"Video Inputs Frame Images","name":"Video Inputs Frame Images","type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","links":[14]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inputs Frame Images"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":19,"type":"LoadImage","pos":[-217.40785217285156,-76.47771453857422],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[16]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["bird_1024_1024.png","image"]},{"id":1,"type":"Runware Video Inference","pos":[494.5824279785156,-469.24542236328125],"size":[400,808],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":1},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":15},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":8},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[7]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,false,5,false,24,"mp4",false,2657004422,"randomize",false,20,1,"none","A flying bird in the forest","","",""],"bgcolor":"#5345bf"},{"id":16,"type":"Runware Luma Provider Settings","pos":[978.2157592773438,106.0344467163086],"size":[305.3335876464844,274],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"useLoop","name":"useLoop","shape":7,"type":"BOOLEAN","widget":{"name":"useLoop"},"link":null},{"localized_name":"loop","name":"loop","shape":7,"type":"BOOLEAN","widget":{"name":"loop"},"link":null},{"localized_name":"useConcept1","name":"useConcept1","shape":7,"type":"BOOLEAN","widget":{"name":"useConcept1"},"link":null},{"localized_name":"concept1","name":"concept1","shape":7,"type":"COMBO","widget":{"name":"concept1"},"link":null},{"localized_name":"useConcept2","name":"useConcept2","shape":7,"type":"BOOLEAN","widget":{"name":"useConcept2"},"link":null},{"localized_name":"concept2","name":"concept2","shape":7,"type":"COMBO","widget":{"name":"concept2"},"link":null},{"localized_name":"useConcept3","name":"useConcept3","shape":7,"type":"BOOLEAN","widget":{"name":"useConcept3"},"link":null},{"localized_name":"concept3","name":"concept3","shape":7,"type":"COMBO","widget":{"name":"concept3"},"link":null},{"localized_name":"useConcept4","name":"useConcept4","shape":7,"type":"BOOLEAN","widget":{"name":"useConcept4"},"link":null},{"localized_name":"concept4","name":"concept4","shape":7,"type":"COMBO","widget":{"name":"concept4"},"link":null}],"outputs":[{"localized_name":"Provider Settings","name":"Provider Settings","type":"RUNWAREPROVIDERSETTINGS","links":[15]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Luma Provider Settings"},"widgets_values":[false,true,true,"aerial",true,"bolt_cam",false,"",false,""],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Video Model Search","pos":[120.75635528564453,-435.5396423339844],"size":[270,242],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[1]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Luma","lumaai:2@2 (Luma Ray 2 Flash)",false,true,1080,720],"bgcolor":"#5345bf"}],"links":[[1,3,0,1,0,"RUNWAREVIDEOMODEL"],[7,1,0,10,0,"VIDEO"],[8,5,0,1,6,"RUNWAREVIDEOINFERENCEINPUTS"],[13,14,0,18,0,"IMAGE"],[14,18,0,5,1,"RUNWAREVIDEOINPUTSFRAMEIMAGES"],[15,16,0,1,3,"RUNWAREPROVIDERSETTINGS"],[16,19,0,18,1,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[648.2221264295404,647.2250773593215]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Inference_Omnihuman1_5.json b/workflows/Runware_Video_Inference_Omnihuman1_5.json index 439113d..87cb9ea 100644 --- a/workflows/Runware_Video_Inference_Omnihuman1_5.json +++ b/workflows/Runware_Video_Inference_Omnihuman1_5.json @@ -1 +1 @@ -{"id":"37e58abe-b6f0-4f32-a551-22cc274a425e","revision":0,"last_node_id":20,"last_link_id":24,"nodes":[{"id":11,"type":"LoadAudio","pos":[-296.8634033203125,613.3405151367188],"size":[274.080078125,136],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"audio","name":"audio","type":"COMBO","widget":{"name":"audio"},"link":null},{"localized_name":"audioUI","name":"audioUI","type":"AUDIO_UI","widget":{"name":"audioUI"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"AUDIOUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"AUDIO","name":"AUDIO","type":"AUDIO","links":[11]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadAudio"},"widgets_values":["president_speech_6sec.mp3",null,null]},{"id":16,"type":"LoadImage","pos":[-291.5814514160156,236.955078125],"size":[274.080078125,314],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[15]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["image_1280_720.png","image"]},{"id":10,"type":"SaveVideo","pos":[817.4613647460938,341.73583984375],"size":[270,300.5],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":24},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":19,"type":"Runware Video Inference","pos":[371.23358154296875,265.83197021484375],"size":[400,808],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":21},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":23},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":22},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[24]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b75f0803ad2a5b5624f97d4025927744329e0c31","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,true,5,true,24,"mp4",false,991038813,"randomize",false,20,1,"none","","","",""],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Video Model Search","pos":[30.332801818847656,279.5437316894531],"size":[270,218],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[21]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Bytedance","bytedance:5@2 (OmniHuman 1.5)",false,1024,1024],"bgcolor":"#5345bf"},{"id":15,"type":"Runware Video Inference Inputs","pos":[24.84528160095215,558.9614868164062],"size":[299.6597595214844,142],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":15},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":null},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCES","link":null},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":14},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":null}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[22]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["",""],"bgcolor":"#5345bf"},{"id":12,"type":"Runware Media Upload","pos":[37.37311935424805,761.9222412109375],"size":[270,58],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":11},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[14]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Media Upload"},"widgets_values":["2245ea4b-0009-40e8-84eb-b38f76842c58"],"bgcolor":"#5345bf"},{"id":17,"type":"Runware Bytedance Provider Settings","pos":[-12.128218650817871,881.8893432617188],"size":[336.4712829589844,178],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"useCameraFixed","name":"useCameraFixed","shape":7,"type":"BOOLEAN","widget":{"name":"useCameraFixed"},"link":null},{"localized_name":"cameraFixed","name":"cameraFixed","shape":7,"type":"BOOLEAN","widget":{"name":"cameraFixed"},"link":null},{"localized_name":"useMaxSequentialImages","name":"useMaxSequentialImages","shape":7,"type":"BOOLEAN","widget":{"name":"useMaxSequentialImages"},"link":null},{"localized_name":"maxSequentialImages","name":"maxSequentialImages","shape":7,"type":"INT","widget":{"name":"maxSequentialImages"},"link":null},{"localized_name":"useFastMode","name":"useFastMode","shape":7,"type":"BOOLEAN","widget":{"name":"useFastMode"},"link":null},{"localized_name":"fastMode","name":"fastMode","shape":7,"type":"BOOLEAN","widget":{"name":"fastMode"},"link":null}],"outputs":[{"localized_name":"providerSettings","name":"providerSettings","type":"RUNWAREPROVIDERSETTINGS","links":[23]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Bytedance Provider Settings"},"widgets_values":[false,false,false,1,true,true],"bgcolor":"#5345bf"}],"links":[[11,11,0,12,0,"VIDEO,AUDIO"],[14,12,0,15,4,"STRING"],[15,16,0,15,0,"IMAGE"],[21,2,0,19,0,"RUNWAREVIDEOMODEL"],[22,15,0,19,6,"RUNWAREVIDEOINFERENCEINPUTS"],[23,17,0,19,3,"RUNWAREPROVIDERSETTINGS"],[24,19,0,10,0,"VIDEO"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[793.6275234675816,-100.01466172213462]}},"version":0.4} \ No newline at end of file +{"id":"37e58abe-b6f0-4f32-a551-22cc274a425e","revision":0,"last_node_id":20,"last_link_id":24,"nodes":[{"id":11,"type":"LoadAudio","pos":[-296.8634033203125,613.3405151367188],"size":[274.080078125,136],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"audio","name":"audio","type":"COMBO","widget":{"name":"audio"},"link":null},{"localized_name":"audioUI","name":"audioUI","type":"AUDIO_UI","widget":{"name":"audioUI"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"AUDIOUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"AUDIO","name":"AUDIO","type":"AUDIO","links":[11]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadAudio"},"widgets_values":["president_speech_6sec.mp3",null,null]},{"id":10,"type":"SaveVideo","pos":[817.4613647460938,341.73583984375],"size":[270,300.5],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":24},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":19,"type":"Runware Video Inference","pos":[371.23358154296875,265.83197021484375],"size":[400,808],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":21},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":23},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":22},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[24]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b75f0803ad2a5b5624f97d4025927744329e0c31","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,true,5,true,24,"mp4",false,3663520652,"randomize",false,20,1,"none","","","",""],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Video Model Search","pos":[30.332801818847656,279.5437316894531],"size":[270,242],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[21]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Bytedance","bytedance:5@2 (OmniHuman 1.5)",false,1024,1024,1080],"bgcolor":"#5345bf"},{"id":15,"type":"Runware Video Inference Inputs","pos":[24.84528160095215,558.9614868164062],"size":[299.6597595214844,162],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":15},{"localized_name":"Frame Images","name":"Frame Images","shape":7,"type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","link":null},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":null},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCEIMAGES","link":null},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":14},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":null}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[22]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["",""],"bgcolor":"#5345bf"},{"id":12,"type":"Runware Media Upload","pos":[37.37311935424805,761.9222412109375],"size":[270,58],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":11},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[14]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Media Upload"},"widgets_values":["2245ea4b-0009-40e8-84eb-b38f76842c58"],"bgcolor":"#5345bf"},{"id":17,"type":"Runware Bytedance Provider Settings","pos":[-12.128218650817871,881.8893432617188],"size":[336.4712829589844,178],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"useCameraFixed","name":"useCameraFixed","shape":7,"type":"BOOLEAN","widget":{"name":"useCameraFixed"},"link":null},{"localized_name":"cameraFixed","name":"cameraFixed","shape":7,"type":"BOOLEAN","widget":{"name":"cameraFixed"},"link":null},{"localized_name":"useMaxSequentialImages","name":"useMaxSequentialImages","shape":7,"type":"BOOLEAN","widget":{"name":"useMaxSequentialImages"},"link":null},{"localized_name":"maxSequentialImages","name":"maxSequentialImages","shape":7,"type":"INT","widget":{"name":"maxSequentialImages"},"link":null},{"localized_name":"useFastMode","name":"useFastMode","shape":7,"type":"BOOLEAN","widget":{"name":"useFastMode"},"link":null},{"localized_name":"fastMode","name":"fastMode","shape":7,"type":"BOOLEAN","widget":{"name":"fastMode"},"link":null}],"outputs":[{"localized_name":"providerSettings","name":"providerSettings","type":"RUNWAREPROVIDERSETTINGS","links":[23]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Bytedance Provider Settings"},"widgets_values":[false,false,false,1,true,true],"bgcolor":"#5345bf"},{"id":16,"type":"LoadImage","pos":[-291.5814514160156,236.955078125],"size":[274.080078125,314],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[15]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["man.png","image"]}],"links":[[11,11,0,12,0,"VIDEO,AUDIO"],[14,12,0,15,5,"STRING"],[15,16,0,15,0,"IMAGE"],[21,2,0,19,0,"RUNWAREVIDEOMODEL"],[22,15,0,19,6,"RUNWAREVIDEOINFERENCEINPUTS"],[23,17,0,19,3,"RUNWAREPROVIDERSETTINGS"],[24,19,0,10,0,"VIDEO"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[663.1224062800817,-168.7908726596346]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Inference_PixverseLipSync.json b/workflows/Runware_Video_Inference_PixverseLipSync.json index 0ddb753..662f28b 100644 --- a/workflows/Runware_Video_Inference_PixverseLipSync.json +++ b/workflows/Runware_Video_Inference_PixverseLipSync.json @@ -1 +1 @@ -{"id":"37e58abe-b6f0-4f32-a551-22cc274a425e","revision":0,"last_node_id":12,"last_link_id":17,"nodes":[{"id":5,"type":"LoadVideo","pos":[-247.41175842285156,272.1563720703125],"size":[274.080078125,279.56005859375],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[2]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["test_video.mp4","image"]},{"id":6,"type":"Runware Media Upload","pos":[-241.6760711669922,626.7191772460938],"size":[270,58],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":2},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Media Upload"},"widgets_values":["254f37d6-98dc-4333-a530-232ea5847cce"],"bgcolor":"#5345bf"},{"id":8,"type":"LoadAudio","pos":[-249.70188903808594,736.1293334960938],"size":[274.080078125,136],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"audio","name":"audio","type":"COMBO","widget":{"name":"audio"},"link":null},{"localized_name":"audioUI","name":"audioUI","type":"AUDIO_UI","widget":{"name":"audioUI"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"AUDIOUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"AUDIO","name":"AUDIO","type":"AUDIO","links":[5]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadAudio"},"widgets_values":["audio_upload.mp3",null,null]},{"id":9,"type":"Runware Media Upload","pos":[-234.01907348632812,932.0363159179688],"size":[270,58],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":5},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Media Upload"},"widgets_values":["3b7f2279-0b67-4906-81f5-95b5f8a47652"],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Video Model Search","pos":[59.989620208740234,283.3721618652344],"size":[270,218],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[14]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","PixVerse","pixverse:lipsync@1 (PixVerse LipSync)",false,1920,1080],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Reference Videos","pos":[51.41804885864258,564.4564208984375],"size":[270.8531188964844,274.3548889160156],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Video1","name":"Video1","shape":7,"type":"STRING","widget":{"name":"Video1"},"link":4},{"localized_name":"Video2","name":"Video2","shape":7,"type":"STRING","widget":{"name":"Video2"},"link":null},{"localized_name":"Video3","name":"Video3","shape":7,"type":"STRING","widget":{"name":"Video3"},"link":null},{"localized_name":"Video4","name":"Video4","shape":7,"type":"STRING","widget":{"name":"Video4"},"link":null}],"outputs":[{"localized_name":"Reference Videos","name":"Reference Videos","type":"RUNWAREREFERENCEVIDEOS","links":[16]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Reference Videos"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":7,"type":"Runware Input Audios","pos":[67.63963317871094,781.1075439453125],"size":[270,130],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Audio1","name":"Audio1","shape":7,"type":"STRING","widget":{"name":"Audio1"},"link":6},{"localized_name":"Audio2","name":"Audio2","shape":7,"type":"STRING","widget":{"name":"Audio2"},"link":null},{"localized_name":"Audio3","name":"Audio3","shape":7,"type":"STRING","widget":{"name":"Audio3"},"link":null},{"localized_name":"Audio4","name":"Audio4","shape":7,"type":"STRING","widget":{"name":"Audio4"},"link":null}],"outputs":[{"localized_name":"Input Audios","name":"Input Audios","type":"RUNWAREINPUTAUDIOS","links":[17]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Input Audios"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":10,"type":"SaveVideo","pos":[817.4613647460938,341.73583984375],"size":[270,300.5],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":15},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":12,"type":"Runware Video Inference","pos":[370.4892883300781,267.972900390625],"size":[400,808],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":14},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":17},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":16},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":null},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[15]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b75f0803ad2a5b5624f97d4025927744329e0c31","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,true,5,false,24,"mp4",false,3998501546,"randomize",false,20,1,"none","","","",""],"bgcolor":"#5345bf"}],"links":[[2,5,0,6,0,"VIDEO,AUDIO"],[4,6,0,3,0,"STRING"],[5,8,0,9,0,"VIDEO,AUDIO"],[6,9,0,7,0,"STRING"],[14,2,0,12,0,"RUNWAREVIDEOMODEL"],[15,12,0,10,0,"VIDEO"],[16,3,0,12,5,"RUNWAREREFERENCEVIDEOS"],[17,7,0,12,4,"RUNWAREINPUTAUDIOS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[793.1808633113316,-99.13552109713463]}},"version":0.4} \ No newline at end of file +{"id":"37e58abe-b6f0-4f32-a551-22cc274a425e","revision":0,"last_node_id":12,"last_link_id":17,"nodes":[{"id":5,"type":"LoadVideo","pos":[-247.41175842285156,272.1563720703125],"size":[274.080078125,279.56005859375],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[2]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["test_video.mp4","image"]},{"id":6,"type":"Runware Media Upload","pos":[-241.6760711669922,626.7191772460938],"size":[270,58],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":2},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Media Upload"},"widgets_values":["254f37d6-98dc-4333-a530-232ea5847cce"],"bgcolor":"#5345bf"},{"id":8,"type":"LoadAudio","pos":[-249.70188903808594,736.1293334960938],"size":[274.080078125,136],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"audio","name":"audio","type":"COMBO","widget":{"name":"audio"},"link":null},{"localized_name":"audioUI","name":"audioUI","type":"AUDIO_UI","widget":{"name":"audioUI"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"AUDIOUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"AUDIO","name":"AUDIO","type":"AUDIO","links":[5]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadAudio"},"widgets_values":["audio_upload.mp3",null,null]},{"id":9,"type":"Runware Media Upload","pos":[-234.01907348632812,932.0363159179688],"size":[270,58],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":5},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Media Upload"},"widgets_values":["3b7f2279-0b67-4906-81f5-95b5f8a47652"],"bgcolor":"#5345bf"},{"id":2,"type":"Runware Video Model Search","pos":[59.989620208740234,283.3721618652344],"size":[270,242],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[14]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","PixVerse","pixverse:lipsync@1 (PixVerse LipSync)",false,1920,1080,1080],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Reference Videos","pos":[51.41804885864258,564.4564208984375],"size":[270.8531188964844,274.3548889160156],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Video1","name":"Video1","shape":7,"type":"STRING","widget":{"name":"Video1"},"link":4},{"localized_name":"Video2","name":"Video2","shape":7,"type":"STRING","widget":{"name":"Video2"},"link":null},{"localized_name":"Video3","name":"Video3","shape":7,"type":"STRING","widget":{"name":"Video3"},"link":null},{"localized_name":"Video4","name":"Video4","shape":7,"type":"STRING","widget":{"name":"Video4"},"link":null}],"outputs":[{"localized_name":"Reference Videos","name":"Reference Videos","type":"RUNWAREREFERENCEVIDEOS","links":[16]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Reference Videos"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":7,"type":"Runware Input Audios","pos":[67.63963317871094,781.1075439453125],"size":[270,130],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Audio1","name":"Audio1","shape":7,"type":"STRING","widget":{"name":"Audio1"},"link":6},{"localized_name":"Audio2","name":"Audio2","shape":7,"type":"STRING","widget":{"name":"Audio2"},"link":null},{"localized_name":"Audio3","name":"Audio3","shape":7,"type":"STRING","widget":{"name":"Audio3"},"link":null},{"localized_name":"Audio4","name":"Audio4","shape":7,"type":"STRING","widget":{"name":"Audio4"},"link":null}],"outputs":[{"localized_name":"Input Audios","name":"Input Audios","type":"RUNWAREINPUTAUDIOS","links":[17]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"1c7da18f11d51514140944e0f9f90e62ae99572c","Node name for S&R":"Runware Input Audios"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":10,"type":"SaveVideo","pos":[817.4613647460938,341.73583984375],"size":[270,300.5],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":15},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":12,"type":"Runware Video Inference","pos":[370.4892883300781,267.972900390625],"size":[400,808],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":14},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":null},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":17},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":16},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":null},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[15]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"b75f0803ad2a5b5624f97d4025927744329e0c31","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,true,5,false,24,"mp4",false,3998501546,"randomize",false,20,1,"none","","","",""],"bgcolor":"#5345bf"}],"links":[[2,5,0,6,0,"VIDEO,AUDIO"],[4,6,0,3,0,"STRING"],[5,8,0,9,0,"VIDEO,AUDIO"],[6,9,0,7,0,"STRING"],[14,2,0,12,0,"RUNWAREVIDEOMODEL"],[15,12,0,10,0,"VIDEO"],[16,3,0,12,5,"RUNWAREREFERENCEVIDEOS"],[17,7,0,12,4,"RUNWAREINPUTAUDIOS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[793.1808633113316,-99.13552109713463]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Inference_Runway_Aleph.json b/workflows/Runware_Video_Inference_Runway_Aleph.json new file mode 100644 index 0000000..a943237 --- /dev/null +++ b/workflows/Runware_Video_Inference_Runway_Aleph.json @@ -0,0 +1 @@ +{"id":"a3fa6131-3e00-4fb3-8cbe-3450bbcb0559","revision":0,"last_node_id":10,"last_link_id":8,"nodes":[{"id":3,"type":"Runware Video Model Search","pos":[120.75635528564453,-435.5396423339844],"size":[270,242],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[1]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Runway","runway:2@1 (Runway Aleph)",false,1280,720,1080],"bgcolor":"#5345bf"},{"id":6,"type":"Runware Video Inputs References","pos":[-255.89195251464844,-176.7028350830078],"size":[312.8804626464844,190],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Image1","name":"Image1","shape":7,"type":"IMAGE","link":3},{"localized_name":"Image2","name":"Image2","shape":7,"type":"IMAGE","link":null},{"localized_name":"Image3","name":"Image3","shape":7,"type":"IMAGE","link":null},{"localized_name":"Image4","name":"Image4","shape":7,"type":"IMAGE","link":null},{"localized_name":"Type1","name":"Type1","shape":7,"type":"STRING","widget":{"name":"Type1"},"link":null},{"localized_name":"Type2","name":"Type2","shape":7,"type":"STRING","widget":{"name":"Type2"},"link":null},{"localized_name":"Type3","name":"Type3","shape":7,"type":"STRING","widget":{"name":"Type3"},"link":null},{"localized_name":"Type4","name":"Type4","shape":7,"type":"STRING","widget":{"name":"Type4"},"link":null}],"outputs":[{"localized_name":"Video Inputs Reference Images","name":"Video Inputs Reference Images","type":"RUNWAREVIDEOINPUTSREFERENCEIMAGES","links":[4]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inputs References"},"widgets_values":["","","",""],"bgcolor":"#5345bf"},{"id":8,"type":"LoadVideo","pos":[-275.3055419921875,74.73067474365234],"size":[274.080078125,442.0882263183594],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[5]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["b4d33602-690f-4251-a62d-3f6c27363518.mp4","image"]},{"id":9,"type":"Runware Media Upload","pos":[67.8686294555664,295.3408203125],"size":[270,58],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":5},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[6]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Media Upload"},"widgets_values":["9f5de406-cd96-4d79-a030-b2246f90b902"],"bgcolor":"#5345bf"},{"id":10,"type":"SaveVideo","pos":[987.3607177734375,-435.8999328613281],"size":[270,456.26922607421875],"flags":{},"order":8,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":7},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":5,"type":"Runware Video Inference Inputs","pos":[146.58688354492188,63.74991989135742],"size":[299.6597595214844,162],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame Images","name":"Frame Images","shape":7,"type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","link":null},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":null},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCEIMAGES","link":4},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":null},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":6}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["",""],"bgcolor":"#5345bf"},{"id":7,"type":"LoadImage","pos":[-396.15374755859375,-601.1516723632812],"size":[274.080078125,314],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[3]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg","image"]},{"id":1,"type":"Runware Video Inference","pos":[494.5824279785156,-469.24542236328125],"size":[400,808],"flags":{},"order":7,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":1},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":2},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":8},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[7]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,false,5,false,24,"mp4",true,3372993288,"randomize",false,20,1,"none","Make the video look like a watercolor painting","","",""],"bgcolor":"#5345bf"},{"id":4,"type":"Runware Runway Provider Settings","pos":[126.5384521484375,-111.8820571899414],"size":[320.8921813964844,58],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"publicFigureThreshold","name":"publicFigureThreshold","shape":7,"type":"COMBO","widget":{"name":"publicFigureThreshold"},"link":null}],"outputs":[{"localized_name":"Provider Settings","name":"Provider Settings","type":"RUNWAREPROVIDERSETTINGS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Runway Provider Settings"},"widgets_values":["low"],"bgcolor":"#5345bf"}],"links":[[1,3,0,1,0,"RUNWAREVIDEOMODEL"],[2,4,0,1,3,"RUNWAREPROVIDERSETTINGS"],[3,7,0,6,0,"IMAGE"],[4,6,0,5,4,"RUNWAREVIDEOINPUTSREFERENCES"],[5,8,0,9,0,"VIDEO,AUDIO"],[6,9,0,5,6,"STRING"],[7,1,0,10,0,"VIDEO"],[8,5,0,1,6,"RUNWAREVIDEOINFERENCEINPUTS"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[766.7741924451649,552.8935718905718]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Inference_Runway_Gen4_Turbo.json b/workflows/Runware_Video_Inference_Runway_Gen4_Turbo.json new file mode 100644 index 0000000..12d3b98 --- /dev/null +++ b/workflows/Runware_Video_Inference_Runway_Gen4_Turbo.json @@ -0,0 +1 @@ +{"id":"a3fa6131-3e00-4fb3-8cbe-3450bbcb0559","revision":0,"last_node_id":14,"last_link_id":10,"nodes":[{"id":10,"type":"SaveVideo","pos":[987.3607177734375,-435.8999328613281],"size":[270,456.26922607421875],"flags":{},"order":6,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":7},{"localized_name":"filename_prefix","name":"filename_prefix","type":"STRING","widget":{"name":"filename_prefix"},"link":null},{"localized_name":"format","name":"format","type":"COMBO","widget":{"name":"format"},"link":null},{"localized_name":"codec","name":"codec","type":"COMBO","widget":{"name":"codec"},"link":null}],"outputs":[],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"SaveVideo"},"widgets_values":["video/ComfyUI","auto","auto"]},{"id":5,"type":"Runware Video Inference Inputs","pos":[146.58688354492188,63.74991989135742],"size":[299.6597595214844,162],"flags":{},"order":4,"mode":0,"inputs":[{"localized_name":"Image","name":"Image","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame Images","name":"Frame Images","shape":7,"type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","link":9},{"localized_name":"Mask","name":"Mask","shape":7,"type":"IMAGE","link":null},{"localized_name":"Frame","name":"Frame","shape":7,"type":"IMAGE","link":null},{"localized_name":"References","name":"References","shape":7,"type":"RUNWAREVIDEOINPUTSREFERENCEIMAGES","link":null},{"localized_name":"Audio","name":"Audio","shape":7,"type":"STRING","widget":{"name":"Audio"},"link":null},{"localized_name":"Video","name":"Video","shape":7,"type":"STRING","widget":{"name":"Video"},"link":null}],"outputs":[{"localized_name":"Video Inference Inputs","name":"Video Inference Inputs","type":"RUNWAREVIDEOINFERENCEINPUTS","links":[8]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inference Inputs"},"widgets_values":["",""],"bgcolor":"#5345bf"},{"id":4,"type":"Runware Runway Provider Settings","pos":[126.5384521484375,-111.8820571899414],"size":[320.8921813964844,58],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"publicFigureThreshold","name":"publicFigureThreshold","shape":7,"type":"COMBO","widget":{"name":"publicFigureThreshold"},"link":null}],"outputs":[{"localized_name":"Provider Settings","name":"Provider Settings","type":"RUNWAREPROVIDERSETTINGS","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Runway Provider Settings"},"widgets_values":["low"],"bgcolor":"#5345bf"},{"id":3,"type":"Runware Video Model Search","pos":[120.75635528564453,-435.5396423339844],"size":[270,242],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"Model Search","name":"Model Search","type":"STRING","widget":{"name":"Model Search"},"link":null},{"localized_name":"Model Architecture","name":"Model Architecture","type":"COMBO","widget":{"name":"Model Architecture"},"link":null},{"localized_name":"VideoList","name":"VideoList","type":"COMBO","widget":{"name":"VideoList"},"link":null},{"localized_name":"Use Search Value","name":"Use Search Value","type":"BOOLEAN","widget":{"name":"Use Search Value"},"link":null},{"localized_name":"useResolution","name":"useResolution","type":"BOOLEAN","widget":{"name":"useResolution"},"link":null},{"localized_name":"Width","name":"Width","type":"INT","widget":{"name":"Width"},"link":null},{"localized_name":"Height","name":"Height","type":"INT","widget":{"name":"Height"},"link":null}],"outputs":[{"localized_name":"Runware Video Model","name":"Runware Video Model","type":"RUNWAREVIDEOMODEL","links":[1]},{"localized_name":"Width","name":"Width","type":"INT","links":null},{"localized_name":"Height","name":"Height","type":"INT","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Model Search"},"widgets_values":["","Runway","runway:1@1 (Runway Gen-4 Turbo)",false,1280,720,1080],"bgcolor":"#5345bf"},{"id":13,"type":"Runware Video Inputs Frame Images","pos":[-231.45977783203125,-10.395909309387207],"size":[331.5357360839844,190],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"image1","name":"image1","shape":7,"type":"IMAGE","link":10},{"localized_name":"image2","name":"image2","shape":7,"type":"IMAGE","link":null},{"localized_name":"image3","name":"image3","shape":7,"type":"IMAGE","link":null},{"localized_name":"image4","name":"image4","shape":7,"type":"IMAGE","link":null},{"localized_name":"frame1 position","name":"frame1 position","shape":7,"type":"STRING","widget":{"name":"frame1 position"},"link":null},{"localized_name":"frame2 position","name":"frame2 position","shape":7,"type":"STRING","widget":{"name":"frame2 position"},"link":null},{"localized_name":"frame3 position","name":"frame3 position","shape":7,"type":"STRING","widget":{"name":"frame3 position"},"link":null},{"localized_name":"frame4 position","name":"frame4 position","shape":7,"type":"STRING","widget":{"name":"frame4 position"},"link":null}],"outputs":[{"localized_name":"Video Inputs Frame Images","name":"Video Inputs Frame Images","type":"RUNWAREVIDEOINPUTSFRAMEIMAGES","links":[9]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inputs Frame Images"},"widgets_values":["first","","",""],"bgcolor":"#5345bf"},{"id":1,"type":"Runware Video Inference","pos":[494.5824279785156,-469.24542236328125],"size":[400,808],"flags":{},"order":5,"mode":0,"inputs":[{"localized_name":"Model","name":"Model","type":"RUNWAREVIDEOMODEL","link":1},{"localized_name":"frameImages","name":"frameImages","shape":7,"type":"RUNWAREFRAMEIMAGES","link":null},{"localized_name":"referenceImages","name":"referenceImages","shape":7,"type":"RUNWAREREFERENCEIMAGES","link":null},{"localized_name":"providerSettings","name":"providerSettings","shape":7,"type":"RUNWAREPROVIDERSETTINGS","link":2},{"localized_name":"inputAudios","name":"inputAudios","shape":7,"type":"RUNWAREINPUTAUDIOS","link":null},{"localized_name":"referenceVideos","name":"referenceVideos","shape":7,"type":"RUNWAREREFERENCEVIDEOS","link":null},{"localized_name":"inputs","name":"inputs","shape":7,"type":"RUNWAREVIDEOINFERENCEINPUTS","link":8},{"localized_name":"safetyInputs","name":"safetyInputs","shape":7,"type":"RUNWARESAFETYINPUTS","link":null},{"localized_name":"videoAdvancedFeatureInputs","name":"videoAdvancedFeatureInputs","shape":7,"type":"RUNWAREVIDEOADVANCEDFEATUREINPUTS","link":null},{"localized_name":"Accelerator","name":"Accelerator","shape":7,"type":"RUNWAREACCELERATOR","link":null},{"localized_name":"Multi Inference Mode","name":"Multi Inference Mode","type":"BOOLEAN","widget":{"name":"Multi Inference Mode"},"link":null},{"localized_name":"Prompt Weighting","name":"Prompt Weighting","type":"COMBO","widget":{"name":"Prompt Weighting"},"link":null},{"localized_name":"useCustomDimensions","name":"useCustomDimensions","type":"BOOLEAN","widget":{"name":"useCustomDimensions"},"link":null},{"localized_name":"width","name":"width","type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"useDuration","name":"useDuration","type":"BOOLEAN","widget":{"name":"useDuration"},"link":null},{"localized_name":"duration","name":"duration","type":"INT","widget":{"name":"duration"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"fps","name":"fps","type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"outputFormat","name":"outputFormat","type":"COMBO","widget":{"name":"outputFormat"},"link":null},{"localized_name":"useSeed","name":"useSeed","type":"BOOLEAN","widget":{"name":"useSeed"},"link":null},{"localized_name":"seed","name":"seed","type":"INT","widget":{"name":"seed"},"link":null},{"localized_name":"useSteps","name":"useSteps","type":"BOOLEAN","widget":{"name":"useSteps"},"link":null},{"localized_name":"steps","name":"steps","type":"INT","widget":{"name":"steps"},"link":null},{"localized_name":"batchSize","name":"batchSize","type":"INT","widget":{"name":"batchSize"},"link":null},{"localized_name":"acceleration","name":"acceleration","type":"COMBO","widget":{"name":"acceleration"},"link":null},{"localized_name":"positivePrompt","name":"positivePrompt","shape":7,"type":"STRING","widget":{"name":"positivePrompt"},"link":null},{"localized_name":"negativePrompt","name":"negativePrompt","shape":7,"type":"STRING","widget":{"name":"negativePrompt"},"link":null},{"localized_name":"speechVoice","name":"speechVoice","shape":7,"type":"STRING","widget":{"name":"speechVoice"},"link":null},{"localized_name":"speechText","name":"speechText","shape":7,"type":"STRING","widget":{"name":"speechText"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[7]},{"localized_name":"RW-Task","name":"RW-Task","type":"RUNWARETASK","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Inference"},"widgets_values":[false,"Disabled",false,1024,576,false,5,false,24,"mp4",true,1232731115,"randomize",false,20,1,"none","A lego chef cooking eggs.","","",""],"bgcolor":"#5345bf"},{"id":14,"type":"LoadImage","pos":[-192.14349365234375,-443.0803527832031],"size":[274.080078125,314],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"image","name":"image","type":"COMBO","widget":{"name":"image"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"IMAGE","name":"IMAGE","type":"IMAGE","links":[10]},{"localized_name":"MASK","name":"MASK","type":"MASK","links":null}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadImage"},"widgets_values":["6fq8JDSjb1osE_c3J_F2H (1).jpeg","image"]}],"links":[[1,3,0,1,0,"RUNWAREVIDEOMODEL"],[2,4,0,1,3,"RUNWAREPROVIDERSETTINGS"],[7,1,0,10,0,"VIDEO"],[8,5,0,1,6,"RUNWAREVIDEOINFERENCEINPUTS"],[9,13,0,5,1,"RUNWAREVIDEOINPUTSFRAMEIMAGES"],[10,14,0,13,0,"IMAGE"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[692.8771764295398,573.5339504061964]}},"version":0.4} \ No newline at end of file diff --git a/workflows/Runware_Video_Transcription.json b/workflows/Runware_Video_Transcription.json index d9d2295..10996f4 100644 --- a/workflows/Runware_Video_Transcription.json +++ b/workflows/Runware_Video_Transcription.json @@ -1 +1 @@ -{"id":"df246f14-f1cb-4379-91af-5185b0c663d8","revision":0,"last_node_id":4,"last_link_id":2,"nodes":[{"id":3,"type":"LoadVideo","pos":[-436.6539001464844,430.0327453613281],"size":[274.080078125,442.0882263183594],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["backgroundRemoval.mp4","image"]},{"id":4,"type":"Runware Media Upload","pos":[-151.37985229492188,276.1902160644531],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":1},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[2]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Media Upload"},"widgets_values":["1ba124eb-81aa-44f6-ab7c-cfa043065738"],"bgcolor":"#5345bf"},{"id":1,"type":"Runware Video Transcription","pos":[-75.60359191894531,496.2238464355469],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Always Retranscribe","name":"Always Retranscribe","type":"BOOLEAN","widget":{"name":"Always Retranscribe"},"link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"video","name":"video","type":"STRING","widget":{"name":"video"},"link":2},{"localized_name":"model","name":"model","type":"STRING","widget":{"name":"model"},"link":null}],"outputs":[{"localized_name":"Video Transcription","name":"Video Transcription","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Video Transcription"},"widgets_values":[false,"[0] (0s-7s): A young girl with braided hair and large, expressive eyes smiles at the camera. She wears a white tank top and a gold chain. The background appears to be a kitchen.","","memories:1@1"]}],"links":[[1,3,0,4,0,"VIDEO,AUDIO"],[2,4,0,1,2,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[793.6275234675816,-100.02884140963462]}},"version":0.4} \ No newline at end of file +{"id":"df246f14-f1cb-4379-91af-5185b0c663d8","revision":0,"last_node_id":5,"last_link_id":3,"nodes":[{"id":4,"type":"Runware Media Upload","pos":[-151.37985229492188,276.1902160644531],"size":[270,58],"flags":{},"order":1,"mode":0,"inputs":[{"localized_name":"media","name":"media","shape":7,"type":"VIDEO,AUDIO","link":1},{"localized_name":"mediaUUID","name":"mediaUUID","shape":7,"type":"STRING","widget":{"name":"mediaUUID"},"link":null}],"outputs":[{"localized_name":"mediaUUID","name":"mediaUUID","type":"STRING","links":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056c15a1b72b1555184d0447562c095797825d6e","Node name for S&R":"Runware Media Upload"},"widgets_values":["1ba124eb-81aa-44f6-ab7c-cfa043065738"],"bgcolor":"#5345bf"},{"id":3,"type":"LoadVideo","pos":[-438.6059875488281,321.4447326660156],"size":[274.080078125,442.0882263183594],"flags":{},"order":0,"mode":0,"inputs":[{"localized_name":"file","name":"file","type":"COMBO","widget":{"name":"file"},"link":null},{"localized_name":"choose file to upload","name":"upload","type":"IMAGEUPLOAD","widget":{"name":"upload"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]}],"properties":{"cnr_id":"comfy-core","ver":"0.3.46","Node name for S&R":"LoadVideo"},"widgets_values":["backgroundRemoval.mp4","image"]},{"id":5,"type":"Runware Video Transcription","pos":[-123.58058166503906,383.5848083496094],"size":[400,200],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Always Retranscribe","name":"Always Retranscribe","type":"BOOLEAN","widget":{"name":"Always Retranscribe"},"link":null},{"localized_name":"prompt","name":"prompt","type":"STRING","widget":{"name":"prompt"},"link":null},{"localized_name":"video","name":"video","type":"STRING","widget":{"name":"video"},"link":3},{"localized_name":"model","name":"model","type":"COMBO","widget":{"name":"model"},"link":null}],"outputs":[{"localized_name":"Video Caption","name":"Video Caption","type":"STRING","links":null}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"056ade066187313b5c2f9a3afa5cbbee19227d3e","Node name for S&R":"Runware Video Transcription"},"widgets_values":[false,"","","Memories Age Detection"],"bgcolor":"#5345bf"}],"links":[[1,3,0,4,0,"VIDEO,AUDIO"],[3,4,0,5,2,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.8264462809917354,"offset":[793.6275234675816,-100.02884140963462]}},"version":0.4} \ No newline at end of file