View Source Membrane.MP4.Demuxer.ISOM (Membrane MP4 plugin v0.35.0)

A Membrane Element for demuxing an MP4.

The MP4 must have fast start enabled, i.e. the moov box must precede the mdat box. Once the Demuxer identifies the tracks in the MP4, new_tracks_t/0 notification is sent for each of the tracks.

All the tracks in the MP4 must have a corresponding output pad linked (Pad.ref(:output, track_id)).

Element options

Passed via struct Membrane.MP4.Demuxer.ISOM.t/0

  • optimize_for_non_fast_start?

    boolean()

    Default value: false
    When set to true, the demuxer is optimized for working with non-fast_start MP4 stream (that means - with a stream, in which the :moov box is put after the :mdat box) You might consider setting that option to true if the following two conditions are met:

    • you are processing large non-fast_start MP4 files
    • the source of the stream is a "seekable source" - currently the only possible option is to use a Membrane.File.Source with seekable?: true option.

    When set to false, no optimization will be performed, so in case of processing the non-fast_start MP4 stream, the whole content of the :mdat box will be stored in memory.

    Defaults to false.

Pads

:input

Accepted formats:

%RemoteStream{type: :bytestream, content_format: content_format} when content_format in [nil, MP4]
Direction::input
Availability::always
Flow control::auto

:output

Accepted formats:

%Membrane.AAC{config: {:esds, _esds}}
%Membrane.H264{stream_structure: {:avc1, _dcr}, alignment: :au}
%Membrane.H265{stream_structure: {_hevc, _dcr}, alignment: :au}
%Membrane.Opus{self_delimiting?: false}
Direction::output
Availability::on_request
Flow control::auto

Summary

Types

Notification sent when the tracks are identified in the MP4.

t()

Struct containing options for Membrane.MP4.Demuxer.ISOM

Functions

Returns description of options available for this module

Types

@type new_tracks_t() :: {:new_tracks, [{track_id :: integer(), content :: struct()}]}

Notification sent when the tracks are identified in the MP4.

Upon receiving the notification, Pad.ref(:output, track_id) pads should be linked for all the track_id in the list. The content field contains the stream format which is contained in the track.

@type t() :: %Membrane.MP4.Demuxer.ISOM{optimize_for_non_fast_start?: boolean()}

Struct containing options for Membrane.MP4.Demuxer.ISOM

Functions

@spec options() :: keyword()

Returns description of options available for this module