Galene¶
Galène is a videoconferencing server that is easy to deploy (just copy a few files and run the binary) and that requires moderate server resources. It was originally designed for lectures and conferences (where a single speaker streams audio and video to hundreds or thousands of users), but later evolved to be useful for student practicals (where users are divided into many small groups), and meetings (where a few dozen users interact with each other).
Docker¶
https://github.com/deburau/galene-docker
Alt UI¶
https://github.com/garage44/pyrite
Galene vs. Livekit¶
Key Differences and Comparison
Feature | Galene | LiveKit |
---|---|---|
Primary Focus | Simple, self-hosted video conferencing | Scalable, production-grade, real-time communication platform |
Architecture | Single-server (with optional TURN) | Distributed, multi-node architecture |
Scalability | Good (single server) | Highly scalable (designed for many rooms/participants) |
Complexity | Lower (simpler codebase) | Higher (more features, more complex) |
Features | - Basic video conferencing (audio, video, screen sharing) - Basic text chat - Group management - Recording - Token-based authentication - Advanced bandwidth estimation (BWE) - Simulcast and SVC (Scalable Video Coding) - Integrated TURN server |
All of Galene’s core features, plus: - Advanced bandwidth estimation (BWE) - Scalable Forwarding Unit (SFU) model - Dynamic forwarding and quality adjustments - Load balancing and routing - Egress (recording, streaming) services - Ingress (pre-encoding) services - Webhook events - Extensive SDK support (many languages/platforms) - Client-side adaptive streaming - Advanced server-side configuration options- Prometheus metrics - Advanced logging. |
Dependencies | Minimal (Pion WebRTC) | More dependencies (Redis, routing services, etc.) |
Deployment | Easy, single-server setup | More complex, requires infrastructure setup (e.g., Redis) |
Target User | Individuals, small teams, self-hosting enthusiasts | Developers building production applications, businesses |
Licensing | MIT License | Apache License 2.0 |
Code-Level Observations
-
Signal Handling (Galene’s
main.go
,rtpconn/rtpconn.go
vs. LiveKit’sservice/signal.go
):- Galene: Uses a custom WebSocket-based signaling protocol. Signal messages are plain JSON. The code directly handles offer/answer and ICE candidate exchange.
- LiveKit: Uses a dedicated
SignalServer
andSignalClient
with Protocol Buffers (protobuf) for structured messaging. Leverages PSRPC for internal communication. This makes message definitions explicit, versioned, and easier to manage in a distributed system.
-
RTP Handling (Galene’s
rtpconn/rtpconn.go
vs. LiveKit’ssfu
package):- Galene: Manages RTP packets with robust jitter buffer management and sophisticated packet reordering/loss handling, comparable to LiveKit.
- LiveKit: Has a robust
sfu
package with:DownTrack
: Manages sending RTP to a subscriber, including quality adjustments, bandwidth estimation, and keyframe requests.Buffer
: Sophisticated buffering, reordering, and NACK handling for incoming RTP packets.RTPMunger
: Handles sequence number and timestamp adjustments needed for forwarding, codec parameters, and other RTP-related operations.StreamTracker
: Manages the availability of streams (for simulcast/SVC).
-
Bandwidth Estimation (BWE) (Galene’s
rtpconn
vs. LiveKit’ssfu/bwe
):- Galene: Implements advanced BWE, with an estimator that is arguably more refined than LiveKit’s.
- LiveKit: Uses a combination of sender-side and receiver-side BWE, including:
- REMB (Receiver Estimated Maximum Bitrate) processing.
- Transport-Wide Congestion Control (TWCC) feedback handling.
- Custom congestion control logic based on packet loss, jitter, and RTT.
- Support for probing to find available bandwidth.
-
Media Processing (Galene’s
codecs
package vs. LiveKit’ssfu
,buffer
, and codec-specific packages):- Galene: Extensive codec support (VP8, VP9, H.264, AV1, Opus, etc.), including dedicated code for handling codec-specific features like VP8/VP9/AV1 keyframe detection and H.264 NALU handling.
- LiveKit: Also provides extensive codec support and dedicated code for handling codec-specific features.
-
Data Channels (Galene’s approach vs. LiveKit’s
sfu/datachannel
):- Galene: As a strictly videoconferencing server, Galène does not handle file transfers through data channels.
- LiveKit: Uses a dedicated
datachannel
package, with rate limiting and buffer management, showing focus on reliability and scalability for data channels beyond basic conferencing.
-
Scalability (Galene’s single server vs. LiveKit’s routing/multi-node):
- Galene: All logic is designed for a single instance, but offers good performance within its scope.
- LiveKit: The
routing
package,LocalRouter
, andRedisRouter
clearly show a design for distributing load across multiple nodes. The room allocation and node selection strategies are crucial for scaling.
-
Telemetry and Monitoring (LiveKit’s
telemetry
andprometheus
packages):- Galene: Limited built-in telemetry.
- LiveKit: Comprehensive metrics collection and reporting with Prometheus, analytics events, and structured logging.
-
Configuration:
- Galene: Simpler configuration model.
- LiveKit: Uses a more complex configuration system (likely YAML-based) for tuning various aspects of the system, reflecting the larger number of features and settings.
-
Extensibility
- Galene: There is no interface for user, and all permissions are hardcoded.
- LiveKit: Provides a flexible model for permissions.
In Summary
The provided code highlights the fundamental difference in scope and design goals:
-
Galene prioritizes simplicity and ease of deployment for small to medium-scale video conferencing, offering sophisticated media handling and BWE within its self-hosted model. It’s likely more approachable for individual developers or small projects.
-
LiveKit is a much more comprehensive platform aimed at building scalable, production-ready, real-time communication applications. It includes all the necessary components for managing large numbers of rooms and participants, optimizing media quality, and handling network conditions, particularly in a distributed environment.
LiveKit’s codebase is clearly more complex due to its broader feature set and distributed nature. The choice between them depends entirely on the project’s requirements. If you need extensive distributed scalability, a wide array of integration features, and a platform for large-scale production applications, LiveKit is a strong contender. If you need a powerful, self-hostable solution with advanced media capabilities and a focus on simplicity for more contained scenarios, Galène is an excellent option.
Page last modified: 2025-03-22 03:46:57