Oct 30, 2026 · 4 min read

Three clips, one smooth loop

The loop below is three 5-second clips merged directly in the browser. The source clips are 24 fps, and each one turns the camera 120° in 5 s, so the motion is noticeably choppy. FILM, a cheap interpolator, filled in the missing frames and took the loop to 120 fps.

The 15.4 s loop. Left: the three clips merged, at the model's 24 fps. Right: the same loop after FILM ×5.

We made the loop for our Rift City reel. A futuristic flat is attached, capsule by capsule, to a rigid structure, and the camera stands at the center, turning 120° at a time through the living room, bedroom and kitchen. Muse's Generate Video node takes a first and last frame and fills in the frames between, so three room stills give three 5 s clips, one per turn.

For the next Rift City shot, we rebuilt the path to the beach in Blender to make the first and last stills agree.

Camera at the center of three capsule rooms Three capsules, living room, bedroom and kitchen, sit on a ring around a camera. The camera faces the living room and turns 120 degrees clockwise to the bedroom, one turn per 5 second clip. living room bedroom kitchen 120° camera 5 s per turn
The camera turns 120° per clip: living room, bedroom, kitchen, and back. Each turn is one 5 s clip.

The first and last frame plus a simple prompt gave clean results at 768p on MiniMax H3 Max Turbo. 1080p is fake 1080p: the model renders at 768p and upscales, and the joins between clips weren't clean. 768p, essentially half HD, was rock-solid and good enough for a phone screen.

Joining the clips could be done in FFmpeg. The real discovery was that Muse's Merge Video node does it in the browser, in real time, for free, with seamless joins: one 15.4 s loop. It's mind-blowing how far browsers have come.

The loop was still choppy. Each clip turns 120° in 5 s, which at the model's 24 fps is about 1° per frame. Interpolating with FFmpeg on the server was the first idea. On a MacBook Pro it took about two minutes and completely murdered a single core, so that idea quickly evaporated. Interpolators, models that generate the frames in between, are abundant and cheap: fal has at least four. I tested a few and settled on FILM.

FILM's key setting is how many frames to add. A target of 60 fps works, but unreliably, so we used a multiplier. ×3 gives 72 fps, which looked good enough at first but stutters on 60 Hz and 120 Hz screens and in 60 or 30 fps exports. ×5 gives 120 fps.

72 fps and 120 fps on a 60 Hz screen Over one twelfth of a second, a 60 Hz screen refreshes 5 times. At 72 fps each refresh shows the latest frame and one frame in six is never shown, so the steps are uneven. At 120 fps every second frame is shown, so the steps are even. 72 fps uneven 60 Hz 120 fps even skipped 0 1/12 s
Each 60 Hz refresh shows the newest frame. At 72 fps, one frame in six never shows, so the motion jumps. At 120 fps, every second frame shows and the steps stay even.

The loop added two things to Muse: the Merge Video node, and a Generate Video node that runs interpolators such as FILM and RIFE. Three clips go in; one smooth clip comes out.

The node chain in Muse Four nodes from top to bottom: three room stills; Generate Video three times on MiniMax at 768p and 24 fps; Merge Video in the browser into a 15.4 second loop; Generate Video running FILM five times to 120 fps. Merge Video and the FILM step are highlighted. Room stills ×3 Generate Video ×3 Merge Video Generate Video one per room MiniMax · 768p · 24 fps in the browser · 15.4 s FILM ×5 · 120 fps
The node chain in Muse. Highlighted: Merge Video, and Generate Video running FILM, the two additions this loop needed.