In-band captions do not work for Live streams

:backhand_index_pointing_right: Bug Description


1. Summary

For Live streams, in-band captions do not show up. The first caption segment downloads successfully, but no subsequent segments get downloaded. A separate web app (separate codebase) works fine with the same manifest and caption URLs, indicating this is an issue in the Vega app. The caption format for Live is TTML.

We’re using Shaka player with KeplerCaptionsView to render in-band captions. For VOD streams the captions are displayed correctly (VTT format), running the same code and configuration.

App Name: MGM+

App Link on Amazon Appstore: https://www.amazon.com/gp/product/B07PPPZQC6

Bug Severity

  • Impacts operation of app
  • Blocks current development
  • Improvement suggestion
  • Issue with documentation (If selected, please share the doc link and describe the issue)
  • Other

2. Steps to Reproduce

  1. Load video: player.load(manifestUrl)

3. Observed Behavior

One single caption segment gets downloaded after starting the stream. Video and audio segments keep downloading every few seconds as the video plays on, and the manifest is refreshed multiple times, but no other caption segment gets downloaded. Captions are never displayed.

4. Expected Behavior

Caption segments should be getting downloaded regularly, once every few seconds, similar to video and audio segments. Captions should be displaying with the video.

4.a Possible Root Cause & Temporary Workaround

Amazon Q’s analysis, based on the attached log:

- TTML segment is downloaded (type = 2) ✓
- TTML is parsed (DOM parseFromString) ✓
- TextTrack mode is "showing" ✓
- KeplerCaptionsView is enabled ✓
- BUT: No cues are ever added to the TextTrack ✗

The problem: After Shaka Player parses the TTML segment, it's not calling addCue() to add the parsed cues to the TextTrack. This means the KeplerCaptionsView has nothing to display.

Amazon Q’s suggestions, tried without success:

  1. Configuration:
this.player.configure({
  streaming: {
    alwaysStreamText: true
  }
});
  1. Call selectTextTrack after player.load():
await this.player.load(content.videoUrl, startTime);

const textTracks = this.player.getTextTracks();

if (textTracks && textTracks.length > 0) {
  this.player.selectTextTrack(textTracks[0]);
}

How to reproduce in the MGM+ app:

  1. Select Live TV from the main menu
  2. Press Select on one of the live channels at the bottom of the screen
  3. Once video is playing, notice that captions do not show up

5. Logs or crash report

6. Environment

  • SDK Version: 0.21.5245

  • App State: Foreground

  • OS Information:

NAME="OS"
OE_VERSION="4.0.0"
OS_MAJOR_VERSION="1"
OS_MINOR_VERSION="1"
RELEASE_ID="14"
OS_VERSION="1.1"
BRANCH_CODE="TV Ship day60"
BUILD_DESC="OS 1.1 (TV Ship day60/91)"
BUILD_FINGERPRINT="4.0.216859.0(3072cab629675a74)/91N:user/release-keys"
BUILD_VARIANT="user"
BUILD_TAGS="release-keys"
BUILD_DATE="Wed Jan 28 22:43:49 UTC 2026"
BUILD_TIMESTAMP="1769640229"
VERSION_NUMBER="1401010009120"
  • Player SDK: Shaka
  • Player SDK Version: 4.6.18-r2.11
  • Audio Codecs: AAC
  • Video Codecs: H.264
  • Manifest Types: DASH

Hi @Adrian_Istrate1,

Thank you for the detailed bug report on the in-band captions issue for Live streams.

Our team is investigating this issue and will provide an update as soon as we have more information.

Thanks for helping us improve the Vega platform.

Warm regards,
Aishwarya