OpenVibe.Live/Docs
Source on GitHub

System Architecture#

Overview#

OpenVibe.Live is a self-hosted live streaming platform built on:

Authentication#

Authentication is provided by the OpenVibe SSO (openvibe.tools):

Streaming Protocols#

WebRTC#

Browser → mediasoup Router → mediasoup Consumers → Viewers
         ↓
    MediaRecorder → chunk uploads → server concat → WebM VOD

RTMP#

OBS → Node-Media-Server → HLS/HTTP-FLV → Viewers
                        ↓
                  FFmpeg capture → WebM VOD

JSMPEG#

FFmpeg → WebSocket → JSMPEG Relay → Canvas viewers
                   ↓
             FFmpeg stdin pipe → WebM VOD

Data Flow#

Chat#

Client WS → chat-server.js → SQLite (saveChatMessage)
                            → broadcast to room (stream/global)
                            → forward to global if stream chat

VOD Recording#

Stream data → FFmpeg/MediaRecorder → raw WebM file
            → periodic remux (60s) → .seekable.webm sidecar (live DVR)
            → stream end → finalizeVodRecording:
                1. Merge pending segments
                2. Remux for seeking (ffmpeg -c copy)
                3. ffprobe duration
                4. Auto-delete if < 10s
                5. Generate thumbnail

Thumbnails#

Live: Browser canvas capture → POST /thumbnails/live/:id (115s throttle)
      RTMP: HTTP-FLV frame extract (120s throttle)
      JSMPEG: WS relay frame extract (120s throttle)
VOD/Clip: ffmpeg -vframes 1 (deduped per entity)

Key Server Modules#

ModulePathPurpose
Main serverserver/index.jsExpress setup, route mounting
Chat serverserver/chat/chat-server.jsWebSocket chat, moderation
Chat routesserver/chat/routes.jsREST API for chat history, logs, purge
Stream routesserver/streaming/routes.jsStream CRUD, signaling
VOD routesserver/vod/routes.jsVOD CRUD, chunk upload, finalization
Recorderserver/vod/recorder.jsServer-side FFmpeg recording
Thumbnailsserver/thumbnails/thumbnail-service.jsThumbnail generation and serving
Databaseserver/db/database.jsSQLite queries, schema
Authserver/auth/auth.jsJWT + API token verification

OpenVibe Integration#

OpenVibe.Live is part of the OpenVibe, with openvibe.tools acting as the SSO hub. This service now uses openvibe.tools OAuth2 SSO in production; legacy migration scripts remain for historical reference only. The openvibe-tools server proxies admin API calls to OpenVibe.Live for unified management. No streaming features are duplicated — openvibe-tools is a gateway only.

This page is rendered from docs/architecture.md in the OpenVibe.Live repository. Found a mistake? Edit it there.