reels-app/README.md
Sebastjan Artič 30b969e4b8 Initial: reels clipper app
- FastAPI backend (auth, jobs, SSE, download)
- Frontend: drag&drop + YouTube URL + jobs panel
- Pipeline: yt_download → find_chorus → reframe → subtitle
- Modes: track (face follow), center, blur
- Whisper for SI/DE/EN subtitles
- Auto-chorus detection via Whisper + RMS energy
- Docker + Coolify ready
2026-04-28 15:28:22 +00:00

74 lines
2.0 KiB
Markdown

# Reels Clipper · biba.live
Self-hosted Opus Clip alternativa za FOLX TV / PTC.
Pretvori 16:9 video v 9:16 reels/shorts/tiktok format z auto face tracking, podnapisi (sl/de/en) in **avto-detekcijo refrena** v glasbenih pesmih.
## Features
- 📤 **Drag & drop upload** (do 2 GB)
- 📺 **YouTube URL paste** (yt-dlp)
- 🎯 **Smart reframe**: track (face follow), center, blur (za glasbo)
- 🎵 **Auto-chorus detection** (Whisper + energy hibrid)
- 📝 **Burned-in podnapisi** (faster-whisper, multi-jezik)
- 🎨 **3 stili podnapisov**: reels, yellow (MrBeast), minimal
- 🔐 **HTTP Basic Auth**
- 📊 **Real-time progress** (Server-Sent Events)
- 📦 **Docker / Coolify ready**
## Quick start (lokalno)
```bash
docker compose up --build
# odpri http://localhost:8000
```
Default login: `sebastjan` / nastavi `AUTH_PASS` v `.env`.
## Coolify deploy
1. V Coolify ustvari nov projekt → **Docker Compose** iz tega repoja
2. Domena: `reels.biba.live`
3. Env vars:
```
AUTH_USER=sebastjan
AUTH_PASS=<močno geslo>
MAX_UPLOAD_MB=2000
```
4. Volume `reels_data` se ustvari avtomatsko
5. Deploy → Coolify postavi Traefik reverse proxy + SSL via Let's Encrypt
## Pipeline
```
Upload / YouTube
[ yt_download.py ] ← samo če YouTube
[ find_chorus.py ] ← samo če auto_chorus=true (Whisper + RMS analiza)
[ reframe.py ] ← 16:9 → 9:16 (track / center / blur)
[ subtitle.py ] ← Whisper transkripcija + burn-in
reel.mp4
```
## API
- `POST /api/upload` — multipart file upload, vrne `job_id`
- `POST /api/youtube` — JSON `{url, mode, lang, ...}`
- `POST /api/process` — start processing za uploaded job
- `GET /api/jobs` — list vseh
- `GET /api/jobs/{id}` — status
- `GET /api/stream/{id}` — SSE stream progress
- `GET /api/download/{id}` — final reel
- `DELETE /api/jobs/{id}` — pobriši
## Dependencies
- FFmpeg (system)
- faster-whisper (transkripcija)
- OpenCV (face detection)
- yt-dlp (YouTube)
- FastAPI + uvicorn (server)