View Source Membrane.HTTPAdaptiveStream.Manifest.Track.Config (Membrane HTTP Adaptive Stream plugin v0.18.3)

Track configuration.

Summary

Types

Track configuration consists of the following fields

t()

Types

@type encoding_t() :: {:audio, String.t()} | {:video, String.t()}

Track configuration consists of the following fields:

  • id - identifies the track, will be serialized and attached to names of manifests, headers and segments
  • track_name - the name of the track, determines how manifest files will be named
  • content_type - either audio or video
  • header_extension - extension of the header file (for example .mp4 for CMAF)
  • segment_extension - extension of the segment files (for example .m4s for CMAF)
  • segment_duration - expected duration of segments.
  • partial_segment_duration - expected duration of each partial segment, nil if not partial segments are expected
  • header_naming_fun - a function that generates consequent header names for a given track
  • segment_naming_fun - a function that generates consequent segment names for a given track
  • target_window_duration - track manifest duration is kept above that time, while the oldest segments
          are removed whenever possible
  • persist? - determines whether the entire track contents should be available after the streaming finishes
  • mode - track's mode that dictates type of metadata inserted into playlist's manifest
  • encoding - keyword of strings representing encoding of content_type
  • resolution - resolution of video stream
  • max_framerate - maximal framerate of video stream
@type t() :: %Membrane.HTTPAdaptiveStream.Manifest.Track.Config{
  content_type: :audio | :video,
  encoding: [encoding_t()] | [],
  header_extension: String.t(),
  header_naming_fun:
    (Membrane.HTTPAdaptiveStream.Manifest.Track.t(),
     counter :: non_neg_integer() ->
       String.t()),
  id: Membrane.HTTPAdaptiveStream.Manifest.Track.id_t(),
  max_framerate: float() | nil,
  mode: :vod | :live,
  partial_naming_fun: (t(), Keyword.t() -> String.t()),
  partial_segment_duration: Membrane.Time.t() | nil,
  persist?: boolean(),
  resolution: {non_neg_integer(), non_neg_integer()} | nil,
  segment_duration: Membrane.Time.t(),
  segment_extension: String.t(),
  segment_naming_fun:
    (Membrane.HTTPAdaptiveStream.Manifest.Track.t() -> String.t()),
  target_window_duration: Membrane.Time.t() | :infinity,
  track_name: String.t()
}