Adaptive streaming

DASH

ExoPlayer supports DASH with multiple container formats. Media streams must be demuxed, meaning that video, audio and text must be defined in distinct AdaptationSet elements in the DASH manifest (CEA-608 is an exception, more information in the table below). The contained audio and video sample formats must also be supported (see the sample formats section for details).

Feature

Supported

Comment

Containers

FMP4

YES

Demuxed streams only

WebM

YES

Demuxed streams only

Matroska

YES

Demuxed streams only

MPEG-TS

NO

No support planned

Closed captions/subtitles

TTML

YES

Raw, or embedded in FMP4 according to ISO/IEC 14496-30

WebVTT

YES

Raw, or embedded in FMP4 according to ISO/IEC 14496-30

CEA-608

YES

Carried in SEI messages embedded in FMP4 video tracks

Metadata

EMSG metadata

YES

Embedded in FMP4

Content protection

Widevine

YES

API 19+ (“cenc” scheme) and 24+ (“cbcs”, “cbc1” and “cens”)

PlayReady SL2000

YES

Android TV only

ClearKey

YES

API 21+

SmoothStreaming

ExoPlayer supports SmoothStreaming with the FMP4 container format. Media streams must be demuxed, meaning that video, audio and text must be defined in distinct StreamIndex elements in the SmoothStreaming manifest. The contained audio and video sample formats must also be supported (see the sample formats section for details).

Feature

Supported

Comment

Containers

FMP4

YES

Demuxed streams only

Closed captions/subtitles

TTML

YES

Embedded in FMP4

Content protection

PlayReady SL2000

YES

Android TV only

HLS

ExoPlayer supports HLS with multiple container formats. The contained audio and video sample formats must also be supported (see the sample formats section for details). We strongly encourage HLS content producers to generate high quality HLS streams, as described here.

Feature

Supported

Comment

Containers

MPEG-TS

YES

FMP4

YES

ADTS (AAC)

YES

MP3

YES

Closed captions/subtitles

CEA-608

YES

WebVTT

YES

Metadata

ID3 metadata

YES

Content protection

AES-128

YES

Sample AES-128

NO

Widevine

YES

API 19+ (“cenc” scheme) and 24+ (“cbcs” scheme)

Standalone container formats

Media files in the following container formats can be played directly by ExoPlayer. The contained audio and video sample formats must also be supported (see the sample formats section for details).

Seeking is unsupported because the container does not provide metadata (e.g., a sample index) to allow a media player to perform a seek in an efficient way. If seeking is required, we suggest using a more appropriate container format.