Dev.to AI πŸ€– Ai πŸ‘ 0 πŸ“– 3 min read

I built a two-photo video generator for the Alors on danse keyboard meme

The first photo becomes the keyboard player. The second becomes the partner reacting alongside them. You can use two people, two pets, or one of each. That is the starting point for Alors on Danse AI, a small website I

I built a two-photo video generator for the Alors on danse keyboard meme

The first photo becomes the keyboard player. The second becomes the partner reacting alongside them. You can use two people, two pets, or one of each.

That is the starting point for Alors on Danse AI, a small website I built around the Stromae and Jamel Debbouze white-studio keyboard sketch. It makes one specific scene: a 16-second video with your chosen duo and the original audio.

I wanted the setup to be understandable before anyone uploaded a photo. The page has two slots, each labeled with a role. You do not need to write a prompt, find a template file, or install an editor.

One scene, two choices

The left/right distinction is a small UI detail that matters. β€œUpload two images” leaves a question unanswered: which subject does what?

The first slot is the keyboard player on the left. The second is the expressive partner on the right. Both roles are replaced. The studio, movement reference, duration, and soundtrack stay fixed.

That also sets a clear boundary for the product. It will not make a different dance, change the music, or turn into a general video editor. The useful choice here is who you put into the scene.

A dog on the keyboard

One public example uses a synthetic golden retriever photo for the keyboard player and a synthetic human portrait for the partner.

Still from the generated dog-and-human example

This is a still from the 16-second test example. That sample was generated at 480p; the standard paid output is 720p.

The examples page shows the two input photos beside the generated clip. It also includes the scene reference, labeled separately. I think seeing the inputs and result together is more useful than a polished clip with no explanation of where it came from.

Pets are the fun part, but also a good reminder of the limits. The scene asks them to perform upright, human-like gestures. Fur, paws, faces, and movement can change during generation. A recognizable subject in one frame does not guarantee an equally convincing result throughout the clip.

What happens behind the button

The app uses React and TanStack Start on Cloudflare Workers. D1 stores accounts, credits, and job state; R2 stores uploaded photos and finished videos.

The generation pipeline has two stages. Seedance 2.5 through KIE generates the video with audio generation turned off. A separate FAL step merges the fixed soundtrack into the result.

Separating those steps means the job is not finished just because the video model returned a file. The audio merge and storage still need to complete before there is an MP4 to download.

There is also the less exciting part of a paid generation app: repeated clicks, delayed callbacks, and uncertain provider responses. The backend tracks each request, checks provider results, and has a recovery job for tasks that need another look. A confirmed failed generation restores one video credit. An uncertain result stays under review rather than immediately triggering another paid generation.

Using it, and knowing what to expect

The user flow is short: sign in with Google, choose a video pack, upload one photo for each role, and generate. Progress and completed downloads appear in My videos.

The standard output is a 16-second, 720p, 16:9 landscape MP4. Packs are one-time purchases, starting at $12.99 for one video, without a subscription. There is no free generation trial; the public examples are available to watch before buying.

Clear, separate photos work best. Group shots and obscured faces make the role assignment harder. Use photos you have permission to upload.

Photos are retained for up to seven days and finished videos for 30 days, so download the MP4 if you want to keep it. The restored credit after a failed task is a generation credit, not a cash refund.

You can see the current version at alorsondanseaivideo.net. I would be interested in feedback on the two-role setup: is it obvious which photo goes where, and do the examples give you enough information to judge the result before paying?

πŸ“° Read the original article on Dev.to AI

Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β€” full credit and traffic to the original publisher.