⭐ Star Slideshow Maker
Star Slideshow Maker — images in, video out, straight from the workflow
- image_1
- audio
- Filenames
- info
You've got a batch of images - a style test, a grid of variations, a storyboard - and you want them as a video with transitions, motion, and maybe music, without leaving ComfyUI. Star Slideshow Maker is a full slideshow encoder in one node: point it at image sockets or a folder, choose the aspect ratio and duration, pick transitions and pan/zoom effects, drop an audio track in, and it renders an H.264/H.265/VP9/AV1 video through FFmpeg.
How it works
The architectural nicety is that frames stream one at a time straight into FFmpeg, so a long slideshow doesn't balloon into a giant IMAGE tensor sitting in RAM. On the control side, the node separates concerns cleanly:
- Sources - connect
image_1,image_2, … (they grow dynamically) or setimage_folderto a folder of JPG/PNG/WebP relative to your input folder. Connected images are used first, then folder files. - Size and fit -
aspect_ratio(auto, or 16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9) andresolution(HD = 1280 long edge, Full HD = 1920).fit_modeofcontainletterboxes with the chosenbackground;covercenter-crops to fill. - Timing -
duration_modeoffixedusesfixed_duration;audiomatches the length of the connected audio. Thentiming_mode:seconds_per_imagerepeats the sequence at a fixed length until the total fills, orsplit_total_durationdivides the total equally. - Transitions and motion - 14 transitions (fade, morph, slides, wipes, zoom, pixelate, random) plus 8 motion effects (zoom/pan variants, random), with
seedcontrolling the "random" picks so you can reproduce a given look. - Encoding -
format,preset,quality, and the sametarget_size_mbtwo-pass trick as Star Video Compressor for hitting an exact file size.
save_audio muxes the audio input into the video. Outputs are Filenames (STAR_FILENAMES) and info (STRING), plus an inline preview.
Installing
Part of StarNodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart, search star under ⭐StarNodes/Video. ComfyUI Manager users: search "Starnodes". FFmpeg comes via the pack's imageio-ffmpeg dependency.
Gotchas
Transitions are clamped so they can't eat the whole segment, but if you set seconds_per_image to 1 with a 1-second transition you'll basically get a fade-through - keep per-image time well above transition time. For mixed-aspect inputs, cover crops (safe for a consistent fill) while contain letterboxes (safe for showing everything); pick deliberately. And the "random" transitions seed behavior is worth knowing: seed 0 re-rolls every run, any other value reproduces the same picks - perfect for locking a look you like, easy to forget if you want variety.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| image_folder | STRING | Optional folder of JPG/JPEG, PNG, or WebP images. Relative paths resolve from the ComfyUI input folder. | |
| aspect_ratio | COMBO | auto | Output frame aspect ratio. 'auto' picks the listed ratio closest to the first image. |
| resolution | COMBO | Full HD | Long-edge pixel size of the output frame: HD = 1280, Full HD = 1920. |
| duration_mode | COMBO | fixed | 'fixed' uses fixed_duration. 'audio' matches the duration of the connected AUDIO input. |
| fixed_duration | FLOAT | 10.000.25–86400 | Total slideshow length in seconds. Only used when duration_mode is 'fixed'. |
| timing_mode | COMBO | seconds_per_image | 'seconds_per_image' repeats the image sequence at a fixed length per image until the total duration is filled. 'split_total_duration' divides the total duration equally among all images. |
| seconds_per_image | FLOAT | 3.000.1–3600 | Seconds each image is shown. Only used when timing_mode is 'seconds_per_image'. |
| transition | COMBO | fade | Effect used to blend from one image to the next. 'random' picks a different transition for each image (see seed). |
| transition_duration | FLOAT | 1.000–10 | Length of the transition in seconds, clamped so it cannot consume almost the whole image segment. |
| motion_effect | COMBO | none | Pan/zoom effect applied while each image is shown. 'random' picks a different effect for each image (see seed). |
| seed | INT | 00–18446744073709550000 | Used when transition or motion_effect is 'random' to pick a different effect per image. 0 re-rolls a new random pick every run; any other value reproduces the same random picks. |
| fit_mode | COMBO | contain | 'contain' fits the whole image inside the frame (letterboxed with background). 'cover' fills the frame and center-crops overflow. |
| background | COMBO | black | Letterbox color used around images when fit_mode is 'contain'. |
| frame_rate | FLOAT | 30.001–120 | Output video frame rate in frames per second. |
| quality | INT | 600–100 | Compression quality. Ignored when target_size_mb is greater than 0. |
| format | COMBO | video/h264-mp4 | Output video codec/container. Available options depend on the encoders built into your FFmpeg. |
| preset | COMBO | medium | Encoder speed vs. efficiency. Slower presets usually give a smaller file at the same quality. |
| filename_prefix | STRING | StarSlideshow | Output file name, optionally including subfolders (e.g. 'subfolder/name'). |
| target_size_mb | FLOAT | 0.00–1000000 | Desired output size in MiB. 0 = use the quality slider. When greater than 0, target size wins and uses two-pass encoding where supported. |
| save_audio | BOOLEAN | true | Mux the connected AUDIO input into the output video. |
| save_output | BOOLEAN | true | True = ComfyUI output folder, False = temp folder. |
| image_1opt | IMAGE | Optional first image. Connect more image_N sockets; they are used before folder files. | |
| audioopt | AUDIO | Optional audio. It can set the slideshow duration and is muxed into the output when save_audio is enabled. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| Filenames | STAR_FILENAMES | — |
| info | STRING | — |