Glossary

Red5 Pro Product Terms

Red5 - Open source media server for live streaming solutions that our team started in 2005. It was the first implementation of an RTMP server other than Flash Communication Server owned by Adobe.

Red5 Pro - Proprietary software built on top of the open source Red5. It features support for WebRTC streaming, mobile SDKs, and Stream Manager which allows for automatic (autoscale) large scale, real-time (less than 500 ms) live streaming on cloud networks.

Brew - A module of native code (written in C or C++) loaded into Cauldron to be executed for specific functionality. Examples: Live face detection that puts a mask around the face, split streams into multiple bitrates for transcoding. NOTE: Public support for Cauldron Brews is currently not available, but it is on the 2019 roadmap.

Broadcaster - The source of a live data stream, usually a camera and microphone with an internet browser or smartphone. The term broadcaster encompasses the user, network session, or function of stream generation.

Cauldron - Real-time stream processor. Cauldron is written in native code enabling fast encoding/decoding of video and audio streams. Cauldron supports Brews which allow developers to write custom code that intercepts the stream after the decode process to manipulate it as they see fit before it is then reencoded and pushed through to be streamed. A Cauldron node is also called a transcoder node. As one of its typical use cases, Cauldron handles generating multiple bitrates streams for use in adaptive bitrate.

Cluster - A set of multiple active servers which make real-time data streams available for consumption. Typically streams consist of audio or video data, and clusters of servers are used to handle more connections/streams than a single server could do on its own.

  • Origin (cluster) - An Origin accepts publishers (or encoders). In a non-autoscaling cluster application, origins can also be configured to accept subscribers. The server can be in a hybrid mode where it repeats streams from another origin. A stand-alone server is an origin and an edge all in one.
  • Edge - An Edge delivers streams to subscribers who want to view/listen to the streams. An Edge is required to have at least one origin in which to repeat content. Edge nodes can be configured to communicate with more than one Origin.

Clustering - Clustering is how we configure interconnected server nodes to be edges, origins, relays, and transcoders in order to distribute real-time video, audio, and data to all receiving (Subscriber) clients.

HTML5 SDK - Integrates live streaming video into your desktop and mobile browser. By default, uses WebRTC where possible and falls back to RTMP/Flash and HLS as needed. The HTML5 SDK abstracts much of the complexity of building a live streaming app from scratch.

Mobile Streaming SDK - Integrates live streaming video into your native app. Uses RTSP as the protocol and features a low latency (real-time) player and broadcaster. The Mobile SDK abstracts much of the complexity of building a live streaming app from scratch.

Publisher - Senders of the broadcast, also known as the ingest client.

Publisher Buffer Time - A setting in the Red5 Pro Mobile SDK that allows you to set how long you want to hold on to the packets in the queue. The larger the value, the more time it will keep them around and the lower the value, the less time it will keep them around.

Server Node - A server instance that is part of an active cluster.

Stream Manager - Red5 Pro's streaming architecture management and information service which helps automate the process of creating and deleting Red5 Pro server instances. Stream Manager also coordinates between broadcasters and subscribers to help find the right server nodes for their broadcast and subscribe actions respectively.

Stream Provisioning - Refers to the setup of a stream by a broadcaster client via the Stream Manager using its API.

Subscriber - Everyone that receives the messages sent by publishers, also known as the egress client.

Subscriber Buffer Time - A setting in the Red5 Pro Mobile SDK that allows you to set the amount of time you allow video packets to build-up on the server side before delivering to the client. In the case of receiving video, the higher the buffer_time the more you allow for backup in network congestion. The lower the number, the less time you allow for this queued video to get through.

WebRTC Failover - When publishing or subscribing with a WebRTC application, any platform that does not support WebRTC will failover to Flash (RTMP) or HLS.

Zombie - A stream that has been stopped from the publisher but is still listed on the server, blocking that stream name again from being used again. This is a regression bug that resurfaces from time to time. Our team spends a lot of time killing zombies before a new release comes out.

Autoscaling Components

