Streaming server is an easy to use, all-in-one solution for a server application tailored to customer needs. There are both single and multi-protocol servers available. Server can be scaled to work on a high performance environment, such as cloud streaming server, as well as on a very low performance devices, such as Raspberry Pi.
VASTreaming provides standalone, protocol specific servers for certain protocols, such as RTMP, RTSP, or WebRTC. These servers incorporate the logic to accept incoming connections, create media sources and sinks, and provide them to a user code. But it is a user who is responsible for implementing media data flow between IMediaSources and IMediaSinks. VASTreaming, however, provides demos showing how to make it work well. See Demos section of the documentation for more details.
This server is one of the most complicated components of VASTreaming library. It depends on almost all other modules. In a real production environment, it is often not enough to have a single protocol server; it is usually necessary to utilize several protocols, so a multi-protocol streaming server is a highly demanded element.
Multi-protocol streaming server allows setting up a streaming server that supports all the protocols necessary for a user in a single, easily controllable environment. Multi-protocol streaming server implements the architecture so that protocol-specific data of sources is transformed into an abstract, protocol-independent internal representation, which in its turn, is transformed into a protocol-specific data in each sink again. The server ensures high-performance media data transformation between different protocols allowing serving thousands of incoming and outgoing connections.
For now the following protocols can be served by the multi-protocol server:
Multi-protocol streaming server can also be controlled via JSON API. The API functionality does not cover all functions available to user code, but it is constantly enhancing. See API specification for details.
Multi-protocol streaming server provides another unique feature which can be shortly described as a server-side broadcast studio with functionality similar to desktop products such as OBS.
Server can be used to create a publishing point which can ingest multiple sources, switch between them, or mix several sources into one output stream.
Sources for this purpose can be ones from other publishing points, any supported pull source, or a file source, including an image, audio, or video file.
See video processing section for detailed explanation of mixing functionality.
Control of such publishing point can be performed from user code or through JSON API.
Creating a multi-bitrate adaptive stream is also supported, i.e., it creates several video streams with the same content but different resolution and bitrate.
The same is done for audio streams. This adaptive stream may be used in HLS or MPEG-DASH servers.
Mixing publishing point also supports animated fade in and fade out, which can be utilized for seamless and smooth switching between sources.
The following figures demonstrate performance level a user can expect.
High performance environment:
Max number of concurrent RTSP sessions - approx. 900 per server.
Max number of concurrent RTMP sessions - approx. 600 per server.
Max number of concurrent clients for HTTP-based protocols (e.g., HLS) - approx. 15,000 per server.
Testing has been carried out on a cloud server with 8 vCPU and 16 Gb of RAM configuration. CPU load at the described above indicators was no more than 70%. Server maintained good level of QoS at the maximal load.
Low performance environment (Raspberry Pi):
Max number of concurrent RTSP sessions (audio only) - approx. 40 per server.
VASTreaming servers are optimized for minimization of latency. Typical latency of VASTreaming library on LAN while using low latency protocol e.g., RTMP, RTSP, or WebRTC, is 200-300 milliseconds.
VASTreaming server library is available for Android, iOS, Windows, Linux, and macOS. The library exists in the following languages/frameworks:
Don't hesitate to contact us to request a demo applications and a demo projects.