- 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
74 lines
2.0 KiB
Markdown
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)
|