Table of Contents
Unified Origin supports playout to all formats of TTML subtitles (EBU-TT, SMPTE-TT, DFXP or CFF-TT) stored in an MP4 container.
New in version 1.7.31.
Unified Origin also support playout of fragmented WebVTT to HLS and MPEG DASH players that support the wvtt codec.
We recommend using fragmented DFXP for maximal interoperability as it is the most constrained format. You may use Unified Packager to convert SRT or (Web)VTT to TTML or to create (fragmented) MP4 files from WebVTT or TTML, see Packaging Subtitles.
Subtitles stored in an MP4 container are treated similar to audio and video tracks. They have similar properties like 'language' and 'bitrate' and can simply be added to the list of inputs on the command line when creating the server manifest file.
#!/bin/bash mp4split -o presentation.ism \ video-400.ismv \ video-800.ismv \ subtitles.ismt
If you have multiple subtitles, you simply add the various subtitle files:
#!/bin/bash mp4split -o presentation.ism \ video-400.ismv \ video-800.ismv \ subs_eng.ismt \ subs_spa.ismt \ subs_fra.ismt
If properties are missing or set incorrectly in the source file of the subtitles,
this should preferably be corrected when creating the (fragmented) MP4 file (e.g.
subtitles.ismt) from the source. This ensures that
mp4split can infer and add
the correct information to the server manifest when running a command like the
above. However, if correcting these properties when creating the (fragmented) MP4
file from the subtitle source is not possible, they can also be specified when
generating the server manifest file.
For example, you can set the 'language' attribute of the subtitle track:
#!/bin/bash mp4split -o presentation.ism \ video-400.ismv \ video-800.ismv \ subtitles.ismt --track_language=eng
The track_language is the country code as specified in ISO 639-2/T.
After creating the manifest you can enable the subtitles in your player.
Some of the out-of-the-box players have support for showing subtitles or providing a language selection box.
Unified Origin's support for subtitles is similar for MPEG-DASH, HSS and HLS: the source content must be TTML or WVTT samples stored in a fragmented MP4 (.ismt) container.
The MIME type of the subtitle track listed in the .mpd is
the @contentType attribute is
text, the @codecs attribute is
for TTML-based samples and
wvtt for VTTCue samples.
<AdaptationSet group="3" contentType="text" lang="ru" minBandwidth="1000" maxBandwidth="1000" mimeType="application/mp4" codecs="stpp">
For DVB-DASH the input format must be
EBU-TT-D, see page 27 of DVB Document A168 July 2014.
Please see the Unified Streaming Demo for an example that uses subtitles in DASH.
For DASH, sidecar subtitle files are also supported, but only when offline packaging with Unified Packager (as Unified Origin does not support sidecar subtitles). Please see Adding TTML or WebVTT sidecar subtitles for MPEG-DASH for an explanation of how to add WebVTT when packaging DASH.
Subtitles for HLS require at least version 4 of the HLS protocol.
Make sure to set this using the --hls.client_manifest_version option:
When you have multiple subtitles, the player normally picks the one it finds most suitable (e.g. when the language of the subtitle track matches the language of the phone). If no match is made then the default track is taken. In our case the first track in a group that is always marked as the default.
To change the default (i.e. the track listed first) combine the fragmented MP4 files (.ismt's) for the various languages into a single fragmented MP4 before generating the server manifest. The order in which the subtitles are added will be followed, so that the first track becomes the default, see Packaging with track order and defaults.
Please see the Unified Streaming Demo for an example that uses subtitles in HLS.
Enabling subtitles in the Silverlight player (MMP Player Framework 2.7) is
done by adding the following value to the
param name="InitParams" value="enablecaptions=true, selectedcaptionstream=textstream_eng, mediaurl=...
Note that parameter for the 'selectedcaptionstream' is the name of the text track as given by the @Name attribute in the Smooth Streaming client manifest.
Please see the Unified Streaming Demo for an example that uses subtitles in HSS.