Phenix Glossary of Terms
- Adaptive Bitrate (ABR)
- Application ID
- SDK Types
- Subscriber or Viewer
Adaptive Bitrate (ABR) provides subscribers with streams of different bitrates, selected by the Phenix system based on the subscriber's network connection quality. Subscribers with good network quality receive high-resolution streams, while subscribers with poor-quality network connections receiver lower-resolution streams.
Multi-bitrate (MBR) support is not standard for WebRTC, so ABR is on the server side rather than chosen by the subscriber, e.g., from a DASH manifest. The subscriber is unaware that there are multiple bitrates available.
For each platform, the SDK APIs are split into two main categories: Express and Low-Level. The Express APIs simplify integration, automatically recover from stream failures, and handle edge cases such as network reconnects.
In general, logic is not in the object itself but in APIs used to access the object (using composition plus object-orientation; APIs are separate from the object types).
An Application ID is similar to a user name, and is needed to interact with the Phenix platform. It is used in combination with a secret to:
Log into the Phenix Customer Portal
Execute REST APIs
Create tokens for SDKs and Encoders to publish, subscribe, etc.
If you need an Application ID, please contact Phenix.
Beta features are new features that can be used with the understanding that you:
- notify your account representative that you are using a Beta API or Feature
- are aware that while Beta features have been tested prior to release they have not been used heavily in production situations and may not behave exactly as expected in all situations
- provide feedback to Phenix to help improve the feature and report any bugs you find
A channel is a special type of room that contains only one piece of content at a time, designed specifically for use with the "one to many" use case, such as the broadcast of content from a single source to many audience members. Channels use a simplified set of APIs for publishing and viewing.
Channels have mechanisms for stream selection and subscription built into the SDK. This includes the ability for subscribing to channels that use High-Availability (HA) logic, which contain redundant streams of the same content.
A Client is an application that consumes and renders video, audio, and data. When a Client has received a token, it is authorized to access content streams subject to the terms of the token. Exactly how the Client renders the content and uses the data is dependent upon the choices made by the Client\'s developer.
Dynamic Adaptive Streaming over HTTP (DASH) is a chunk-based streaming standard developed by MPEG. The DASH Industry Forum provides information about implementing DASH.
Each user experiences a unique amount of delay (Unique Viewer Delay, or UVD) between the time at which an event occurred and the time at which the viewer saw it. Drift is the difference between the smallest UVD and the largest UVD in an audience. Phenix minimizes this difference so that viewer experience is synchronized across the audience, as compared to typical broadcasts where this difference can be a minute or more.
HTTP Live Streaming (HLS) is a content delivery technology developed by Apple.
Interactive Connectivity Establishment (ICE) is a protocol used to generate connections that can cross Network Address Translators (NATs). ICE is defined in RFC 8445. ICE, STUN, and TURN make it possible to establish connectivity between two endpoints when there are NATs involved.
Phenix Interactive Transport Protocol (ITP) is built on top of the W3C standard called WebRTC (built on top of UDP instead of TCP), which is designed for real-time communications.
A member is a room or channel participant. Members are always associated with a room.
Members can be publishers, subscribers, or both (e.g., a consumer of an event that is also producing a stream of commentary).
Network Address Translation (NAT) is a mapping between private, local-network addresses and a public IP address. For example, a home network may have a number of devices that, to devices outside the home, all appear to have the same IP address, but the home's router uses NAT to ensure that the network traffic ends up at the correct device within the home.
PCast™ is the underlying SDK that manages WebSockets, determines which datacenter to open, and is the most generic, lowest-level entity in the Phenix system. PCast™ is the local piece of software that manages the connections to the Phenix platform on which everything is built. Whenever an entity is interacting with a room or a stream, it's interacting with PCast™.
A publisher is a member of a room or channel that is producing one or more streams that are currently being published. A publisher can have one of three member roles: Participant, Presenter, or Moderator.
A Room serves as a top-level container for Members, which includes both publishers and subscribers of content. Once in a room, members can publish or subscribe to streams.
Rooms are designed around use cases with multiple publishers (for example, a video chat). Stream selection and subscription logic is customized by implementers using the SDK, allowing for maximum flexibility.
A room can have one of several types, defined in the room's type property, which identifies its purpose. These include:
DirectChat - One-to-one chat
MultiPartyChat - Group chat (many to many or few to many)
Moderated Chat - Moderated chat with integrated SIP Bridge for conferencing abilities (join by phone).
TownHall - Group chat with few active participants and many non participatory audience members
Channel - View-only room with a single active piece of content at a time.
SDKs are used to develop Clients and are available for three major platforms:
Session Description Protocol (SDP) is the way two endpoints negotiate capabilities, such as codec and audio/video parameters, and describe audio & video streams.
Secure Real Time Transport (SRTP) is the workhorse of WebRTC and is used to transport the audio and video content. SRTP is the secure version of RTP, which was initially proposed in 1996, and then updated in 2003.
A stream is audio and/or video that is being published to members of a room or channel. A stream is always associated with a member. Streams can be published to rooms via the Phenix Web SDK, native mobile SDKs, a Phenix Encoder or from any RTMP encoder.
Streams are identified by a URI and type.
Streams need not be Phenix streams.
Session Traversal Utilities for NAT (STUN), according to its RFC, "is a protocol that serves as a tool for other protocols in dealing with NAT traversal."
Subscriber or Viewer
A subscriber is a member of a room or channel that is consuming one or more streams that are currently being published. A subscriber can have one of three member roles: Participant, Audience, or Moderator. Subscribers are sometimes referred to as "viewers."
A tag is an arbitrary string that can be added to a stream.
Tokens are cryptographically signed text that are a representation of what a viewer holding a token is allowed to do with the system.
Traversal Using Relays around NAT (TURN) is a used when STUN cannot be used to route media around NAT. A TURN server must be set up to allow media to be sent when a direct connection (with or without STUN) cannot be established. TURN is described in RFC8656.
World Wide Web Consortium (W3C) develops standards and guidelines for the World Wide Web, such as the specification for WebRTC.