{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreic4soa3qt34onjn36u63khqksoggnextsxuv7apmnvchsyoklroqy",
"uri": "at://did:plc:pgryn3ephfd2xgft23qokfzt/app.bsky.feed.post/3mlgdfmb2aw32"
},
"path": "/t/1st-movie-clip/175306?page=2#post_22",
"publishedAt": "2026-05-09T13:02:55.000Z",
"site": "https://discuss.huggingface.co",
"tags": [
"ReActor discussion: frame skipping/cutting on head turns",
"ReActor issue: frames without detectable face",
"ReActor FaceSwapOpt docs: “Cannot detect any Target, skipping swapping…”",
"VHS Batch Manager docs",
"VideoHelperSuite issue: MetaBatch + Video Combine 0-byte output",
"VideoHelperSuite issue: RIFE + MetaBatch drops one frame per batch",
"VHS Load Video docs",
"ComfyUI-VideoHelperSuite repository",
"VideoHelperSuite issue: preview/output mismatch with skip/select",
"VideoHelperSuite Load Image Sequence docs in repo",
"RunComfy VideoHelperSuite guide",
"VHS Load Images docs",
"ReActor FaceSwapOpt error explanation",
"ComfyUI-VideoHelperSuite Load Image Sequence",
"ReActor FaceSwapOpt docs",
"RIFE + MetaBatch drops one frame per batch",
"ReActor issue: one or two frames without detectable face can break video processing",
"ReActor FaceSwapOpt docs: target detection failure / “skipping swapping”",
"ComfyUI-ReActor repository"
],
"textContent": "Hmm… I can’t recommend YouTube for anything other than “learning cases where a model answer exists” or entertainment…\nWhat you do in ComfyUI is essentially no different from programming—except you don’t write code. It’s a process of selecting components and assembling a workflow. That means “looking for a model answer is a waste of time unless it’s a very basic sample.”\nThere’s probably no model answer out there that covers every possible combination. At least, it’s unlikely to be available for free…\n\nSo, let’s look for “building blocks” in a conceptual sense from the very beginning. When improving your ComfyUI workflow, you’ll often have no choice but to use search engines or generative AI, borrow good parts from someone else’s workflow, or think for yourself and proceed through trial and error… That’s why I don’t think dealing with issues that arise in ComfyUI is easy for beginners…”\n\n* * *\n\n# Best path for this case: frame-safe repair, not direct video-in/video-out\n\n## Short answer\n\nFor this specific case, I would **not** keep trying to fix the current direct video workflow by adding random batch nodes.\n\nThe safer path is:\n\n\n Wan output video\n -> extract numbered frames\n -> run ReActor on image frames\n -> save repaired frames\n -> keep original frames where ReActor fails\n -> rebuild video from a complete frame folder\n -> only later add RIFE/interpolation if needed\n\n\nThe main reason: your symptom sounds like a **frame-continuity problem** , not just an FPS problem.\n\nA jerk around one random point — often near the start, around frame 8 — can mean:\n\n * one frame is actually missing,\n * one frame is duplicated,\n * one frame is out of order,\n * one frame exists but ReActor visually failed on the face,\n * the video loader selected a different frame than expected,\n * the video export/recombine step changed timing,\n * or interpolation/batching created a boundary problem.\n\n\n\nSo the immediate goal should not be “make the final video nicer.” The immediate goal should be:\n\n\n Find out exactly what happened to frame_00008.\n\n\nThat is why the best workflow is a **numbered-frame workflow**.\n\n* * *\n\n## Why I think this is the best path\n\nThere is a very close ReActor case where video face swap works while the subject faces the camera, but starts **skipping/cutting frames when the subject turns their head**. The practical recommendation there is to split the video into frames/images, do face swap as a batch process, then reconstruct the video from frames: ReActor discussion: frame skipping/cutting on head turns.\n\nThere is also a ReActor issue where even **one or two frames without a detectable face** can break video processing: ReActor issue: frames without detectable face.\n\nThat matters because in AI-generated video, “no detectable face” does not necessarily mean the face is absent to a human viewer. It can mean the detector temporarily struggles because the face is:\n\n * too small,\n * too blurred,\n * too turned away,\n * partly hidden,\n * too distorted by generation artifacts,\n * near the image edge,\n * low contrast,\n * confused with another face-like object,\n * or changing too quickly.\n\n\n\nReActor also has a documented failure mode where it says it cannot detect the target face and skips swapping: ReActor FaceSwapOpt docs: “Cannot detect any Target, skipping swapping…”.\n\nSo the safest design is:\n\n\n If ReActor succeeds:\n use the ReActor frame.\n\n If ReActor fails:\n keep the original frame.\n\n Never let a failed ReActor frame disappear from the final timeline.\n\n\nThis preserves motion continuity.\n\nA one-frame face flicker is usually less damaging than a missing motion frame.\n\n* * *\n\n# What is probably happening\n\nYour tests all show a jerk, and the jerk appears somewhat random. That suggests the problem is probably in a shared part of the workflow:\n\n\n Load Video / Load Frames\n -> ReActor\n -> Save / Combine\n\n\nnot only in:\n\n\n 24 frames vs 36 frames vs 48 frames\n\n\nThe 24/36/48-frame tests were useful because they asked:\n\n\n Does the failure only happen when the clip section is too long?\n\n\nYour result seems to say:\n\n\n No. The jerk appears in all tests.\n\n\nSo I would stop thinking “maybe I need the right batch node” and start thinking:\n\n\n Which stage breaks the frame sequence?\n\n\nFrame sequence means:\n\n\n input frame_00001 -> output frame_00001\n input frame_00002 -> output frame_00002\n input frame_00003 -> output frame_00003\n ...\n input frame_00072 -> output frame_00072\n\n\nIf one frame is missing, duplicated, bad, or out of order, the video will jerk.\n\n* * *\n\n# A “jerk” is not always a missing frame\n\nThis distinction is important.\n\nWhen you watch the output, it may look like a missing frame. But it could be several different technical problems.\n\nWhat you see | What may actually be happening\n---|---\nSudden jump forward | A frame was dropped\nTiny freeze, then jump | A frame was duplicated\nWobble / backward-forward twitch | Frames are out of order\nFace pops for one instant | ReActor failed visually on that frame\nPreview looks okay but final output jerks | Loader/output mismatch\nOnly happens after interpolation | RIFE/VFI or batch-boundary issue\nAlready present before ReActor | Source generation issue\n\nSo the key diagnostic question is not:\n\n\n Why does the video jerk?\n\n\nThe better question is:\n\n\n What exactly happened to frame_00008?\n\n\n* * *\n\n# Why I would not start with MetaBatch\n\nMetaBatch is useful later, but it is not the first tool I would introduce.\n\nA Meta Batch Manager is intended to break large video jobs into smaller sections, often to make long videos more manageable: VHS Batch Manager docs.\n\nBut MetaBatch adds another hidden layer. If something goes wrong, you now have to ask:\n\n\n Was it the loader?\n Was it ReActor?\n Was it MetaBatch?\n Was it Video Combine?\n Was it RIFE?\n Was it a batch boundary?\n Was it the final video encode?\n\n\nThere is also a VideoHelperSuite issue where a user got MetaBatch processing working, but `Video Combine` produced broken 0-byte videos; the workaround was to save frames and stitch/rebuild afterward: VideoHelperSuite issue: MetaBatch + Video Combine 0-byte output.\n\nSo my recommendation is:\n\n\n Manual image-frame batching first.\n MetaBatch later.\n\n\nManual batching means:\n\n\n Run frames 1–24.\n Then run frames 25–48.\n Then run frames 49–72.\n\n\nIt is less elegant, but much easier to understand and debug.\n\n* * *\n\n# Why I would not add RIFE yet\n\nRIFE / VFI should be a **polish step** , not a repair step.\n\nThere is a VideoHelperSuite issue where `RIFE VFI + VHS MetaBatch` causes the output to become shorter because one frame is lost per batch when the last frame of one batch is not passed into the next batch: VideoHelperSuite issue: RIFE + MetaBatch drops one frame per batch.\n\nSo if you add RIFE now, you could accidentally stack two problems:\n\n\n ReActor may fail on a difficult face frame.\n RIFE/MetaBatch may also create a boundary-frame problem.\n\n\nThat makes debugging much harder.\n\nThe safe order is:\n\n\n 1. Prove the raw source frames are stable.\n 2. Prove ReActor output frames are complete.\n 3. Prove the rebuilt video is smooth.\n 4. Only then add RIFE.\n\n\nNot:\n\n\n Load Video -> ReActor -> RIFE -> MetaBatch -> Video Combine\n\n\nThat all-in-one graph is too hard to debug for this problem.\n\n* * *\n\n# Why I would avoid direct video-in/video-out ReActor for now\n\nThe tempting workflow is:\n\n\n Load Video\n -> ReActor\n -> Video Combine\n\n\nIt is simple, but it hides the evidence.\n\nIf the result jerks, you do not know whether the failure happened in:\n\n * `Load Video`,\n * ReActor,\n * `Video Combine`,\n * output encoding,\n * the video player,\n * or an interpolation/batch stage.\n\n\n\nVideoHelperSuite’s `Load Video` settings can directly alter the frame sequence. Public docs describe controls such as `frame_load_cap`, `skip_first_frames`, and `select_every_nth`: VHS Load Video docs.\n\nVideoHelperSuite’s repository also explains that `frame_load_cap` is the maximum returned frame count, `skip_first_frames` skips frames, and `select_every_nth` skips between returned frames: ComfyUI-VideoHelperSuite repository.\n\nThere is also a reported preview/output mismatch involving `select_every_nth` and `skip_first_frames`: VideoHelperSuite issue: preview/output mismatch with skip/select.\n\nSo while debugging, the safest approach is:\n\n\n Avoid clever video-loader settings.\n Avoid direct video-to-video repair.\n Use numbered frames instead.\n\n\n* * *\n\n# Best workflow for this case\n\nUse **three or four small workflows** , not one giant graph.\n\n\n Workflow 1: extract frames\n Workflow 2: repair frames\n Workflow 3: assemble final frames with fallback\n Workflow 4: rebuild video\n\n\nThis is much easier to understand and much safer.\n\n* * *\n\n# Workflow 1 — Extract video to numbered frames\n\n## Purpose\n\nTurn the source video into visible, countable image frames.\n\nYou want a folder like:\n\n\n 01_raw_frames/\n frame_00001.png\n frame_00002.png\n frame_00003.png\n ...\n frame_00072.png\n\n\nFor example, if the clip is 6 seconds at 12 FPS:\n\n\n 6 seconds × 12 FPS = 72 frames\n\n\nSo you should expect:\n\n\n frame_00001.png\n ...\n frame_00072.png\n\n\n## Beginner-safe ComfyUI graph\n\n\n [VHS Load Video]\n |\n v\n [Save Image]\n\n\n## Suggested settings\n\n\n force_rate = 0 or 12\n frame_load_cap = 0 or 72\n skip_first_frames = 0\n select_every_nth = 1\n\n\nMeaning:\n\nSetting | Plain meaning\n---|---\n`force_rate = 0 or 12` | Do not unexpectedly retime the clip\n`frame_load_cap = 0 or 72` | Load all frames, or exactly the expected count\n`skip_first_frames = 0` | Do not start later\n`select_every_nth = 1` | Use every frame\n\nAvoid during debugging:\n\n\n select_every_nth = 2\n select_every_nth = 3\n skip_first_frames > 0\n random force_rate values\n small frame_load_cap values\n RIFE\n MetaBatch\n\n\nThose are not “bad” forever, but they are bad while trying to diagnose a missing/jerky frame.\n\n* * *\n\n# Workflow 1 check\n\nAfter saving raw frames, inspect around the problem area:\n\n\n frame_00006.png\n frame_00007.png\n frame_00008.png\n frame_00009.png\n frame_00010.png\n frame_00011.png\n frame_00012.png\n\n\nAsk:\n\n\n Does the original clip already jerk here?\n\n\n## If yes\n\nThen ReActor is not the cause. The source generation already contains the motion problem.\n\nBest fix:\n\n * regenerate the shot,\n * shorten the shot,\n * reduce motion,\n * keep the face more visible,\n * avoid sudden head turns,\n * avoid strong motion blur,\n * use a steadier camera prompt,\n * or split the moment into two shots.\n\n\n\nFace swap can fix identity. It cannot reliably fix broken body/camera motion.\n\n## If no\n\nContinue to Workflow 2.\n\n* * *\n\n# Workflow 2 — Run ReActor on frames, not direct video\n\n## Purpose\n\nUse ReActor only to create **replacement frames**.\n\nDo not let ReActor directly control the final video timeline.\n\n## Beginner-safe graph\n\n\n [Load Reference Face Image]\n |\n v\n [ReActor Face Swap]\n ^\n |\n [VHS Load Images / Load Image Sequence]\n |\n v\n [Save Image]\n\n\nOutput folder:\n\n\n 02_reactor_frames/\n frame_00001.png\n frame_00002.png\n frame_00003.png\n ...\n\n\nLook for a node such as:\n\n\n VHS Load Images\n VHS Load Images Path\n VHS Load Image Sequence\n Load Images Path\n Load Image Sequence\n\n\nThe exact name can vary depending on the installed nodes.\n\nVideoHelperSuite supports loading image sequences and has controls such as `image_load_cap`, `skip_first_images`, and `select_every_nth`: VideoHelperSuite Load Image Sequence docs in repo, RunComfy VideoHelperSuite guide, VHS Load Images docs.\n\n## Suggested settings\n\n\n image_load_cap = 0\n skip_first_images = 0\n select_every_nth = 1\n\n\nMeaning:\n\nSetting | Plain meaning\n---|---\n`image_load_cap = 0` | Load all images\n`skip_first_images = 0` | Do not skip starting images\n`select_every_nth = 1` | Use every image\n\nDo **not** connect to `Video Combine` yet.\n\nFirst save the repaired frames as images.\n\n* * *\n\n# Workflow 2 check\n\nCompare the raw folder and ReActor folder.\n\nYou want:\n\n\n 01_raw_frames/frame_00001.png\n 02_reactor_frames/frame_00001.png\n\n 01_raw_frames/frame_00002.png\n 02_reactor_frames/frame_00002.png\n\n ...\n\n 01_raw_frames/frame_00072.png\n 02_reactor_frames/frame_00072.png\n\n\nNow inspect the suspected area:\n\n\n 02_reactor_frames/frame_00006.png\n 02_reactor_frames/frame_00007.png\n 02_reactor_frames/frame_00008.png\n 02_reactor_frames/frame_00009.png\n 02_reactor_frames/frame_00010.png\n\n\nAsk:\n\n\n Is frame_00008 missing?\n Is frame_00008 duplicated?\n Is frame_00008 present but visually wrong?\n Is the face smeared or blurred?\n Did ReActor swap the wrong face?\n Did ReActor skip the swap and leave it unchanged?\n\n\nIf ReActor logs show something like “Cannot detect any Target, skipping swapping…”, that points to a face-detection failure: ReActor FaceSwapOpt error explanation.\n\n* * *\n\n# Workflow 3 — Assemble final frames with fallback\n\nThis is the most important part.\n\n## Purpose\n\nPrevent ReActor failures from becoming missing timeline frames.\n\nCreate a third folder:\n\n\n 03_final_frames/\n\n\nFirst copy all original frames into it:\n\n\n 01_raw_frames/* -> 03_final_frames/\n\n\nNow `03_final_frames` already has every frame.\n\nThen copy only good ReActor frames over the matching originals:\n\n\n 02_reactor_frames/good frames -> 03_final_frames/\n\n\nSo if ReActor produced a good `frame_00008.png`, use it.\n\nIf ReActor failed on `frame_00008.png`, keep the original raw `frame_00008.png`.\n\n## Why this works\n\nBad final sequence:\n\n\n frame_00007\n frame_00009\n\n\nFrame 8 is missing. Motion jumps.\n\nGood final sequence:\n\n\n frame_00007\n frame_00008 original fallback\n frame_00009\n\n\nMotion stays continuous.\n\nThe face may briefly be less perfect, but the timeline does not break.\n\nThe rule is:\n\n\n Every final video frame number must exist.\n If ReActor fails, use the original frame.\n\n\nThis is the best practical protection against ReActor skipping/failing on difficult face frames.\n\n* * *\n\n# Workflow 4 — Rebuild the video\n\nOnce `03_final_frames` is complete, rebuild the video.\n\n## Beginner-safe graph\n\n\n [VHS Load Images / Load Image Sequence]\n |\n v\n [Video Combine]\n\n\n## Suggested settings\n\nUse the original FPS:\n\n\n frame_rate = 12\n\n\nif your source clip is 12 FPS.\n\nDo not use output FPS as a repair knob.\n\nChanging `Video Combine.frame_rate` changes how quickly the existing frames are played. It does not restore a missing upstream frame. The frame folder must already be correct before this step.\n\n* * *\n\n# Complete workflow overview\n\n\n [Workflow 1: Extract]\n Source video\n -> VHS Load Video\n -> Save Image\n -> 01_raw_frames\n\n [Workflow 2: Repair]\n 01_raw_frames\n -> VHS Load Images / Load Image Sequence\n -> ReActor\n -> Save Image\n -> 02_reactor_frames\n\n [Workflow 3: Fallback assembly]\n Copy 01_raw_frames to 03_final_frames.\n Copy only good ReActor frames over matching originals.\n Leave failed/missing ReActor frames as original frames.\n\n [Workflow 4: Rebuild]\n 03_final_frames\n -> VHS Load Images / Load Image Sequence\n -> Video Combine at original FPS\n -> final video\n\n\nThis is the best path because it directly protects against the actual problem: **one failed frame breaking the timeline**.\n\n* * *\n\n# How to introduce batching safely\n\nThere are many “batch” nodes in ComfyUI. For this problem, ignore most of them at first.\n\nYou do **not** need to start with:\n\n\n MetaBatch\n Batch Manager\n Image Batch to List\n Image List to Batch\n Repeat Image Batch\n Rebatch Images\n Latent batch nodes\n Queue batch\n\n\nAt this stage, the only batching you need is:\n\n\n Load a limited number of image frames.\n Run ReActor.\n Save those repaired frames.\n Then load the next group.\n\n\nThat is manual batching.\n\n* * *\n\n# Manual batching for a 72-frame clip\n\nIf your clip has 72 frames, split it into three chunks:\n\n\n Batch 1: frames 1–24\n Batch 2: frames 25–48\n Batch 3: frames 49–72\n\n\nUse the same Workflow 2 graph each time:\n\n\n [VHS Load Images / Load Image Sequence]\n |\n v\n [ReActor]\n |\n v\n [Save Image]\n\n\nOnly change the image-loader settings.\n\n## Batch 1\n\n\n image_load_cap = 24\n skip_first_images = 0\n select_every_nth = 1\n\n\nExpected:\n\n\n frames 1–24\n\n\n## Batch 2\n\n\n image_load_cap = 24\n skip_first_images = 24\n select_every_nth = 1\n\n\nExpected:\n\n\n frames 25–48\n\n\n## Batch 3\n\n\n image_load_cap = 24\n skip_first_images = 48\n select_every_nth = 1\n\n\nExpected:\n\n\n frames 49–72\n\n\nVideoHelperSuite’s image sequence docs explicitly support this idea: `image_load_cap` limits returned images, and incrementing `skip_first_images` by `image_load_cap` divides a long sequence into batches: ComfyUI-VideoHelperSuite Load Image Sequence.\n\n* * *\n\n# Why manual batching is better than advanced batch nodes right now\n\nManual batching gives clear control:\n\n\n I know which frames entered ReActor.\n I know which frames came out.\n I can inspect the output folder.\n I can keep originals where ReActor failed.\n\n\nAdvanced batching hides these details.\n\nRight now the problem is not:\n\n\n How do I automate everything?\n\n\nThe problem is:\n\n\n How do I stop one bad frame from breaking the timeline?\n\n\nManual batching plus fallback solves that.\n\n* * *\n\n# What to do if ReActor fails on frame 8\n\nSuppose you inspect:\n\n\n 02_reactor_frames/frame_00008.png\n\n\nand it is missing or visually bad.\n\nDo this:\n\n\n Use 01_raw_frames/frame_00008.png in 03_final_frames.\n\n\nDo not drop frame 8.\n\nDo not duplicate frame 7 unless there is no better option.\n\nUse this fallback order:\n\n\n 1. Good ReActor frame\n 2. Manually repaired frame\n 3. Original raw frame\n 4. Duplicate previous/next frame only as last resort\n\n\nWhy original frame is usually better than duplicating:\n\nFallback | Result\n---|---\nOriginal frame | Motion stays correct; face may flicker briefly\nDuplicate previous frame | Motion freezes briefly\nDropped frame | Motion jumps\nBad ReActor frame | Face pops/smears\n\nFor your symptom, preserving motion continuity is the top priority.\n\n* * *\n\n# What to do if frame 8 is bad before ReActor\n\nIf the raw frames already show the jerk, then the best path is not ReActor repair.\n\nUse one of these:\n\n\n Regenerate the shot.\n Shorten the shot.\n Reduce motion.\n Cut before the bad motion.\n Use a second shot instead of one continuous shot.\n\n\nThis is often the better creative solution.\n\nIn film terms, a cut is normal. You do not need to force one continuous shot if the video model or repair pass cannot maintain it.\n\n* * *\n\n# What to do if ReActor output has all frames but the face pops\n\nThis means ReActor did not skip the frame; it produced a visually unstable face result.\n\nLikely causes:\n\n\n face turned too much\n face too small\n motion blur\n face partly hidden\n face detection changed\n wrong face index\n source/reference image not strong enough\n background face-like object confused the detector\n\n\nFixes:\n\n\n Use a clearer reference face.\n Use a more frontal reference.\n Use a few clean reference angles if your setup supports that.\n Make the generated shot easier: face visible, slow movement, no strong blur.\n Repair fewer frames.\n Leave impossible frames as original.\n\n\nReActor’s options/docs also matter when multiple faces or face-like objects appear. It can use face indexes, and target/source face detection can fail or select the wrong face if the frame is ambiguous: ReActor FaceSwapOpt docs.\n\nBeginner-safe rule:\n\n\n Use one clear target face in the shot while debugging.\n Avoid background faces, posters, reflections, and face-like artifacts.\n\n\n* * *\n\n# What to do if the rebuilt video jerks but frames look fine\n\nIf this is true:\n\n\n 03_final_frames looks smooth.\n The final video still jerks.\n\n\nThen the problem is probably in the rebuild/export stage.\n\nTry:\n\n\n Load final frames again.\n Use original FPS.\n Try a different Video Combine format.\n Avoid audio for now.\n Do not use RIFE yet.\n Extract the final video back to frames and compare.\n\n\nIf the final video extracted back to frames differs from `03_final_frames`, the combine/export stage changed something.\n\n* * *\n\n# When to add RIFE\n\nOnly add RIFE after this is true:\n\n\n 03_final_frames is complete.\n No frame numbers are missing.\n The rebuilt video is smooth without RIFE.\n\n\nThen RIFE can be used for smoothing.\n\nIf you later use RIFE with batching, be careful with overlap because public reports show RIFE + MetaBatch can lose a boundary frame per batch: RIFE + MetaBatch drops one frame per batch.\n\nSafe order:\n\n\n final_frames\n -> rebuild stable 12 FPS video\n -> optional RIFE\n -> final polished video\n\n\nNot:\n\n\n ReActor\n -> RIFE\n -> then try to debug missing frame\n\n\n* * *\n\n# When to add MetaBatch\n\nAdd MetaBatch only when:\n\n\n manual batching works\n you understand which frames are in each batch\n you can rebuild video from saved frames\n you need automation for longer clips\n\n\nDo not use it as the first batching solution.\n\nFor now:\n\n\n manual 24-frame batches\n\n\nare safer.\n\n* * *\n\n# Recommended folder structure\n\nUse clear folder names:\n\n\n movie_test_001/\n 01_source_video/\n source.mp4\n\n 02_raw_frames/\n frame_00001.png\n frame_00002.png\n ...\n\n 03_reactor_frames/\n frame_00001.png\n frame_00002.png\n ...\n\n 04_final_frames/\n frame_00001.png\n frame_00002.png\n ...\n\n 05_final_video/\n final_12fps.mp4\n\n\nIf using manual batches:\n\n\n movie_test_001/\n 03_reactor_batch_001/\n frame_00001.png\n ...\n frame_00024.png\n\n 03_reactor_batch_002/\n frame_00025.png\n ...\n frame_00048.png\n\n 03_reactor_batch_003/\n frame_00049.png\n ...\n frame_00072.png\n\n\nAvoid vague names:\n\n\n test\n test2\n fixed\n fixed_final\n new_fixed\n\n\nFrame debugging needs boring, exact folder names.\n\n* * *\n\n# Recommended settings\n\n## During diagnosis\n\nUse:\n\n\n force_rate = 0 or source FPS\n frame_load_cap = 0 or full expected count\n skip_first_frames = 0\n select_every_nth = 1\n\n image_load_cap = 0 or intended batch size\n skip_first_images = 0, 24, 48, etc.\n select_every_nth = 1\n\n Video Combine.frame_rate = source FPS\n\n RIFE = off\n MetaBatch = off\n\n\n## Avoid during diagnosis\n\nAvoid:\n\n\n select_every_nth > 1\n random force_rate values\n skip_first_frames > 0 unless deliberately extracting a known range\n RIFE\n MetaBatch\n direct ReActor video-in/video-out\n changing final FPS to hide the jerk\n\n\n* * *\n\n# Best path summary\n\n## Best path now\n\n\n video -> numbered frames -> ReActor image repair -> save frames -> fallback originals -> rebuild video\n\n\n## Best batching now\n\n\n manual 24-frame image batches\n\n\n## Best fallback\n\n\n if ReActor fails on a frame, keep the original frame\n\n\n## Best thing to avoid\n\n\n direct Load Video -> ReActor -> RIFE -> Video Combine\n\n\n## Best thing to inspect\n\n\n frame_00008 before ReActor\n frame_00008 after ReActor\n frame_00008 in final_frames\n frame_00008 after final video extraction\n\n\n* * *\n\n# Final recommendation\n\nBuild this:\n\n\n Workflow A:\n VHS Load Video\n -> Save Image\n\n\nThen:\n\n\n Workflow B:\n VHS Load Images / Load Image Sequence\n -> ReActor\n -> Save Image\n\n\nThen manually assemble:\n\n\n Workflow C:\n Copy raw frames into final_frames.\n Overwrite only with good ReActor frames.\n Leave failed ReActor frames as original frames.\n\n\nThen:\n\n\n Workflow D:\n VHS Load Images / Load Image Sequence\n -> Video Combine at 12 FPS\n\n\nOnly after that works, try:\n\n\n optional RIFE\n optional MetaBatch\n optional automation\n\n\nThis is the best path because it directly protects against the actual problem: **a single failed frame creating a timeline jerk**.\n\n* * *\n\n# Useful references\n\n * ReActor discussion: frame skipping/cutting on head turns\n * ReActor issue: one or two frames without detectable face can break video processing\n * ReActor FaceSwapOpt docs: target detection failure / “skipping swapping”\n * ComfyUI-ReActor repository\n * ComfyUI-VideoHelperSuite repository\n * VHS Load Video docs\n * VHS Load Images docs\n * RunComfy VideoHelperSuite guide\n * VideoHelperSuite issue: preview/output mismatch with skip/select\n * VideoHelperSuite issue: MetaBatch + Video Combine 0-byte output\n * VideoHelperSuite issue: RIFE + MetaBatch drops one frame per batch\n\n",
"title": "1st movie clip!"
}