Membrane.MPEG.TS.Muxer (Membrane MPEG.TS Plugin v2.4.5)

Copy Markdown View Source

Experimental MPEG-TS Muxer. Supports 1 program with AAC and H264 in it only for now.

Inputs must be attached before the element enters the playing state. Audio&Video are going to be interleaved by their timing.

Each buffer is going to end in its own PES packet, hence NALu units must be grouped accordingly, as well as ADTS AAC frames.

Use profile: for well-known stream_type+descriptor combinations (e.g. :opus_mpeg_ts). Custom payloads can be muxed by supplying stream_type: and descriptors:.

Pads

:input

Accepted formats:

_any
Direction::input
Availability::on_request
Flow control::auto

Pad options:

  • stream_type

    atom() | nil

    Default value: nil
    Each input is going to become a stream in the PMT with this assigned type. See MPEG.TS.PMT.

  • profile

    atom() | nil

    Default value: nil
    Well-known stream profile (e.g. :opus_mpeg_ts, :scte35).

  • pid

    pos_integer() | nil

    Default value: nil
    Allows to specify the PID in which this stream should be muxed.

  • wait_on_buffers?

    boolean()

    Default value: true
    Block muxer until a buffer on this pad arrives.

  • descriptors

    list()

    Default value: []
    List of ES descriptors to add to the PMT for this stream.

  • pcr?

    boolean()

    Default value: false
    Mark this stream as the PCR (Program Clock Reference) stream. This sets the stream's PID as pcr_pid in the PMT and embeds PCR values in the adaptation field of packets. Typically used for video streams.

:output

Accepted formats:

Membrane.RemoteStream
Direction::output
Availability::always
Flow control::auto

Summary

Types

Options for pad :input

Types

input_pad_opts()

@type input_pad_opts() :: [
  stream_type: atom() | nil,
  profile: atom() | nil,
  pid: pos_integer() | nil,
  wait_on_buffers?: boolean(),
  descriptors: list(),
  pcr?: boolean()
]

Options for pad :input