MPEG DASH Subtitles

Subtitles support for MPEG DASH

The mp4dash tool supports including one or more subtitles track(s) in an MPEG DASH presentation.
There are two ways for subtitles to be used with MPEG DASH. Subtitles data may be encapsulated in MP4 tracks, just like audio and video frames, or may be stored in a separate, standalone text or XML file without MP4 encapsulation.


Subtitles can be encoded in a varietry of formats. Most of those formats belong to two family of related formats:

IMSC1 Conformant Profiles

IMSC1 conformant profiles of TTML include:

  • W3C TTML
  • SMPTE Timed Text (SMPTE-TT)
  • EBU-TT


WebVTT is a text format, based on the SRT text format. The specification can be found here:

3GPP Timed Text

Another timed text format defined by 3GPP. This format is currently not supported.

Using Subtitles with mp4dash

The mp4dash packager can take one or more subtitles file(s) as input.

External Subtitles

This is the simplest mode to support, as no MP4 encapsulation is necessary, so a simple WebVTT test or IMSC1-conformant TTML XML file is all that’s needed to hold the subtitles.
When the subtitles are in non-MP4 external files, the input filenames must be prefixed with an input specifier [+format=webvtt] for WebVTT-formatted subtitles, or [+format=ttml] for IMSC1-conformant TTML files. Also, since WebVTT files do not carry language information, you may want to specify the language code for the input file by adding the parameter +language=xxx to the input specifier.


Single english-language WebVTT subtitles file

mp4dash video.mp4 [+format=webvtt,+language=eng]sub_eng_webvtt.txt

Single TTML subtitles file

mp4dash video.mp4 [+format=ttml]sub_fre_ttml.xml

Two WebVTT subtitles files

mp4dash video_00500.mp4 [+format=webvtt,+language=eng]sub_eng_webvtt.txt [+format=webvtt,+language=fre]sub_fre_webvtt.txt

MP4-Encapsulated Subtitles

MPEG- 4 Part 30 (ISO/IEC 14496-30) defines a way to carry IMSC1-conformat TTM XML in MP4 tracks. Those tracks have a codec 4-character code of stpp.
When the subtitles are encapsulated in MP4 tracks, you must specify the --subtitles command line option to tell mp4dash to include those tracks in the DASH output.


With a single MP4 input file that contains video, audio and subtitles tracks.

mp4dash --subtitles video_file_with_subtitle_track.mp4

With a separate MP4 file for video/audio and subtitles

mp4dash --subtitles video.mp4 subtitles.mp4