ExperimentalFrameExtractor


@UnstableApi
public final class ExperimentalFrameExtractor


Extracts decoded frames from MediaItem.

This class is experimental and will be renamed or removed in a future release.

Frame extractor instances must be accessed from a single application thread.

This class may produce incorrect or washed out colors, or images that have too high contrast for inputs not covered by testDecodeGlAccuracyRGB CTS test. That is:

  • Inputs of BT.601 limited range are likely to produce accurate output with either software or hardware decoders across a wide range of devices.
  • Other inputs are likely to produce accurate output when using hardware decoders on devices that are launched with API 13 or later.
  • HDR inputs will produce a Bitmap with BT2020_HLG. There are no guarantees that an HLG Bitmap displayed in ImageView and an HLG video displayed in SurfaceView will look the same.
  • Depending on the device and input video, color inaccuracies can be mitigated with an appropriate RgbMatrix effect.

Summary

Nested types

Configuration for the frame extractor.

A builder for Configuration instances.

Stores an extracted and decoded video frame.

Public constructors

Creates an instance.

Public methods

ListenableFuture<ExperimentalFrameExtractor.Frame>
getFrame(long positionMs)

Extracts a representative Frame for the specified video position.

void

Releases the underlying resources.

void
setMediaItem(MediaItem mediaItem, List<Effect> effects)

Sets a new MediaItem.

Public constructors

ExperimentalFrameExtractor

public ExperimentalFrameExtractor(
    Context context,
    ExperimentalFrameExtractor.Configuration configuration
)

Creates an instance.

Parameters
Context context

Context.

ExperimentalFrameExtractor.Configuration configuration

The Configuration for this frame extractor.

Public methods

getFrame

public ListenableFuture<ExperimentalFrameExtractor.FramegetFrame(long positionMs)

Extracts a representative Frame for the specified video position.

Parameters
long positionMs

The time position in the MediaItem for which a frame is extracted.

release

public void release()

Releases the underlying resources. This method must be called when the frame extractor is no longer required. The frame extractor must not be used after calling this method.

setMediaItem

public void setMediaItem(MediaItem mediaItem, List<Effect> effects)

Sets a new MediaItem.

Changing between SDR and HDR MediaItems is not supported when extractHdrFrames is true.

Parameters
MediaItem mediaItem

The MediaItem from which frames will be extracted.

List<Effect> effects

The List of video effects to apply to the extracted video frames.