12. Service Patterns
This document explains the two primary architectural patterns used in docker-rtmp-multistream for handling RTMP streams to different platforms.
12.1 Pattern Comparison
Choose the appropriate pattern for your service:
| Simple Relay | Transformer | |
|---|---|---|
| Use for | Services that accept streams as-is (e.g., YouTube) | Services requiring specific encoding (e.g., Twitch non-partner mode) |
| How it works | Stream forwarded directly without modification | Two-stage pipeline with FFmpeg transformation |
| Pros | Minimal CPU usage, preserves original quality, low latency | Per-service quality optimization, downscaling for bandwidth limits |
| Cons | No per-service quality optimization | CPU-intensive, slight latency increase |
| Example | YouTube service | Twitch service in non-partner mode (720p60 downscaling) |
Advanced: Conditional Patterns
Services can support both patterns based on configuration. The Twitch service implements a conditional pattern: partners use simple relay (TWITCH_PARTNER=TRUE), non-partners use transformer mode. See Twitch implementation for an advanced example.
12.2 Implementation Examples
12.2.1 Simple Relay (YouTube)
- Config:
apps/youtube.conf - Script:
90_configure_youtube.sh - Docs: YouTube Configuration
12.2.2 Transformer (Twitch)
- Transformer:
transformers/twitch.conf - App:
apps/twitch.conf - Script:
90_configure_twitch.sh - Docs: Twitch Configuration
12.3 See Also
- Architecture Overview - Detailed technical implementation
- Adding Services Overview - Step-by-step implementation guide
- Service Configuration - Configuration details