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
- 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:
- Configuration:
this.player.configure({
streaming: {
alwaysStreamText: true
}
});
- Call
selectTextTrackafterplayer.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:
- Select Live TV from the main menu
- Press Select on one of the live channels at the bottom of the screen
- Once video is playing, notice that captions do not show up
5. Logs or crash report
- log-live.txt (1.6 MB)
- manifest.xml.txt (32.5 KB)
- subtitles.ttml.txt (1.5 KB)
- Segment requests example:
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
