Using Captions with the Brightcove Native SDKs

In this topic, you will learn how to use captions with apps built with the Brightcove Native SDKs.


Closed captions provide additional information about your video for individuals who wish to access it. Captions are necessary for the deaf and hard of hearing to access the audio portion of your videos. If you are new to captions, see the Overview: Adding Captions to a Video document.

It is important to understand which types of captions work best for each video format. Begin by reviewing the Video Formats and Captioning document. Brightcove recommends using HLS or DASH videos with WebVTT captions.


With HLS and DASH video, there are two options for captions playback:

In-manifest WebVTT

When using In-manifest WebVTT captions with HLS or DASH videos, your captions will just work. There is nothing extra that you need to do to implement these captions.

In-manifest WebVTT captions are ingested with your videos. You can only create in-manifest files if you use Dynamic Ingest with Dynamic Delivery. For details, see the following:

Captions are recognized as in-manifest when the m3u8 file contains the following tag:



Scenario Location of text track Type of text track #EXT-X-MEDIA:TYPE=SUBTITLES tag
Dynamic Delivery ingested video
Dynamic Ingest API
CDN Segmented Yes

External (Sidecar) WebVTT

External WebVTT captions are text files separate from the video. You can associate captions files with a video as follows:


Scenario Location of text track Type of text track #EXT-X-MEDIA:TYPE=SUBTITLES tag
Legacy ingested video (no Dynamic Delivery)
Dynamic Ingest API
CDN Not segmented No
Legacy ingested video (no Dynamic Delivery)
Remote URL
Media Module or CMS API
Original Not segmented No
Dynamic Delivery ingested video
remote URL
Media Module or CMS APII
Original Not segmented No


For details about setting captions, themes, and default captoins, see the Code Snippets using the Native SDK for Android.


When using external WebVTT captions, you need to use the Sidecar Subtitles functionality for the Player SDK for iOS and tvOS.

When retrieving videos from your Video Cloud library using the BCOVPlaybackService, your videos and text tracks will be formatted for Sidecar Subtitles.

For Brightcove Player customer without Video Cloud or you are providing your own videos, then you need to structure the text tracks as shown in the Manually populating subtitle data section of the Sidecar Subtitles documentation.

Synchronizing WebVTT captions

If you are using WebVTT captions, make sure the video and audio is synchronized with the captions. Learn how to do this in the Synchronizing WebVTT Captions document.

Styling captions

WebVTT captions can be styled to match your company preferences. For details, see the Styling Captions document.

Picture-in-Picture mode

Captions can be enabled while in Picture-in-Picture mode. For details, see the Picture in Picture with the Native SDKs document.


If a video has captions associated with it, you will see a captions icon in the control bar. Select this icon.

Captions icon
Captions icon

Then, choose your preferred language.

Select language
Select language

During video playback, you should see captions displayed.

Captions display
Captions displayed