## Overview

Subtitles and/or captions are terms sometimes used indistinctly to refer to the text version of the speech and non-speech audio information needed to understand the content, that is displayed as a layer on top of the video screen. W3C describes:

**Subtitles** are implemented the same way as captions. Subtitles/interlingual subtitles are usually only the spoken audio (for people who can hear the audio but do not know the spoken language). They can be a translation of the caption content, including non-speech audio information.

**Captions** are needed for accessibility, whereas subtitles in other languages are not directly an accessibility accommodation. (Source: [Captions/Subtitles](🔗))

Some of the most popular formats for subtitles used on the industry right now are listed below with references to their correspondent specification:

  • WebVTT: [WebVTT: The Web Video Text Tracks Format](🔗)

  • SRT: [Subtitles](🔗)

  • TTML: [Timed Text Markup Language 2 (TTML2) ](🔗)

  • EBU-TT-D: <https://tech.ebu.ch/docs/tech/tech3380v1_0.pdf>

  • IMSC1: [TTML Profiles for Internet Media Subtitles and Captions 1.2 ](🔗)

  • CEA-608:[ Line 21 Data Services (ANSI/CTA-608-E S-2019) ](🔗) (latest revision of the standard, free of charge)

  • CEA-708: [Digital Television (DTV) Closed Captioning (ANSI/CTA-708-E R-2018)](🔗) (latest revision of the standard, free of charge)

For a more detailed explanation and comparison between subtitles format, please refer to: TTML and derived captions formats

## Compatibility with Bitmovin SDKs

_1_ - Side loaded WebVTT supported<br> _2_ - Fragmented WebVTT (Live, HLS) supported<br> _3_ - ISOBMFF-wrapped WebVTT supported<br> _4_ - ISOBMFF-wrapped TTML/DFXP supported<br> _5_ - In-Manifest Webvtt support for DASH<br> _6_ - In-Manifest Webvtt support for HLS


  • Side-loaded Webvtt is supported for both HLS and DASH : Android SDK, iOS/tvOS SDK (rendering to be done by app for customUI/SystemUI), Web SDK.

  • In-Manifest Webvtt support for HLS : iOS/tvOS SDK , Web SDK (Safari) including rendering support. Also supported in Android SDK and Web SDK for non-Safari browsers.

  • In-Manifest Webvtt support for DASH : This is supported when Webvtt subtitles are wrapped in MP4 container as per DASH IOP recommendation(DASH-IF Interportability Guidelines , section 6.4.5. Guidelines for side-loaded TTML and WebVTT files).

## Subtitle and Caption Format Support Matrix

This table lists the officially supported Subtitle and Closed Captions (CC) Formats of the Bitmovin player. Subtitles and CCs could be configured through our JavaScript API and player configuration.

Streaming FormatSubtitle/CC FormatBitmovin Player Support
MPEG-DASHCEA-608 over 708
HLSCEA-608 over 708

_\*_ Not available on iOS

## Legend

✅ supported | ✖ not supported

## Styling and positioning Subtitles

Subtitles styling and positioning depends on the type of UI used. Either **Bitmovin Web UI** (available for Desktop browsers, iOS and Android) or the **NativeUI** (Android, iOS, tvOS, Roku).


For further details on styling subtitles on Web SDK please visit: [https://bitmovin.com/demos/caption-styling ](🔗)

Also this Github repository contains a full example of customising the subtitles view: [bitmovin-player-web-samples/subtitles at main · bitmovin/bitmovin-player-web-samples ](🔗)


When using **Bitmovin Web UI** the capabilities are dependent of the CSS and Javascript features provided by **Bitmovin UI**. A **Custom HTML Player UI** can be used, in order to expand the customisation of subtitles. Please refer to the Bitmovin Player UI Github repository to know more about creating a custom Web UI.

On the other hand, a **Custom Native UI** can be also used, please refer to Bitmovin’s [Android samples repository](🔗) to see a sample of using **Custom UI Subtitle View**.


In iOS when using **Bitmovin Web UI**, the capabilities are dependent of the CSS and Javascript features provided by **Bitmovin UI**. Like for Android, a Custom HTML Player UI can be used, in order to expand the customisation of subtitles. Please refer to [Custom HTML UI](🔗) for a sample app.

When using SystemUI styling capabilities are restricted to the ones offered by AVFoundation. Please check the [SystemUI sample](🔗) in our Github repository.


The main difference between tvOS with iOS is that it does not support **Bitmovin UI** only **System UI** or a Custom **NativeUI** . So, styling and positioning capabilities are restricted to AVFoundation entirely.