How to Add Closed Captions to Roku

Roku enables your TV to stream TV and movies from services like Netflix, Amazon, Hulu, YouTube, and many others. Service providers can add captions to their content through their channel. Roku supports the captioning formats SMPTE-TT, EIA-608, and WebVTT.
  • SMPTE-TT: Supported by MP4 VOD, HLS VOD, Smooth VOD, Smooth Live, and DASH VOD as an external file only.
  • EIA-608: Supported by all AVC streams using MP4 VOD, HLS VOD, HLS Live, Smooth VOD, Smooth Live, and DASH VOD.
  • WebVTT: Embedded into HLS streams, such as HLS VOD and HLS Live.
Closed captions should be added to the roVideoPlayer component. The preferred technique for adding the closed caption track is to use the Content Meta-Data property SubtitleConfig.

Step 1 – Submit Your Video for Transcription

Log into your 3Play Media account. From the Upload tab at the top of the screen, select From Computer.
Submit Your Video File for Captioning
You’ll receive an email when your video has been transcribed.

Step 2 – Download Your Captions in WebVTT Format

Go to the My Files page in your 3Play Media account and select your recording. Click on Download and select the WebVTT or SMPTE-TT format under Web Caption Formats. Save the closed caption file to your computer.
WebVTT and SMPTE-TT option highlighted

Step 3 - Upload your file to Roku

Under Content Meta-Data, you will use the following codes to render closed captions on videos via roVideoScreen. Depending on the caption format, SMPTE-TT or WebVTT, the code will be slightly different. SMPTE-TT
  • This caption format is supported by Roku through TTML formatted external files, or by embedding the TTML directly into the video stream.
  • To use an external TTML file:
  • Set the SubtitleURL content metadata of your roVideoScreen to specify the path.
  • To specify closed captions need to be added, call subtitle_config.
  • Under TrackName specify the url of the TTML file.
  • Under MetaData, specify the stream, which will link to the videos URL.
  • Call ifVideoScreen.ShowSubtitle(true)
  • The captions will render once ifVideoScreen.Play() is called.
A code example is outlined below.
code for smptett caption format
WebVTT
  • This caption format is supported by Roku when embedded into the HLS stream or manifest. WebVTT formats are specified in the SubtitleConfig metadata.
  • Set the SubtitleURL content metadata of your roVideoScreen to specify the path.
  • To specify closed captions need to be added, call subtitle_config.
  • Under TrackName specify the url of the TTML file.
  • TrackName should be set to webvtt/track where track specifies the index of the caption to render.
  • Under MetaData, specify the stream, which will link to the videos URL
A code example is outlined below.
webvtt format

Step 4 - View your video with captions!

streaming videos menu