Skip to content

v1.9.0 — Video Gallery

Choose a tag to compare

@pvollenweider pvollenweider released this 09 Jun 16:03
· 18 commits to main since this release
ae32bd6

Video Gallery

New gallery type for distributing long-form videos via adaptive HLS streaming with revocable token-based access.

Core features

  • HLS transcoding — auto remux (H.264/AAC, near-instant) or re-encode modes: creator_1080p (CRF 20, max 6 Mbps), creator_720p (CRF 19, max 3.5 Mbps), force_abr (3-quality ABR ladder)
  • Dedicated video worker — separate from the photo build worker, scales to zero at rest, CPU-limited, one transcode per pod
  • Token-protected HLS streaming — in-memory token cache eliminates per-segment DB queries for smooth playback
  • Enrollment flow — double opt-in email, nLPD-compliant, single-use confirm token, revocable per-person viewer tokens
  • Watch page — Video.js 8 + VHS, ±10s buttons, multi-video sidebar, keyboard shortcuts, quality selector for ABR streams
  • Thumbnails — per-video poster auto-extracted at frame 5s, gallery cover used in public project listing
  • Admin UI — 3-tab gallery detail (Videos / Access / Stats), upload with progress bar, drag-and-drop reorder, transcode mode selector with live ETA
  • View tracking — server-side events (play/pause/seek/heartbeat/ended), per-token and per-video stats, no third-party dependencies
  • Public galleries — video galleries with access=public appear in project listings with /watch/:slug links (no token required)
  • Enrollment email — on confirm, viewer receives email with clickable cover thumbnail and watch link

Bug fixes (since v1.8.0)

  • SMTP settings no longer clobbered when saving from unrelated settings pages (partial PATCH fix)
  • Video gallery build status set to done at creation — no longer queued for photo build pipeline
  • Photo worker skips video gallery jobs and triggers project prerender
  • Gallery cover served at /api/video-covers/:id (public route, no auth)
  • Enrollment re-submit re-sends watch link when already confirmed
  • Team page now allows email update for org members

Infrastructure

  • New Dockerfile.video-worker with FFmpeg
  • docker-compose.saas.yml includes video-worker service with CPU limits and dedicated PVC
  • DB migrations: 009_video_gallery.sql (4 tables), 010_video_transcode_progress.sql, 011_video_creator_modes.sql