Composition.Builder


public final class Composition.Builder


A builder for Composition instances.

Summary

Public constructors

Creates an instance.

Builder(
    EditedMediaItemSequence sequence,
    EditedMediaItemSequence[] sequences
)

Creates an instance.

Public methods

Composition

Builds a Composition instance.

Composition.Builder

Sets whether the output file should always contain an audio track.

Composition.Builder
@CanIgnoreReturnValue
experimentalSetRetainHdrFromUltraHdrImage(
    boolean retainHdrFromUltraHdrImage
)

Sets whether to use produce an HDR output video from Ultra HDR image input.

Composition.Builder

Sets the Effects to apply to the Composition.

Composition.Builder

Sets the HdrMode for HDR video input.

Composition.Builder
@CanIgnoreReturnValue
setTransmuxAudio(boolean transmuxAudio)

Sets whether to transmux the media items' audio tracks.

Composition.Builder
@CanIgnoreReturnValue
setTransmuxVideo(boolean transmuxVideo)

Sets whether to transmux the media items' video tracks.

Composition.Builder

Sets the VideoCompositorSettings to apply to the Composition.

Public constructors

Builder

public Builder(List<EditedMediaItemSequence> sequences)

Creates an instance.

Parameters
List<EditedMediaItemSequence> sequences

The EditedMediaItemSequence instances to compose. The list must be non empty. See sequences for more details.

Builder

public Builder(
    EditedMediaItemSequence sequence,
    EditedMediaItemSequence[] sequences
)

Creates an instance.

See also
Builder

Public methods

build

public Composition build()

Builds a Composition instance.

experimentalSetForceAudioTrack

@CanIgnoreReturnValue
public Composition.Builder experimentalSetForceAudioTrack(boolean forceAudioTrack)

Sets whether the output file should always contain an audio track.

The default value is false.

  • If false:
    • If the Composition export doesn't produce any audio at timestamp 0, but produces audio later on, the export is aborted.
    • If the Composition doesn't produce any audio during the entire export, the output won't contain any audio.
    • If the Composition export produces audio at timestamp 0, the output will contain an audio track.
  • If true, the output will always contain an audio track.
If the output contains an audio track, silent audio will be generated for the segments where the Composition export doesn't produce any audio.

The MIME type of the output's audio track can be set using setAudioMimeType. The sample rate and channel count can be set by passing relevant AudioProcessor instances to the Composition.

Forcing an audio track and requesting audio transmuxing are not allowed together because generating silence requires transcoding.

This method is experimental and may be removed or changed without warning.

Parameters
boolean forceAudioTrack

Whether to force an audio track in the output.

Returns
Composition.Builder

This builder.

experimentalSetRetainHdrFromUltraHdrImage

@CanIgnoreReturnValue
public Composition.Builder experimentalSetRetainHdrFromUltraHdrImage(
    boolean retainHdrFromUltraHdrImage
)

Sets whether to use produce an HDR output video from Ultra HDR image input.

If the HdrMode is HDR_MODE_KEEP_HDR, then setting this to true applies the recovery map (i.e. the gainmap) to the base image to produce HDR video frames. This is automatically overridden to true, if the first asset is a HDR video.

The output video will have the same color encoding as the first EditedMediaItem the sequence. If the Ultra HDR image is first in the sequence, output video will default to BT2020 HLG full range colors.

Ignored if HdrMode is not HDR_MODE_KEEP_HDR.

Supported on API 34+, by some device and HDR format combinations. Ignored if unsupported by device or API level.

The default value is false.

Parameters
boolean retainHdrFromUltraHdrImage

Whether to use produce an HDR output video from Ultra HDR image input.

Returns
Composition.Builder

This builder.

setEffects

@CanIgnoreReturnValue
public Composition.Builder setEffects(Effects effects)

Sets the Effects to apply to the Composition.

The default value is EMPTY.

Parameters
Effects effects

The CompositionEffects.

Returns
Composition.Builder

This builder.

setHdrMode

@CanIgnoreReturnValue
public Composition.Builder setHdrMode(@Composition.HdrMode int hdrMode)

Sets the HdrMode for HDR video input.

The default value is HDR_MODE_KEEP_HDR. Apps that need to tone-map HDR to SDR should generally prefer HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_OPEN_GL over HDR_MODE_TONE_MAP_HDR_TO_SDR_USING_MEDIACODEC, because its behavior is likely to be more consistent across devices.

Parameters
@Composition.HdrMode int hdrMode

The HdrMode used.

Returns
Composition.Builder

This builder.

setTransmuxAudio

@CanIgnoreReturnValue
public Composition.Builder setTransmuxAudio(boolean transmuxAudio)

Sets whether to transmux the media items' audio tracks.

The default value is false.

If the Composition contains one MediaItem, the value set is ignored. The audio track will only be transcoded if necessary.

If the input Composition contains multiple media items, all the audio tracks are transcoded by default. They are all transmuxed if transmuxAudio is true. Transmuxed tracks must be compatible (typically, all the MediaItem instances containing the track to transmux are concatenated in a single and have the same sample format for that track). Any transcoding effects requested will be ignored.

Requesting audio transmuxing and forcing an audio track are not allowed together because generating silence requires transcoding.

Parameters
boolean transmuxAudio

Whether to transmux the audio tracks.

Returns
Composition.Builder

This builder.

setTransmuxVideo

@CanIgnoreReturnValue
public Composition.Builder setTransmuxVideo(boolean transmuxVideo)

Sets whether to transmux the media items' video tracks.

The default value is false.

If the Composition contains one MediaItem, the value set is ignored. The video track will only be transcoded if necessary.

If the input Composition contains multiple media items, all the video tracks are transcoded by default. They are all transmuxed if transmuxVideo is true. Transmuxed tracks must be compatible (typically, all the MediaItem instances containing the track to transmux are concatenated in a single and have the same sample format for that track). Any transcoding effects requested will be ignored.

Parameters
boolean transmuxVideo

Whether to transmux the video tracks.

Returns
Composition.Builder

This builder.

setVideoCompositorSettings

@CanIgnoreReturnValue
public Composition.Builder setVideoCompositorSettings(
    VideoCompositorSettings videoCompositorSettings
)

Sets the VideoCompositorSettings to apply to the Composition.

The default value is DEFAULT.

Parameters
VideoCompositorSettings videoCompositorSettings

The VideoCompositorSettings.

Returns
Composition.Builder

This builder.