LUXE PROMPTING

PROGRAMMATIC VIDEO WORKSHOP

Turn 3 Owned Stills Into a Repeatable Short Video

A useful short video can begin with images you already own. This workshop turns three stills into a simple 15-second vertical sequence using FFmpeg. The creative work is deciding what the viewer notices; the code makes the crop, movement and timing repeatable. Start with a quiet edit you can explain and inspect.

Leave Granola and get up to 12 months free of Wispr Flow Notetaker + Dictation

If you have paid time left on an individual Granola plan, we'll match it with a Wispr Flow subscription that includes Notetaker and dictation, and add bonus time, up to 12 months total. Sign in or create a Wispr account and submit proof of your plan to check eligibility.

The Short Version

  • Choose three owned or licensed stills that establish, reveal and resolve one idea.
  • At 30 frames per second, five seconds per image means 150 frames per clip.
  • Pan and zoom move across a flat image. They do not create a 3D scene or reveal hidden surfaces.

What the companion pilot actually produced

We ran a smaller six-second pilot using three original programmatic landscape illustrations: 360 by 640 pixels, 24 frames per second, 48 frames per image and a centered four-percent push. It is silent, uses hard cuts and begins with fitted images and borders. A separate full-decode check verified all 144 frames, dimensions and frame rate.

That pilot demonstrates the mechanics. The 15-second, 1080-by-1920 exercise below uses different settings and has not been rendered in this package. Use sufficiently detailed source images for that larger export.

1. Design the sequence before the movement

Choose a subject that benefits from three views: the whole object, one useful detail and the object in context. A handmade lamp could move from room view to material detail to its pool of light. Write one short sentence describing what each image contributes. If two images make the same point, replace one.

Set the output size before animating. For a vertical example, use 1080 by 1920 pixels. Crop a working copy of each still to that shape while protecting the subject and leaving room for captions. Filling the frame can remove important edges; fitting the whole image can leave borders. Make that editorial choice deliberately.

2. Give FFmpeg a small, explicit motion recipe

FFmpeg's zoompan filter exposes zoom, horizontal position, vertical position, duration, output size and frame rate. Start with a centered push from 1.00 to 1.06 across 150 output frames. In its expression language, a simple zoom expression is 1+0.06*on/149, where on counts the output frame. Keep fps at 30 and d at 150 for this five-second example.

Choose s=1080x1920 explicitly. The filter's defaults are not your delivery brief. Set a maximum output frame count of 150 when building each clip, and keep all three exports at the same dimensions, frame rate, codec and pixel format. H.264 with yuv420p is a practical starting export to check against your destination's requirements.

The small zoom is an exercise, not a universal setting. On a low-resolution source, it can expose softness; near an edge, it can cut off a hand or product label. Review the first, middle and final frame before repeating the move across the set.

3. Assemble clean cuts before adding effects

Render three matching clips and join them in the planned order. Begin with hard cuts: each image gets five seconds, so the sequence totals 15 seconds. Crossfades overlap time and change that arithmetic. FFmpeg's xfade also requires compatible resolution, pixel format, frame rate and time base, so add it only after the basic sequence behaves correctly.

Keep the first version silent. Music and narration add licensing, loudness and timing decisions that deserve their own pass. If captions carry the lesson, make sure they stay readable through the crop and do not depend on a platform interface leaving every edge unobstructed.

Verify the file, then watch the story

  • Use ffprobe with JSON output to inspect the actual dimensions, frame rate, stream details and duration.
  • Decode the complete file with FFmpeg to catch stream errors; do not treat a playable first frame as enough.
  • Watch all 15 seconds on the intended screen and check crop, timing, text and unwanted jitter. Metadata checks cannot judge those details.

Your next edit: change one decision

Build a silent three-image sequence, then make a second version with the middle shot held longer and the other two shortened to preserve 15 seconds. Compare which version explains the subject more clearly. Save the image order, crop positions, frame counts and export settings in a recipe so you can reproduce the decision rather than remembering a timeline by eye.

Source Desk

This is an original Luxe workflow tutorial using official FFmpeg documentation. The numerical settings are a reproducible exercise, not a claim of audience performance. FFmpeg builds and delivery requirements vary. Use images and audio within their actual reuse permissions.

FFmpeg: zoompan filter options and expressions

FFmpeg: xfade input compatibility requirements

FFprobe: machine-readable stream and format inspection

A clearer brief. A more useful result.

Privacy policy