Basic Principles
This page describes the fundamental concepts and architectural patterns used throughout the VASTreaming libraries.
Groups of Primitives
All functional elements can be divided into the following groups:
- Server objects - implement server functionality, accepting incoming connections and managing publishing points.
- Client objects - pull media data from external servers or read from local files (also called reader objects).
- Publisher objects - push media data to external servers or write to local files (also called writer or forwarder objects).
In addition, the following groups are available on most supported platforms:
- Media capture objects - capture media from local devices such as webcams, microphones, and screens.
- Media rendering objects - UI controls for displaying video and playing audio to users.
Media Data Flow
VASTreaming uses a source/sink pattern for media data flow. Media streams from a source to a sink through a pipeline, with optional processing stages in between.
Sources of media data include:
- External streaming servers (RTSP, RTMP, HLS, etc.)
- IP cameras
- Third-party software (e.g., OBS)
- Cloud or local video, audio, and image files
- Capture devices (webcams, microphones, screens)
Sinks for media data include:
- Streaming servers distributing content to end users
- Recording files (MP4, TS, etc.)
- End user devices displaying video or playing audio
Figure 1: Media data stream diagram
Client, media capture and input file objects implement the IMediaSource interface, while publisher and output file objects implement the IMediaSink interface. See Core Primitives for detailed information about these interfaces.
Single Protocol Streaming Server
VASTreaming provides standalone, protocol-specific servers for protocols such as RTSP, RTMP and WebRTC. These servers handle:
- Accepting incoming connections
- Creating media sources and sinks for each connection
- Providing these objects to user code through events
The application developer is responsible for implementing the media data flow between sources and sinks. VASTreaming includes sample applications demonstrating common patterns.
Figure 2: Single protocol streaming server diagram
Multi-Protocol Streaming Server
In production environments, supporting a single protocol is rarely sufficient. The multi-protocol streaming server is one of the most powerful components of VASTreaming, enabling simultaneous support for multiple streaming protocols in a unified, manageable environment.
The multi-protocol server architecture:
- Ingests media from various sources (RTSP cameras, RTMP publishers, files, etc.)
- Transforms protocol-specific data into an abstract, protocol-independent internal representation
- Delivers content to clients using their preferred protocol (HLS, DASH, WebRTC, etc.)
This design enables high-performance protocol translation, allowing the server to handle thousands of simultaneous incoming and outgoing connections. The server exposes a JSON API for remote configuration and monitoring.
Figure 3: Multi-protocol streaming server diagram
Low Latency
All VASTreaming libraries are optimized for minimal latency. Components use low-latency mode by default, prioritizing responsiveness over reception/transmission/playback smoothness.
Typical latency on LAN using low-latency protocols (RTSP, RTMP, SRT, WebRTC) is 200-300 milliseconds. With custom protocol extensions, latency can be reduced to below 100 milliseconds in optimized configurations.
See Library Performance for detailed latency and performance benchmarks across all supported protocols.
Publishing Points
A publishing point is a named endpoint on a streaming server that serves media content to clients. When a client connects to a publishing point, the server manages the connection and streams the associated content.
VASTreaming supports several types of publishing points:
- Live - real-time streaming from a live source (camera, encoder, etc.)
- VOD (Video on Demand) - playback of pre-recorded content with seeking support
- Event - live streaming with DVR-like capabilities (pause, rewind)
Publishing points provide a layer of abstraction between media sources and client connections, enabling features like:
- Multiple clients viewing the same source
- Protocol translation (e.g., RTSP input to HLS output)
- Access control and authentication
- Stream recording and archiving