Appearance
Introduction
ForgeVis is a high-performance RTSP video recorder and restreaming server. Record from IP cameras and restream to multiple clients using a single connection per camera.
Why ForgeVis?
- Efficient Architecture: Single connection per camera with broadcast distribution
- Fragmented MP4: Files playable while recording, streaming-optimized format
- RTSP Restreaming: Built-in RTSP server for distributing streams to clients
- Simple Configuration: YAML-based setup with minimal required settings
- No Transcoding by Default: video from the camera is recorded and served as is. Transcoding starts only when a viewer picks 720p over HLS
Key Features
Video Recording
- RTSP ingestion with automatic reconnect
- H.264 and H.265, AAC, G.711 and Opus audio
- Fragmented MP4 (fMP4) playable while recording, or plain MP4
- Configurable segment duration (default 900 seconds)
- Path templates with
%path,%Y,%m,%d,%H,%M,%Splaceholders - Hooks on segment creation and completion
- Archive cleanup by retention period
RTSP Restreaming
- Full RTSP protocol server (OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN)
- RTP over TCP (interleaved) and UDP
- H.264 (RFC 6184) and H.265 (RFC 7798) packetization
- Multiple clients per camera via broadcast
- URL format:
rtsp://localhost:8554/{camera_id}
Browser Viewing
- HLS and Low-Latency HLS:
http://localhost:8888/{camera_id}/index.m3u8 - Quality choice: source stream, substream and a 720p step on request (
variants.m3u8) - WebRTC (WHEP) with minimal latency
- MSE over WebSocket
Archive
- Playback of a recording from any moment: the server finds the right frame itself
- Export of a stretch and time-lapse, including from recordings spread across nodes
Substreams
- Main stream for full-quality recording
- Substream for video walls and slow connections
- URL format:
rtsp://localhost:8554/{camera_id}/sub
Cluster
- Several nodes, with cameras moved automatically when a node fails
- Node roles: recording (
recorder) and delivery (streamer)
Configuration
- YAML configuration file with shared defaults and per-camera overrides
- Cameras from the file, from a
conf.ddirectory or from a database - Changes applied on the fly, without a restart
Architecture
ForgeVis uses a hub-based architecture for efficient resource usage:
Camera (RTSP) → StreamHub → Recorder (fMP4 / MP4 files)
├→ RTSP Server (restream to clients)
├→ HLS (browsers)
└→ WebRTC (browsers)How it works:
- StreamHub: Maintains single RTSP connection per camera
- Broadcast: Distributes frames to multiple consumers efficiently
- Recorder: Subscribes to hub, writes segments to disk
- RTSP, HLS, WebRTC: Subscribe to hub and serve the stream to clients
All components share the same video stream without additional camera connections.
Idle Timeout
ForgeVis automatically disconnects from a camera when there are no subscribers:
- Configurable idle timeout (default 10 seconds for the RTSP server)
- Camera resources saved while nobody needs the stream
- Automatic reconnect when clients appear again
Use Cases
- Multi-client viewing: One camera feed to multiple viewers
- Recording + monitoring: Record to disk while streaming to clients
- Storage optimization: Fragmented MP4 for efficient playback and streaming
- Edge processing: Single connection to camera, multiple local consumers
- Recording and delivery on separate servers: recording servers + servers that serve viewers
Getting Started
Ready to try ForgeVis? Head to the Quick Start guide.
Resources
- Configuration Reference - Complete config options
- Clustering & HA - Multi-node deployment and failover