Stream Manager - Manages streaming load efficiently by adding/removing Red5 Pro servers in real-time to meet dynamic traffic demands on cloud networks. Using the Cloud Controller it handles automatic scaling operations to expand and contract your server instances. The Stream Manager configures a cluster dynamically using a cloud network's APIs via a Cloud Controller.

Cloud Controller - Handles communication with the cloud platform for instance lifecycle management. Red5 Pro has cloud controllers for AWS, Google, Azure, and bare metal hardware using the Simulated Cloud Controller. A version for Kubernetes is on the 2019 roadmap.

Configuration Manager - Manages launch configurations in Stream Manager's configuration store.

Database Layer - Manages communication with a data source for persisting data that the Stream Manager uses. Typically an RDS instance or MySQL.

Instance Manager - Handles creation and termination of cloud server instances directly from Stream Manager.

Nodes - The autoscaling nodes are server instances that perform specific defined roles (origin, edge, relay, transcoder).

Nodegroups - An autoscaling nodegroup is a cluster of any number of origin/edge, origin/relay/edge, or transcoder/origin/edge nodes. The nodegroup is created based on a scale-policy and launch-configuration.

  • Origin - An Origin accepts publishers (or encoders).
  • Edge - An Edge delivers streams to subscribers who want to view/listen to the streams. An Edge is required to have at least one origin in which to repeat content. Edge nodes can be configured to communicate with more than one Origin.
  • Relay - An intermediary node that connects an Origin to an Edge. The use of Relays allows a cluster to run large stream deployments into the tens of millions of subscribers.
  • Transcoder Node - A node in a cluster that runs Cauldron that is dedicated to transcoding streams. The Transcoder node always sits in front of an Origin and pushes data to it.

Policy Manager - Manages your scaling policies in Stream Manager's policy store.

Red5CloudWatch - Monitors your Red5 Pro instances for availability and traffic status.

REST API Layer - Allows simple cluster administration through Stream Manager and provides a simple public interface for co-ordinating between publishers and subscribers for stream production and consumption.

Scale Policy - A configuration that defines how many nodes to maintain, how much to scale, and how soon to scale (The wait delay after the autoscale condition is active)

General Video Streaming Tech Terms

API - Application Programming Interface: An interface that allows software programs or components to interact with each other.

Bandwidth - The total amount of data that can be transferred or processed at any one time (also, usually one second). As such, both bandwidth and bitrate are usually measured in Kilobits or Megabits per second.

Bitrate - The number of bits (0 and 1s) that can be transferred or processed from one point to another in a set amount of time (usually one second). Measured in kbps, and Mbps.

CDN (Content Delivery Network) - A system that employs a distributed network of servers to transport data and media files across the internet. Most CDNs operate over an HTTP connection which caches data into different servers to facilitate packet requests. For more on Red5 Pro and CDN's please refer to this article.

DNS (Domain Name System) - The Domain Name System (DNS) is a hierarchical decentralized naming system for computers, services, or other resources connected to the Internet or a private network. It associates various information with domain names assigned to each of the participating entities.

Edge - A server that resides on the "edge" between two networks, typically between a private network and the internet. For Edge as it refers to autoscaling, please refer to the above reference under "Red5 Pro".

End-to-End Latency - The time it takes video or audio captured by a device to go from the publisher to the subscriber. Refer to this article for more information on types of latency.

JAR - A Java-based library file format. Red5 Pro uses various jars in its configuration in order to load needed libraries at startup.

Native App - Application that is code specific to the device it is running on (commonly iOS or Android).

Node - A computer, container, or virtual instance that is identified by an IP address on the internet.

Origin (Web Server) - A Web server that contains the original Web page. The term is used to identify the Web server from the cache server. Since there is no physical difference between a digital original and a digital copy, the term implies that the origin server is the one that is maintained and updated by the enterprise. For Origin as it refers to autoscaling, please refer to the above reference under "Red5 Pro".

React Native - Web technology used to build native apps. The intention is to make app creation faster and easier by employing a codebase that can be used with both iOS and Android. React Native was created and is maintained by Facebook.

