Applying a still image upscaler "frame by frame" is technically video upscaling, but since it does not have temporal consistency, flickering may occur.
After all, it is better to use an upscaler dedicated to video.
I will introduce just two current SoTAs.
Specialized in video upscaling, enabling generation in 1 step.
It is extremely high performance enough to be used at the restoration level, but it is very heavy.
{
"id": "d3268a79-1642-49b7-abca-afe8eabefcbf",
"revision": 0,
"last_node_id": 6,
"last_link_id": 4,
"nodes": [
{
"id": 2,
"type": "VHS_LoadVideo",
"pos": [
663.323141360561,
634.7620900749006
],
"size": [
253.279296875,
628.3644045064377
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
1
]
},
{
"name": "frame_count",
"type": "INT",
"links": null
},
{
"name": "audio",
"type": "AUDIO",
"links": null
},
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"links": [
3
]
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "6e7f63867584bb1fb4944d36172e7f98436da9a1",
"Node name for S&R": "VHS_LoadVideo"
},
"widgets_values": {
"video": "7.mp4",
"force_rate": 0,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 0,
"skip_first_frames": 0,
"select_every_nth": 1,
"format": "AnimateDiff",
"choose video to upload": "image",
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "7.mp4",
"type": "input",
"format": "video/mp4",
"force_rate": 0,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 0,
"skip_first_frames": 0,
"select_every_nth": 1
}
}
}
},
{
"id": 4,
"type": "VHS_VideoInfoLoaded",
"pos": [
992.7530493528476,
924.9067122404671
],
"size": [
247.837890625,
106
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"link": 3
}
],
"outputs": [
{
"name": "fps🟦",
"type": "FLOAT",
"links": [
4
]
},
{
"name": "frame_count🟦",
"type": "INT",
"links": null
},
{
"name": "duration🟦",
"type": "FLOAT",
"links": null
},
{
"name": "width🟦",
"type": "INT",
"links": null
},
{
"name": "height🟦",
"type": "INT",
"links": null
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "6e7f63867584bb1fb4944d36172e7f98436da9a1",
"Node name for S&R": "VHS_VideoInfoLoaded"
},
"widgets_values": {}
},
{
"id": 3,
"type": "VHS_VideoCombine",
"pos": [
1323.428325432686,
634.7620900749006
],
"size": [
376.3275432341816,
812.7750563924108
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 2
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 4
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "6e7f63867584bb1fb4944d36172e7f98436da9a1",
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 8,
"loop_count": 0,
"filename_prefix": "FlashVSR",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "FlashVSR_00001.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "FlashVSR_00001.png",
"fullpath": "D:\\AI\\ComfyUI_windows_portable\\ComfyUI\\output\\FlashVSR_00001.mp4"
}
}
}
},
{
"id": 1,
"type": "FlashVSRNode",
"pos": [
986.0897619994128,
634.7620900749006
],
"size": [
259.5867768595042,
226
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "frames",
"type": "IMAGE",
"link": 1
}
],
"outputs": [
{
"name": "image",
"type": "IMAGE",
"links": [
2
]
}
],
"properties": {
"aux_id": "lihaoyun6/ComfyUI-FlashVSR_Ultra_Fast",
"ver": "059b725cde725fde1d367a40fe5fead9c0a751bd",
"Node name for S&R": "FlashVSRNode"
},
"widgets_values": [
"FlashVSR-v1.1",
"tiny",
2,
true,
true,
256,
1234,
"fixed"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
1,
2,
0,
1,
0,
"IMAGE"
],
[
2,
1,
0,
3,
0,
"IMAGE"
],
[
3,
2,
3,
4,
0,
"VHS_VIDEOINFO"
],
[
4,
4,
0,
3,
4,
"FLOAT"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.693433494944134,
"offset": [
136.176777994939,
-331.11780271126634
]
},
"frontendVersion": "1.34.3",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
It processes multiple frames together to suppress temporal blur and flickering.
It is designed to achieve processing speeds close to real-time, and is fast and lightweight, so it is good to try this one for now.