FastAPI backend for the Udder AI video montage service. Accepts a video upload, uses OpenAI and Google Gemini to identify the best clips, and returns timestamped clip data for the client to assemble.
- Client uploads a video file
- API extracts audio and transcribes it
- OpenAI/Gemini analyses the transcript and video to identify compelling clip segments
- Returns clip list (start/end times, reason for inclusion) to the client
- Client assembles the final montage (browser uses ffmpeg.wasm, desktop uses ffmpeg)
- FastAPI + uvicorn
- OpenAI API — clip selection analysis
- Google Gemini — secondary analysis model
- ffmpeg — server-side audio extraction
- Docker + DigitalOcean App Platform
pip install -r requirements.txt
# Requires: OPENAI_API_KEY, GEMINI_API_KEY in .env
uvicorn app.server:app --reloadOr with Docker:
docker build -t udder-app .
docker run -p 8000:8000 udder-app- udder — React web frontend
- udder-demo — PyQt6 desktop client