Relay - An intermediate node between the source and destination when they cannot communicate between each other directly due to distance. For more on relays, please refer to this article.

SDK - Server Development Kit: A set of tools that can be used to develop software applications targeting a specific platform.

Transcoding - Taking already-compressed content; decompressing it; and then altering and recompressing it.

Web App - A webapp is usually a browser based application. However in the context of Red5 Pro and J2EE or Tomcat it's actually a Java based server side application. Specific to Red5 Pro, it refers to the creation of custom code to be run on the server side.

Encoder Software

FMLE (Flash Media Live Encoder) - A free live encoding software product built by Adobe systems used for streaming live video. Note that FMLE is no longer officially supported.

FFMPEG (Fast Forward MPEG) - Vast software suite of libraries and programs for handling video, audio, and other multimedia files and streams. FFMPEG is usually run as a command line tool, but it's also frequently used as a C library for doing many video and streaming related tasks. OBS for example utilizes FFMPEG under its covers.

OBS (Open Broadcast Software) - A free and open-source software suite for recording and live streaming. Protocols

CORS (Cross-Origin Resource Sharing) - A standard that restricts resources from one website, sharing accessing data from another. It provides a mechanism in which a browser and server can interact to determine whether or not it is safe to allow the cross-origin request before transmitting data.

DTLS (Datagram Transport Layer Security) - Modified TLS that may be used with UDP. Exchanges keys used to encrypt and decrypt the stream at both peers. Used for the symmetric key exchange for WebRTC.

HLS (HTTP Live Streaming) - Media streaming communications protocol originally created by Apple that works by breaking the overall stream into a sequence of small HTTP-based file downloads (called chunks).

ICE (Interactive Connectivity Establishment) - A protocol that describes how to coordinate STUN and TURN to make a connection between hosts. WebRTC leverages ICE for setting up peer connections.

NAT (Network Address Translator) - A method of remapping one IP address space into another by modifying network address information in IP header of packets while they are in transit across a router. An essential tool in conserving global address space in the face of IPv4 address exhaustion. NAT Traversal or punch through is often needed in the case of setting up peer to peer systems like WebRTC in order to connect devices.

RTC (Real-Time Communication) - A category of software protocols and communication hardware that give real-time guarantees. RTC can often be an informal shortened name for WebRTC.

RTMFP - RTMP over UDP instead of TCP. It is also technically a peer to peer protocol that the Flash player can utilize.

RTMP (Real-Time Messaging Protocol) - TCP based protocol for streaming audio, video, and data over the Internet. It was originally developed by Macromedia for the Flash player. It allows for low-latency communication. Today RTMP is most common protocol for publishing streams. Professional encoders, OBS, FFMPEG, etc. all support RTMP.

RTMPS - RTMP over a TLS/SSL connection.

RTMPT - RTMP which is encapsulated within HTTP requests to traverse firewalls. RTMPT is frequently found utilizing cleartext requests on TCP ports 80 and 443 to bypass most corporate firewalls and allows the Flash player to connect to a server. The encapsulated session may carry plain RTMP, RTMPS, or RTMPE packets within.

RTP (Real-time Transport Protocol) - Protocol for delivering audio and video over IP networks. Used extensively in streaming media.

RTSP (Real Time Streaming Protocol) - A network control protocol designed for use in entertainment and communications systems to control streaming media servers. The protocol is used for establishing and controlling media sessions between end points. The payload of media is typically done over either RTP or SRTP. Most people when they say RTSP are referring to the combination of the RTSP and (S)RTP. The Red5 Pro Mobile SDK uses RTSP.

SDP (Session Description Protocol) - A format for describing streaming media communication sessions for the purposes of session announcements, session invitation, and parameter negotiation.

SRTP (Secure Real-time Protocol) - A transport protocol that WebRTC uses to send and receive encrypted video and audio.

SSL - (Secure Socket Layer) - Older version of TLS.

