Added support for P-video replace

This commit is contained in:
Sirshendu Ganguly
2026-06-04 18:11:58 +05:30
parent 429eb9b8be
commit 3177423d48
5 changed files with 47 additions and 6 deletions
+9
View File
@@ -1428,6 +1428,10 @@ function videoSettingsToggleHandler(settingsNode) {
const audioWidget = settingsNode.widgets.find(w => w && w.name === "audio");
const usePreserveAudioWidget = settingsNode.widgets.find(w => w && w.name === "usePreserveAudio");
const preserveAudioWidget = settingsNode.widgets.find(w => w && w.name === "preserveAudio");
const useSourceAudioSyncWidget = settingsNode.widgets.find(w => w && w.name === "useSourceAudioSync");
const sourceAudioSyncWidget = settingsNode.widgets.find(w => w && w.name === "sourceAudioSync");
const useTurboWidget = settingsNode.widgets.find(w => w && w.name === "useTurbo");
const turboWidget = settingsNode.widgets.find(w => w && w.name === "turbo");
const useVoicePromptWidget = settingsNode.widgets.find(w => w && w.name === "useVoicePrompt");
const voicePromptWidget = settingsNode.widgets.find(w => w && w.name === "voicePrompt");
const useSafetyFilterWidget = settingsNode.widgets.find(w => w && w.name === "useSafetyFilter");
@@ -1488,6 +1492,8 @@ function videoSettingsToggleHandler(settingsNode) {
if (useDraftWidget && draftWidget) toggleWidgetState(useDraftWidget, draftWidget, "draft");
if (useAudioWidget && audioWidget) toggleWidgetState(useAudioWidget, audioWidget, "audio");
if (usePreserveAudioWidget && preserveAudioWidget) toggleWidgetState(usePreserveAudioWidget, preserveAudioWidget, "preserveAudio");
if (useSourceAudioSyncWidget && sourceAudioSyncWidget) toggleWidgetState(useSourceAudioSyncWidget, sourceAudioSyncWidget, "sourceAudioSync");
if (useTurboWidget && turboWidget) toggleWidgetState(useTurboWidget, turboWidget, "turbo");
if (useVoicePromptWidget && voicePromptWidget) toggleWidgetState(useVoicePromptWidget, voicePromptWidget, "voicePrompt");
if (useSafetyFilterWidget && safetyFilterWidget) toggleWidgetState(useSafetyFilterWidget, safetyFilterWidget, "safetyFilter");
if (usePromptUpsamplingWidget && promptUpsamplingWidget) toggleWidgetState(usePromptUpsamplingWidget, promptUpsamplingWidget, "promptUpsampling");
@@ -2944,6 +2950,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
"prunaai:p-video@0 (P-Video)",
"prunaai:p-video@avatar (P-Video Avatar)",
"prunaai:p-video@animate (P-Video Animate)",
"prunaai:p-video@replace (P-Video Replace)",
],
"SkyReels": [
"skywork:skyreels@v4 (SkyReels V4)",
@@ -3046,6 +3053,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
"prunaai:p-video@0": {"width": 1280, "height": 720},
"prunaai:p-video@avatar": {"width": 1280, "height": 720},
"prunaai:p-video@animate": {"width": 1280, "height": 720},
"prunaai:p-video@replace": {"width": 1280, "height": 720},
"heygen:avatar@4": {"width": 1280, "height": 720},
"heygen:video-agent@0": {"width": 1280, "height": 720},
"heygen:avatar@5": {"width": 1280, "height": 720},
@@ -3148,6 +3156,7 @@ function videoModelSearchFilterHandler(videoModelSearchNode) {
"prunaai:p-video@0": "720p",
"prunaai:p-video@avatar": "720p",
"prunaai:p-video@animate": "720p",
"prunaai:p-video@replace": "720p",
"heygen:avatar@4": "720p",
"heygen:video-agent@0": "720p",
"heygen:avatar@5": "720p",
+6 -6
View File
@@ -106,7 +106,7 @@ class txt2vid:
}),
"useDuration": ("BOOLEAN", {
"tooltip": "Enable to include duration parameter in API request. Disable if your model doesn't support duration.",
"default": True,
"default": False,
}),
"duration": ("INT", {
"tooltip": "The duration of the video in seconds.",
@@ -116,7 +116,7 @@ class txt2vid:
}),
"useFps": ("BOOLEAN", {
"tooltip": "Enable to include fps parameter in API request. Disable if your model doesn't support fps.",
"default": True,
"default": False,
}),
"fps": ("INT", {
"tooltip": "Frames per second for the generated video. Only used when 'Use FPS' is enabled.",
@@ -130,7 +130,7 @@ class txt2vid:
}),
"useSeed": ("BOOLEAN", {
"tooltip": "Enable to include seed parameter in API request. Disable if your model doesn't support seed.",
"default": True,
"default": False,
}),
"seed": ("INT", {
"tooltip": "A value used to randomize the video generation. If you want to make videos reproducible (generate the same video multiple times), you can use the same seed value.",
@@ -263,13 +263,13 @@ class txt2vid:
videoAdvancedFeatureInputs = kwargs.get("videoAdvancedFeatureInputs", None)
runwareAccelerator = kwargs.get("Accelerator", None)
settings = kwargs.get("settings", None)
useDuration = kwargs.get("useDuration", True)
useDuration = kwargs.get("useDuration", False)
duration = kwargs.get("duration", 5)
fps = kwargs.get("fps", 24)
useFps = kwargs.get("useFps", True)
useFps = kwargs.get("useFps", False)
outputFormat = kwargs.get("outputFormat", "mp4")
seed = kwargs.get("seed", 1)
useSeed = kwargs.get("useSeed", True)
useSeed = kwargs.get("useSeed", False)
steps = kwargs.get("steps", 20)
useSteps = kwargs.get("useSteps", False)
useBatchSize = kwargs.get("useBatchSize", False)
+3
View File
@@ -142,6 +142,7 @@ class videoModelSearch:
"prunaai:p-video@0 (P-Video)",
"prunaai:p-video@avatar (P-Video Avatar)",
"prunaai:p-video@animate (P-Video Animate)",
"prunaai:p-video@replace (P-Video Replace)",
],
"SkyReels": [
"skywork:skyreels@v4 (SkyReels V4)",
@@ -284,6 +285,7 @@ class videoModelSearch:
"prunaai:p-video@0": {"width": 1280, "height": 720},
"prunaai:p-video@avatar": {"width": 1280, "height": 720},
"prunaai:p-video@animate": {"width": 1280, "height": 720},
"prunaai:p-video@replace": {"width": 1280, "height": 720},
# HeyGen Models (Model ID: heygen-avatar-iv, heygen-avatar-v)
"heygen:avatar@4": {"width": 1280, "height": 720},
@@ -430,6 +432,7 @@ class videoModelSearch:
"prunaai:p-video@0": "720p",
"prunaai:p-video@avatar": "720p",
"prunaai:p-video@animate": "720p",
"prunaai:p-video@replace": "720p",
# HeyGen Models
"heygen:avatar@4": "720p",
+28
View File
@@ -235,6 +235,26 @@ class RunwareVideoSettings:
"label_on": "Enabled",
"label_off": "Disabled",
}),
"useSourceAudioSync": ("BOOLEAN", {
"tooltip": "Enable to include sourceAudioSync in video inference settings.",
"default": False,
}),
"sourceAudioSync": ("BOOLEAN", {
"tooltip": "When true, the source audio is used during generation (affects lip and motion sync).",
"default": True,
"label_on": "Enabled",
"label_off": "Disabled",
}),
"useTurbo": ("BOOLEAN", {
"tooltip": "Enable to include turbo in video inference settings.",
"default": False,
}),
"turbo": ("BOOLEAN", {
"tooltip": "Turbo mode: faster generation for slightly lower quality.",
"default": False,
"label_on": "Enabled",
"label_off": "Disabled",
}),
}
}
@@ -255,6 +275,10 @@ class RunwareVideoSettings:
audio = kwargs.get("audio", False)
use_preserve_audio = kwargs.get("usePreserveAudio", False)
preserve_audio = kwargs.get("preserveAudio", True)
use_source_audio_sync = kwargs.get("useSourceAudioSync", False)
source_audio_sync = kwargs.get("sourceAudioSync", True)
use_turbo = kwargs.get("useTurbo", False)
turbo = kwargs.get("turbo", False)
use_voice_prompt = kwargs.get("useVoicePrompt", False)
voice_prompt = (kwargs.get("voicePrompt") or "").strip()
use_safety_filter = kwargs.get("useSafetyFilter", False)
@@ -307,6 +331,10 @@ class RunwareVideoSettings:
settings["audio"] = bool(audio)
if use_preserve_audio:
settings["preserveAudio"] = bool(preserve_audio)
if use_source_audio_sync:
settings["sourceAudioSync"] = bool(source_audio_sync)
if use_turbo:
settings["turbo"] = bool(turbo)
if use_voice_prompt and voice_prompt:
settings["voicePrompt"] = voice_prompt
if use_safety_filter:
File diff suppressed because one or more lines are too long