ES Video Transfer Extra
EbSynth, but you get to pick the optical flow — ES Video Transfer Extra
- source_video
- style_images
- source_mask
- source_edge
- result_video
- error_video
- flow_video
ES Video Transfer Extra is ES Video Transfer with the training wheels off. Same video style-transfer core - you feed stylized keyframes, it propagates the look through the whole clip - but where the plain node gives you one optical flow option (RAFT, with sintel/kitti weights already bundled), this one lets you swap the whole flow architecture and even feed in your own edge maps. It's the node you graduate to when fast, messy footage is smudging and you want to know why.
The three things it adds
flow_arch - pick the optical flow model family: RAFT, EF_RAFT (a lighter, faster rework of RAFT), or FLOW_DIFF (a diffusion-based flow estimator). flow_model then picks the checkpoint within that family - the list reflects it: RAFT_sintel, RAFT_kitti, EfRAFT_25000_ours-sintel, EfRAFT_ours_sintel, EfRAFT_ours-things, FLOWDIFF_FlowDiffuser-things. Flow quality feeds the two motion guides, warp_weight (how hard style images are warped along the flow) and pos_weight (how hard the warped position guides pull).
source_edge - an optional IMAGE input. If you give it an edge map (from any preprocessor you like - Canny, a ControlNet edge node, whatever), it uses yours and ignores edge_method entirely; edge_weight still controls how strongly it pulls. This is the escape hatch when the built-in physics-based edge detector isn't giving you the structure you want.
return_flow + the third output - flip return_flow on and the node emits flow_video, a visualization of the optical flow it computed. It's a debugging gift: if the flow looks chaotic around fast motion, that's your smudging explained. The other two outputs are the same result_video and error_video as the base node.
The catch: which models ship
Only the RAFT weights are bundled. EF-RAFT and FlowDiffuser checkpoints are not - you download them and drop them into ezsynth/utils/flow_utils/ef_raft_models/ and .../flow_diffusion_models/ (the Ezsynth README points to the original repos). FlowDiffuser additionally needs pip install timm, pulls ~470MB of twin transformer models on first run, and wants serious VRAM - the author quotes ~15GB and notes it may throw a non-fatal CUDNN_BACKEND_EXECUTION_PLAN_DESCRIPTOR error while running ~3x slower. That's not a bug you need to fix; it's FlowDiffuser being heavy.
Should you bother?
Honestly, for most clips: no. The base ES Video Transfer's RAFT is good, the defaults work, and the setup cost is zero. Reach for Extra when you have a specific problem - motion that's too fast for RAFT, or you want the flow visualization to see why a section looks bad. And if your footage has clear edges that matter, feeding source_edge can be a bigger win than swapping flow models. All the other inputs - style_idxes, edge_method, only_mode, masking, weights, the EbSynth generation params - behave identically to the base node, so your existing workflow carries over unchanged.
Install is the same pack: ComfyUI Manager, or git clone --recurse-submodules https://github.com/FuouM/ComfyUI-EbSynth.git + pip install -r requirements.txt. Same submodule warning, same Linux ebsynth.so build requirement, same Windows plug-and-play.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| source_video | IMAGE | — | |
| style_images | IMAGE | — | |
| style_idxes | STRING | 0 | — |
| edge_method | COMBO | Classic | 3 options: PAGE, PST, Classic |
| flow_arch | COMBO | RAFT | 3 options: RAFT, EF_RAFT, FLOW_DIFF |
| flow_model | COMBO | sintel | 6 options: RAFT_sintel, RAFT_kitti, EfRAFT_25000_ours-sintel, EfRAFT_ours_sintel, EfRAFT_ours-things, FLOWDIFF_FlowDiffuser-things |
| only_mode | COMBO | none | 3 options: forward, reverse, none |
| return_flow | BOOLEAN | false | — |
| do_mask | BOOLEAN | false | — |
| pre_mask | BOOLEAN | false | — |
| feather | INT | 5 | — |
| style_weight | FLOAT | 6.00 | — |
| edge_weight | FLOAT | 1.00 | — |
| warp_weight | FLOAT | 0.50 | — |
| pos_weight | FLOAT | 2.00 | — |
| uniformity | FLOAT | 3500.00500–15000 | — |
| patch_size | INT | 5 | — |
| pyramid_levels | INT | 6 | — |
| search_vote_iters | INT | 12 | — |
| patch_match_iters | INT | 6 | — |
| extra_pass_3x3 | BOOLEAN | true | — |
| use_gpu_hist_blend | BOOLEAN | false | — |
| use_lsqr | BOOLEAN | true | — |
| use_poisson_cupy | BOOLEAN | false | — |
| poisson_maxiter | INT | 0 | — |
| source_maskopt | IMAGE | — | |
| source_edgeopt | IMAGE | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| result_video | IMAGE | — |
| error_video | IMAGE | — |
| flow_video | IMAGE | — |