skip to content
szczecin 53.43N 14.55E ./start-project

ReelsMagician: a long video in, a vertical reel out

(ai, video, c#, windows, open-source) 3 min read by Bartosz Pachołek

A Windows app, coming soon, that turns a long video into a vertical reel with word-highlighted captions. Every step runs on your own PC.

ReelsMagician is a Windows desktop app that turns a long video into a vertical 1080×1920 reel. Give it an MP4 or a YouTube link and it transcribes the speech, picks the strongest stretch, keeps the speaker in frame and burns in captions with each word highlighted as it is spoken. Every step runs on your own PC.

It is close to a proper release. An early 0.1 is already on GitHub for anyone happy to build it from source.

From a long video to a reel

  1. Source. Open a local file, or paste a link. YouTube videos are downloaded with yt-dlp at up to 4K.
  2. Transcribe. If the video comes with subtitles in the language actually spoken, those are used; a machine-translated track never is. Otherwise Whisper transcribes it with a timing for every word.
  3. Review. Every caption line sits in an editable table. Fixing a typo keeps the timing of the words around it, so the highlight stays in sync.
  4. Analyse. A local Qwen model scores whole paragraphs, never isolated words, against the topic of the video, and proposes several complete reels of the length you asked for. Each is built to open on a hook and end on a finished thought.
  5. Frame. The vertical crop follows a face first, then a whole person, and when there is no one on screen, the most visually active part of the picture. A product or a screen share stays centred too.
  6. Caption and render. Pick a caption preset, adjust it, preview it on a real frame, and render H.264 with the sound normalised to −14 LUFS.

The details that took the longest

Most of the work went into things a viewer would only notice if they were wrong.

The picture is never stretched. The crop window is the largest whole multiple of 9×16 that fits the source, 1215×2160 from a 4K video, so scaling it to 1080×1920 is uniform by construction. Only cropping and uniform scaling ever touch the image.

Cuts do not push the sound out of sync. Clips are joined with a 100 ms dissolve. ffmpeg's xfade filter takes its overlap out of the timeline, so fading only the picture would move the audio 100 ms later on every cut. The audio is crossfaded by exactly the same amount, which keeps sound and picture locked.

The caption does not jitter. Making the spoken word wider pushes the rest of a centred line sideways. Measured on rendered frames, the first approach moved the other words by 19 px for every word. ReelsMagician grows the spoken word only vertically, which moves them by 0 px, and a rendering test checks this on every preset.

Lines stay up long enough to read. No line is on screen for less than 0.8 seconds. When a line would be too short to read, it is joined to a neighbour instead, and every word keeps its own timing.

Nothing leaves your computer

Speech is transcribed with whisper.cpp and the analysis runs on llama.cpp, both on your own hardware. llama.cpp uses CUDA on an NVIDIA card and Vulkan on other GPUs. The app goes online only to download its tools, its models and the video you point it at. Nothing you load is uploaded anywhere.

On first run it fetches its tools and models, ffmpeg, yt-dlp, whisper.cpp, llama.cpp, Whisper and Qwen among them, from their original publishers into its own folder: about 7 GB in all. It needs no admin rights and adds nothing to your PATH. A GPU is strongly recommended for the analysis step.

When

Version 0.1 is out now as an unstable preview: source only, built with the .NET 10 SDK, under the BSD 3-Clause license. Expect rough edges, and expect settings to change between versions. A proper release will follow once it has been tested on more machines.