Skip to content

📖 Glossary

  • Source: A class that represents an audio or video source. For example, a camera ( CameraSource), or a microphone (AudioSource).

  • Encoder: A class that represents an audio or video encoders. Only Android MediaCodec API is used (MediaCodecEncoder).

  • Endpoint: The last element of a live streaming pipeline. It is responsible for handling the frames after the encoder. The endpoint could be a remote server (RTMP, SRT,...) or a file (FLV, MPEG-TS,...). The main endpoint is CompositeEndpoint that is composed of a Muxer and a Sink.

  • Muxer: A process that packs audio and video frames to a container (FLV, MPEG-TS, MP4,...). The CompositeEndpoint is composed of a IMuxer.

  • Sink: A process that sends the container to a remote server (RTMP, SRT,...) or to a file. The CompositeEndpoint is composed of a ISink.

  • Streamer: A class that represent a audio and/or video live streaming pipeline. Unless explicitly stated, the Endpoint is inferred from the MediaDescriptor object thanks to the DynamicEndpoint.

  • Streamer element: Could be a Source, Encoder, Muxer, or Endpoint. They implement the Streamable<T> and they might have a public interface to access specific info.

  • Pipeline output: An output of the Streamer pipeline. The EncodingPipelineOutput manages audio and video encoders, the Muxer and the Endpoint.

  • Streamer pipeline: A class that manages one audio and one video Source and multiple Pipeline outputs.

  • Info: A class that provides a set of methods to help to streamer configuration such as supported resolutions,... They might be different for each Streamer object. For example, a FlvStreamer object will not have the same Info object as a TsStreamer object because FLV does not support a wide range of codecs, audio sample rate,... It comes with an instantiated Streamer object:

val info = streamer.getInfo(MediaDescriptor(`media uri`))
  • Internal interface and public interface: They are public to let you create your own Source, Encoder, Muxer or Sink. Example: IAudioSourceInternal is the internal interface of IAudioSource. In other cases, use the public interface instead. Example: IAudioSource is the public interface of IAudioSourceInternal.