Glossary
Why this glossary?
The media industry is plagued by double-meanings, jargon and definitions not immediately understandable by those yet initialised. Obviously we will be adding to this great tradition, the list is made to help read the rest of the documentation.
MistServer Glossary
Stream
Generic term for a collection of media data that belongs together. It can refer to either live or VoD streams.
Track
All media data in a stream belongs to a track. A single track contains all media data that "belongs" together and cannot (usually) be separated. For example, a single audio language, a single video quality, a single subtitle language, etc.
Track type
Each track is assigned a type. We consider three different track types to be valid: audio (for tracks containing audio data), video (for track containing video data) and meta (for tracks containing generic data, like JSON, text, etc).
Frag(ment)
The largest division of media data that MistServer recognizes. These are used to split data up for segmented streaming protocols (e.g. HLS, CMAF), and are defined as one or more consecutive keys.
Key(frame)
In principle, what most of the video industry refers to as a GOP (Group of Pictures). For video this is always an IDR (Instantaneous Decoder Refresh - confusingly, also often referred to as a keyframe by itself) and all data up to (but not including) the next IDR in the track. For audio, since any arbitrary point is decodable, these are arbitrarily chosen. (MistServer automatically inserts a "virtual" IDR for audio streams every few seconds.) For meta tracks usually every packet/part is considered a keyframe by itself, since the term is meaningless and this track type tends to be quite sparse in contents. (These are not automatically inserted by MistServer, though!)
Part / Packet
The smallest division of media data that MistServer recognizes. For video, this is a single frame. For audio, usually whatever the smallest possible group of audio samples supported by the codec is. For meta tracks, the definition depends on the codec used.
Controller
Shorthand for the MistController binary, which handles API calls and controls/monitors most other processes.
Input
Generic term for the MistIn* binaries, which usually handle retrieving/loading a stream from some source. Also generically used to refer to whichever process is currently providing the media data for a stream. (For example, you could say "The input for this stream is running with process ID 666.") Outputs sometimes act as Inputs due to protocol-related limitations, but an Input process never acts as an Output.
Output
Generic term for the MistOut* binaries, which usually handle sending/outputting a stream in some target protocol or format. Also generically used to refer to whichever process is currently performing this task for a specific viewer. Outputs sometimes act as Inputs due to protocol-related limitations, but an Input process never acts as an Output.
Util(ity)
Generic term for the MistUtil* binaries. These are utilities that perform various functions, often intended for debugging MistServer's internals or doing non-stream-related data analysis.
Analyser
Generic term for the MistAnalyser* binaries. These are different from Utilities in that they always analyse media data in some format. They can be used manually for debugging purposes, or automatically "in bulk" through the load tester binary.
(Stream) Process
Generic term for the MistProc* binaries. These do some sort of processing on streams that must otherwise already be present in memory. Think of processing tasks such as transcoding, running AI models on data, adding or removing encryption, etcetera. They can read from existing tracks, create and write new tracks, or modify the properties of existing tracks (but never the data inside them). None of these three operations is mandatory, and a process could theoretically even do nothing (which could be useful to provide e.g. custom triggers without actually affecting anything).
Source
Every stream has a configured "source". This is a string that indicates where the stream data will be coming from.
Trigger
A way to interact with the internal logic of MistServer from the outside. These take the form of a payload that is submitted either through standard input to a system process or as POST data to an HTTP endpoint. The response (either standard output or HTTP response body, respectively) is then used to influence the internal logic according to clearly documented behaviors specific to the type of trigger involved.
Stream name
Each collection of tracks being handled by MistServer is uniquely identified by a stream name that has a system-wide scope. This name is used to find the shared memory buffers that stream data is stored in, for either reading or writing.
The stream name has two components: the basename and the wildcard. The wildcard is optional, and if present it follows the basename and is separated by a + symbol.
So, a streamname looks like basename+wildcard or basename.
The basename has a very restrictive allowed character set, while the wildcard is much more permissive (see next two entries for details).
Basename
The first section of a stream name, up to (but not including) a + symbol in the stream name. If there is no + symbol in the stream name, the basename and the streamname are the same.
Basenames are restricted to only contain lowercase alphanumeric characters, dashes and underscores. Most code will automatically convert uppercase characters to lowercase, and strip all other non-allowed characters.
Wildcard
The second section of a stream name, after (and not including) a + symbol in the stream name. If there is no + symbol in the stream name, the wildcard is unset.
The allowed characters for wildcards are only restricted by having to be valid filenames on the host operating system.
LSP / Web Interface / MistServer MI
This is the default web interface for MistServer. If an invalid API request is sent to MistServer's API port (by default 4242), we assume a browser is accessing the API port and serve this interface to the browser as a convenience feature to assist humans in creating valid API requests. Use of this interface is not mandatory, and in fact any interface (of any type) hosted anywhere could/would suffice. Consider it a reference implementation, not "the" implementation.
(Meta-)Player
This is the HTML5 player codebase built into MistServer. It is built on top of several open source players from different sources (some third party and some created by the MistServer team), with a layer on top that provides a consistent API and interface across all of them. This extra layer also handles communication to MistServer to assist in selecting the best internal player for each playback attempt, so it is strongly recommended to use this player rather than a third party player with less integration.
the Embed code, the Embed
The code generated by the web interface that allows embedding the Meta-Player on any website. MistServer also serves a version of this by default on the HTTP(S) port(s) under the path streamname.html for convenience.
RelAccX
A data structure used in many places internally to allow for reliable access to shared memory, when there are separate writers and readers.
Shared memory page, page (within the context of memory/data usage), shared memory object
A named section within shared memory, officially this should be referred to as a shared memory object. We refer to them as pages as it helps with with comprehension and it is much shorter as well.
IPC, Inter-Process Communication
Inter-process communication is the sharing of data between running processes in a computer system, or between multiple such systems.
PID, Process Identifier, process ID
The process identifier is a number used by most operating system kernels—such as those of Unix, macOS and Windows—to uniquely identify an active process.
Buffer
The data belonging to a stream that is currently loaded into shared memory structures. For live streams, this is generally the only portion available to Output processes. For VoD streams, Outputs can request the relevant Input to load unloaded sections into the Buffer on demand, and the Buffer serves only as a common cache between Output processes. The content of the Buffer is always managed by the process that fills it, which may be a different process for each track, depending on where that data comes from.
Buffer window, DVR window
For live streams, this is the duration of media data that all tracks have currently loaded in their Buffer. Each track may individually have more data available (in either direction on the timeline), but the Buffer Window is specifically only the intersection of the timeline of all tracks. When an Output or Input is only looking at a subset of all tracks, "all tracks" is understood to only consist of that subset at that time (and may thus be bigger than the Buffer Window for all tracks would have been).
Session
A single "view" of a stream is considered a Session. We currently define a "view" as an IP address retrieving a stream over a protocol. If any of those properties change, we consider it a new session. This behaviour will become configurable in detail in the near future.
Media Industry Glossary
Push
When data is being transmitted to somewhere (unasked), that is a push. Note that there can be both push input (data being received from elsewhere) and push output (data being sent to elsewhere).
Pull
When data is being requested from somewhere (explicitly asked), that is a pull. Note that there can be both pull input (data being requested from elsewhere) and pull output (elsewhere requesting data from us).
Listener, Listening
A listener awaits incoming connections on a specific port and address. The potential other side of the connection is thus not known in advance. This is an entirely separate concept from push/pull or input/output, and should not be confused with these.
Caller, Calling
A caller establishes a connection with another side that is listening. The other side of the connection is thus always known. This is an entirely separate concept from push/pull or input/output, and should not be confused with these.
Edge (Server / Node)
An edge server or edge node is the last point in a distribution system before an end-user is reached.
Origin (Server / Node)
On origin server or origin node is the first point data enters a distribution system. (In online streaming contexts, this is for example a server that receives a connection from OBS.)
Codec
A method to store data that is more compact than a raw format would be. Converting raw format to a codec is called "encoding", while converting back to raw is called "decoding". Not to be confused with encryption, which is encrypting and decrypting. Encoding does not attempt to make the data harder to read/process, but in a way actually makes it easier: you're using less bytes to convey the same information.
Protocol
The protocol prescripes/specifies how to communicate, in this case how to communicate media data. As a side note, in video, protocols are often stacked: one protocol is used in/with another, in another, etc. For example, RTSP is a streaming protocol loosely based on HTTP, which sends media data over RTP. The protocol usually prescribes which codecs may be used inside it, but in principle is a separate choice from the codec choice (which is limited by the protocol choice, but usually not dictated).
User-Generated Content, UGC
This signifies that the media is created by the same group of people that consumes it, usually the end-users of the product or service.
Input, Ingest, Ingress, Incoming
This refers to media source that comes from outside the private network and is made available within the private network
Output, Replication, Egress, Outgoing
This refers to media that is send out to another location usually outside the private network.
Source
This refers to the media before it is handled by a server, platform or service.
Digital Rights Management, DRM
This means that the rights related to a piece of content are digitally managed. For example who can play the content, how many times, under what conditions, etc. Usually DRM is coupled with encryption to enforce these restrictions, to such a degree that in many cases when someone says "DRM" they actually mean encryption.
Encryption,
This means that media is protected during transport with an encryption scheme, to protect it from being intercepted or copied. There are two main types of encryption schemes: symmetrical and asymmetrical encryption. In symmetrical encryption the encode and decode key are the same, while in asymmetrical encryption these differ.
Metadata
Any form of data within a media stream that does not directly relate to video, audio or subtitle playback.
Content Delivery Network, CDN
A group of servers and storage working together to deliver a single experience to the end user. Note that this says nothing over the ownership of said servers.
End user
The person who ultimately uses or is intended to ultimately use the product or service.
Encoding, encode
The act of compressing audio/video data to a more compressed format (codec). This usually refers to raw audio/video data, but it can mean previously compressed audio/video data as well.
Transcoding, transcode
The act of re-compressing audio/video data to a different codec settings. Key difference here with encoding is that transcoding is always the act of compressing audio/video data that is already compressed.
Encoder
A device or application capable of compressing raw audio/video into a format (codec). Any encoder is automatically a Transcoder as well.
Transcoder
A device or application capable of compressing already compressed audio/video into a format (codec). Not every Transcoder is an encoder.
Transmuxing, Repackaging
The act of making media available for a different type of delivery without touching the audio/video codecs.
Delivery
This describes the method in which media is send towards the end user.
Broadcast
The act of sending out media where multiple viewers can view the media you send out.
Unicast, point-to-point
The act of sending out media where you are aware of who can receive your broadcast.
Multicast
The act of sending out media where you are unaware of who can receive your broadcast.
Over the top, Internet streaming, Internet Protocol TeleVision (IPTV)
Umbrella term used to describe any possible method used to make media available over the internet.
Playback
The act of watching media on a device.
Trickplay
A set of features enhancing playback, features such as selecting where to start playback or playing faster/slower than the originally intended speed.
Media, Content
A file or stream containing audio and/or video data that can be used to watch/listen to.
Digital Video Recorder, DVR
This describes the act of recording a live stream on a system. Usually it is used to describe the possibility of going back to the start of the live stream giving you the possibility to start anywhere between the start & live point of the stream.
Network Video Recording, NVR
This describes the act of recording a live stream through the network specifically. Like DVR it is usually used to describe the possibility of going back to the start of the live stream to start playback there while the live stream is still active.
Stream
Audio and/or video data is send right before it is needed by the playback device instead of a full media file ahead of time. Live media is almost always a stream.
User Experience
This refers to the perceived experience the end-user has when viewing content. What exactly determines a "good user experience" is usually left up to the one using the definition.
Hybrid (Server / Node)
A server capable of performing the tasks of both an Origin and Edge server at the same time.
Load balancing
The act of distributing incoming and/or outgoing streams over multiple servers/nodes within what you consider your Content Delivery Network.
Live streaming
Live streaming means that for your platform the source is something you'll be receiving in real time and are expected to make available as it comes in. This could be an actual live source such as a camera, but also a pre-recorded asset shared with you in real time.
VoD streaming
Video on Demand means your sources are pre-recorded and fully available to you before you need to make them available to your users.
🗃️ Architecture
2 items
🗃️ Control/Configuration
4 items
🗃️ Ingest/Input
2 items
🗃️ Stream Processing
1 item
🗃️ Distribution/Output
3 items
🗃️ Automation & Integration
11 items
🗃️ Monitoring
3 items
📄️ Glossary
MistServer glossary and streaming media jargon