Backend · media processing
VideoGen Pro
A Flask application that combines browser-managed assets, Whisper transcription, background rendering, and live progress reporting.
StatusSingle-process prototype with explicit deployment limitations.
RenderingBackground thread
ProgressServer-Sent Events
TranscriptionWhisper
StateIn-memory
01 / Problem
Why this system exists
Media rendering is too slow for a request path and requires careful handling of uploads, session ownership, progress, and temporary assets.
02 / Architecture
How state moves
- 01Browser upload
- 02Flask session
- 03Whisper
- 04Background render
- 05FFmpeg encoding
- 06In-memory progress
- 07SSE update
03 / Decisions
Engineering choices
- Move rendering out of the request path into background work.
- Use Server-Sent Events for one-way progress updates.
- Associate temporary assets with the initiating session.
- Use unique temporary paths to reduce cross-job collisions.
04 / Boundaries
What this does not claim
- In-memory job state limits the app to one process.
- A durable queue and shared state store are required for horizontal scaling.
- This is a prototype, not a production media service.