sebastjan 49a80599e1 Word-level extension: lookback to capture full phrase before clip
Bug: Claude picked clip start at 78.19s (0.3s before segment 'tepe' at
78.4s). Word-level extension then found word 'me' (77.88-78.16s) right
before clip start, extended to 77.73s. But the FULL phrase was 'Žena me'
where 'Žena' [76.88-77.74] precedes 'me' [77.88-78.16] in the same
breath/speech burst (gap 0.14s, not a real pause).

Fix: when extending back via word-level, do a lookback through earlier
words. Stop only when finding a real pause (gap >= 0.5s between words).
This captures the entire connected phrase before clip start.

Now: clip start 78.19s → finds 'me' at 78.16s → looks back: 'Žena' at
77.74s (gap to 'me' = 0.14s, < 0.5s) → continue. Earlier 'verjet.' at
76.78s (gap to 'Žena' = 0.10s) → also captured if connected... actually
'verjet.' is part of previous verse, but anchor stops at next pause >= 0.5s.
For the Žena case, anchor will be at 'Žena' (or earlier if no big pause).

This makes the extension MUCH more robust for cases where multiple words
of the chorus opening fall in the previous transcript segment.
2026-04-29 16:52:44 +00:00
2026-04-28 15:28:22 +00:00
2026-04-28 15:28:22 +00:00
2026-04-28 15:28:22 +00:00
2026-04-28 15:28:22 +00:00

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)

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)
S
Description
Self-hosted Opus Clip alternative — reels.biba.live
Readme
3.3 MiB
Languages
Python 77.3%
HTML 22.4%
Dockerfile 0.3%