Added width, height and fps to videoUpscaler

This commit is contained in:
Sirshendu Ganguly
2026-03-26 21:23:23 -04:00
parent 6d47a67b85
commit 7af33a2ec3
3 changed files with 89 additions and 7 deletions
+36 -7
View File
@@ -726,21 +726,50 @@ function videoUpscalerToggleHandler(videoUpscalerNode) {
const useUpscaleFactorWidget = videoUpscalerNode.widgets.find(w => w && w.name === "useUpscaleFactor");
const upscaleFactorWidget = videoUpscalerNode.widgets.find(w => w && w.name === "upscaleFactor");
if (!useUpscaleFactorWidget || !upscaleFactorWidget) return;
const useFpsWidget = videoUpscalerNode.widgets.find(w => w && w.name === "useFps");
const fpsWidget = videoUpscalerNode.widgets.find(w => w && w.name === "fps");
const useDimensionWidget = videoUpscalerNode.widgets.find(w => w && w.name === "useDimension");
const widthWidget = videoUpscalerNode.widgets.find(w => w && w.name === "width");
const heightWidget = videoUpscalerNode.widgets.find(w => w && w.name === "height");
function applyToggleState() {
const enabled = useUpscaleFactorWidget.value === true;
toggleWidgetEnabled(upscaleFactorWidget, enabled, videoUpscalerNode);
if (useUpscaleFactorWidget && upscaleFactorWidget) {
const enabled = useUpscaleFactorWidget.value === true;
toggleWidgetEnabled(upscaleFactorWidget, enabled, videoUpscalerNode);
}
if (useFpsWidget && fpsWidget) {
const enabled = useFpsWidget.value === true;
toggleWidgetEnabled(fpsWidget, enabled, videoUpscalerNode);
}
if (useDimensionWidget && widthWidget && heightWidget) {
const enabled = useDimensionWidget.value === "custom";
toggleWidgetEnabled(widthWidget, enabled, videoUpscalerNode);
toggleWidgetEnabled(heightWidget, enabled, videoUpscalerNode);
}
videoUpscalerNode.setDirtyCanvas(true);
}
// Initialize state once widgets are rendered
setTimeout(applyToggleState, 100);
appendWidgetCB(useUpscaleFactorWidget, () => {
setTimeout(applyToggleState, 50);
});
if (useUpscaleFactorWidget) {
appendWidgetCB(useUpscaleFactorWidget, () => {
setTimeout(applyToggleState, 50);
});
}
if (useFpsWidget) {
appendWidgetCB(useFpsWidget, () => {
setTimeout(applyToggleState, 50);
});
}
if (useDimensionWidget) {
appendWidgetCB(useDimensionWidget, () => {
setTimeout(applyToggleState, 50);
});
}
}
function useParameterToggleHandler(node) {
+52
View File
@@ -5,6 +5,7 @@ class videoUpscaler:
RUNWARE_VUPSCALER_MODELS = {
"Bria Video Upscaler": "bria:50@1",
"Bytedance Video Upscaler": "bytedance:50@1",
"Topaz Labs Starlight Precise 2.5": "topazlabs:starlight-precise@2.5",
}
@classmethod
@@ -24,12 +25,43 @@ class videoUpscaler:
"tooltip": "Enable to explicitly set the upscale factor for the request.",
"default": False,
}),
"useFps": ("BOOLEAN", {
"label_on": "Yes",
"label_off": "No",
"tooltip": "Enable to explicitly set FPS for the output video.",
"default": False,
}),
"useDimension": (["none", "custom"], {
"tooltip": "Choose whether to send custom width and height.",
"default": "none",
}),
},
"optional": {
"upscaleFactor": ([2, 4], {
"tooltip": "Integer scale factor for upscaling (2x or 4x).",
"default": 2,
}),
"fps": ("INT", {
"default": 24,
"min": 1,
"max": 240,
"step": 1,
"tooltip": "Output frames per second (1-240). Used when useFps is enabled.",
}),
"width": ("INT", {
"default": 1920,
"min": 1,
"max": 8192,
"step": 1,
"tooltip": "Custom output width in pixels. Used when useDimension is custom.",
}),
"height": ("INT", {
"default": 1080,
"min": 1,
"max": 8192,
"step": 1,
"tooltip": "Custom output height in pixels. Used when useDimension is custom.",
}),
"Output Format": (["mp4", "webm"], {
"default": "mp4",
"tooltip": "Choose the output video format.",
@@ -47,6 +79,11 @@ class videoUpscaler:
video_uuid = kwargs.get("Video")
useUpscaleFactor = kwargs.get("useUpscaleFactor", False)
upscaleFactor = kwargs.get("upscaleFactor")
useFps = kwargs.get("useFps", False)
fps = kwargs.get("fps", 24)
useDimension = kwargs.get("useDimension", "none")
width = kwargs.get("width", 1920)
height = kwargs.get("height", 1080)
modelName = kwargs.get("Model", "Bria Video Upscaler")
outputFormat = kwargs.get("Output Format", "mp4")
@@ -75,6 +112,21 @@ class videoUpscaler:
else:
raise ValueError("upscaleFactor must be 2 or 4 when useUpscaleFactor is enabled.")
if useFps:
if isinstance(fps, int) and 1 <= fps <= 240:
task_payload["fps"] = fps
else:
raise ValueError("fps must be an integer between 1 and 240 when useFps is enabled.")
if useDimension == "custom":
if isinstance(width, int) and isinstance(height, int) and width > 0 and height > 0:
task_payload["width"] = width
task_payload["height"] = height
else:
raise ValueError("width and height must be positive integers when useDimension is custom.")
elif useDimension != "none":
raise ValueError("useDimension must be either 'none' or 'custom'.")
genConfig = [task_payload]
try:
@@ -0,0 +1 @@
{"id":"bd4178de-d8b9-44bb-a22f-31329b9492d5","revision":0,"last_node_id":4,"last_link_id":3,"nodes":[{"id":2,"type":"SaveVideo","pos":[900.0263671875,767.330322265625],"size":[270,106],"flags":{},"order":3,"mode":0,"inputs":[{"localized_name":"video","name":"video","type":"VIDEO","link":1},{"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":4,"type":"LoadVideo","pos":[14.491833686828613,662.3383178710938],"size":[274.080078125,348.08013916015625],"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":["c3896e44-4869-4142-9f02-6d7b967d3a1e.mp4","image"]},{"id":3,"type":"Runware Media Upload","pos":[417.66265869140625,1156.2657470703125],"size":[270,58],"flags":{},"order":1,"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":[3]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"8f688fa3e58e1aaa84de508efc595c0dcdf5e190","Node name for S&R":"Runware Media Upload"},"widgets_values":[""],"bgcolor":"#5345bf"},{"id":1,"type":"Runware Video Upscaler","pos":[542.6085205078125,741.3137817382812],"size":[270,274],"flags":{},"order":2,"mode":0,"inputs":[{"localized_name":"Video","name":"Video","type":"STRING","widget":{"name":"Video"},"link":3},{"localized_name":"Model","name":"Model","type":"COMBO","widget":{"name":"Model"},"link":null},{"localized_name":"useUpscaleFactor","name":"useUpscaleFactor","type":"BOOLEAN","widget":{"name":"useUpscaleFactor"},"link":null},{"localized_name":"useFps","name":"useFps","type":"BOOLEAN","widget":{"name":"useFps"},"link":null},{"localized_name":"useDimension","name":"useDimension","type":"COMBO","widget":{"name":"useDimension"},"link":null},{"localized_name":"upscaleFactor","name":"upscaleFactor","shape":7,"type":"COMBO","widget":{"name":"upscaleFactor"},"link":null},{"localized_name":"fps","name":"fps","shape":7,"type":"INT","widget":{"name":"fps"},"link":null},{"localized_name":"width","name":"width","shape":7,"type":"INT","widget":{"name":"width"},"link":null},{"localized_name":"height","name":"height","shape":7,"type":"INT","widget":{"name":"height"},"link":null},{"localized_name":"Output Format","name":"Output Format","shape":7,"type":"COMBO","widget":{"name":"Output Format"},"link":null}],"outputs":[{"localized_name":"VIDEO","name":"VIDEO","type":"VIDEO","links":[1]}],"properties":{"cnr_id":"ComfyUI-Runware","ver":"8f688fa3e58e1aaa84de508efc595c0dcdf5e190","Node name for S&R":"Runware Video Upscaler"},"widgets_values":["","Topaz Labs Starlight Precise 2.5",false,false,"custom",2,24,720,360,"mp4"],"bgcolor":"#5345bf"}],"links":[[1,1,0,2,0,"VIDEO"],[2,4,0,3,0,"VIDEO,AUDIO"],[3,3,0,1,0,"STRING"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.6830134553650705,"offset":[306.87239836992575,-512.9827815463534]}},"version":0.4}