STUN (Session Traversal of User Datagram Protocol [UDP] Through Network Address Translators [NATs]) - Used by a host to discover its public IP address when it is located behind a NAT/Firewall. When this host wants to receive an incoming connection from another party, it provides the public IP address as a possible location where it can receive a connection. Red5 Pro examples all use the public Google STUN servers. We suggest however, that you install your own STUN server for your production apps. A good choice is CoTurn as it supports both STUN and TURN.

TCP (Transmission Control Protocol) - One of the main protocols on the Internet. TCP is a connection based protocol, once a connection is established data can be sent in both directions. It's used in applications that require high reliability when transmission time is not as important as guaranteed delivery. TCP typically is much easier to use than UDP in strict corporate firewalls.

TLS (Transport Layer Security) - Cryptographic protocol that provides communication security over a computer network via TCP.

TURN (Traversal Using Relay around NATs) - Makes a connection to the server through relaying media between the two parties if STUN fails.

UDP (User Datagram Protocol) - Connectionless protocol, multiple messages are sent as packets in chunks. One directional. Needed for fast, efficient transmission. Streaming or gaming. Manages the reordering of packets received by the clients and deals with dropped packets that never arrive. Most WebRTC traffic is done with SRTP over a UDP connection.

WebRTC (Web Real-Time Communication) - A universal, plugin-free browser-based communication protocol that enhances browsers with RTC (Real-Time Communication) capabilities via Javascript API's.

Websocket - A computer communications protocol, providing full-duplex) (two-way) communication channels over a single TCP connection unlike HTTP. It allows you to open an interactive communication between the server and the client in HTML5 apps. You can make API calls without everything having to go through the server.

Codecs

AAC (Advanced Audio Coding) - An audio coding standard for lossy digital audio compression. Designed to be the successor of the MP3 format, AAC generally achieves better sound quality than MP3 at the same bit rate.

H.264/MPEG-4 AVC (Advanced Video Coding) - A block oriented motion compensation-based video compression codec. It is a standard capable of providing good video quality at substantially lower bit rates than previous standards. It can be implemented in a wide variety of networks and systems and is usable with many protocols.

Opus - A lossy audio codec designed to efficiently code speech and general audio in a single format, while remaining low-latency enough for real-time interactive communication and low-complexity enough for low-end embedded processors.

Speex - A free software speech codec that may be used on VoIP (Voice Over Internet Protocol) applications. Specifically it is a lossy audio compression format specifically tuned for the reproduction of human speech.

VP8 - A block-based transform coding format. Very similar to H.264.

Which Codecs Each Protocol Uses

WebRTC

  • Audio: Opus
  • Video: H264 and VP8

RTMP

  • Audio: speex
  • Video: H264

RTSP

  • Audio: AAC
  • Video: H264

Video Streaming Issues

Set of terms used to describe common livestreaming issues:

  • Stuttering (Audio) - Audio pausing for under 2 seconds
  • Stuttering (Video) - Video pausing for under 2 seconds
  • Stuttering (Both Audio and Video) - Audio and video pausing for under 2 seconds

  • Freezing (Audio) - Audio pausing for longer than 2 seconds

  • Freezing (Video) - Video pausing for longer than 2 seconds
  • Freezing (Both Audio and Video) - Audio and video pausing for longer than 2 seconds

Video Artifacts - A noticeable distortion of the video. Ex: color changes that don't belong, images bleeding into each other, shadows of old images being superimposed on the current streaming image. Likely indicates missing keyframes.

Audio Artifacts - A noticeable distortion of the audio. Ex: Pops over the audio, breaks, static, garbled, repetitions, etc.

Sync, A/V Sync Issues - Audio not lining up with video on subscribe. Audio track ahead of video, or video ahead of audio.

Pixelation - Pixelated or bad quality video, but still obviously the video.

No Video - Black Screen, but has audio.

Chipmunk Mode - Video or audio freezes and then speeds up to catch up to real time.

Reverse Time - Video reverses and the counter goes backward for at least a second worth of frames and then progresses as expected again.