question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

CEA608 Captions do not play

See original GitHub issue

Hello,

I have embedded captions in the stream (DASH) it has a valid format CEA608. But it won’t play on ExoPlayer. I can still see there is a caption available from the menu, but when I try to select it… The player won’t play the captions. These are some logs from the demo app. No errors are getting thrown on the logcat.

The demo app used has version 2.14.0.

At this point, I am not sure what is the issue here.

I did the test at https://bitmovin.com/demos/stream-test?format=dash&manifest=https%3A%2F%2Fbitmovin-a.akamaihd.net%2Fcontent%2FMI201109210084_1%2Fmpds%2Ff08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd and https://demo.theoplayer.com/test-your-stream-with-statistics. Both the player plays captions just fine.

2022-05-10 10:52:36.116 com.google.android.exoplayer2.demo D/EventLogger: timeline [eventTime=0.08, mediaPos=0.00, window=0, period=0, periodCount=1, windowCount=1, reason=SOURCE_UPDATE
2022-05-10 10:52:36.116 com.google.android.exoplayer2.demo D/EventLogger:   period [1324.89]
2022-05-10 10:52:36.116 com.google.android.exoplayer2.demo D/EventLogger:   window [1324.89, seekable=true, dynamic=false]
2022-05-10 10:52:36.116 com.google.android.exoplayer2.demo D/EventLogger: ]
2022-05-10 10:52:36.116 com.google.android.exoplayer2.demo D/EventLogger: videoEnabled [eventTime=0.08, mediaPos=0.00, window=0, period=0]
2022-05-10 10:52:36.117 com.google.android.exoplayer2.demo D/EventLogger: audioEnabled [eventTime=0.08, mediaPos=0.00, window=0, period=0]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger: tracks [eventTime=0.08, mediaPos=0.00, window=0, period=0
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   MediaCodecVideoRenderer [
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     Group:0, adaptive_supported=N/A [
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:       [ ] Track:0, id=video=422555, mimeType=video/avc, bitrate=422555, codecs=avc1.42C00D, res=416x240, supported=YES
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     ]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     Group:1, adaptive_supported=YES [
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:       [X] Track:0, id=video=519263, mimeType=video/avc, bitrate=519263, codecs=avc1.42C01E, res=640x360, supported=YES
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:       [X] Track:1, id=video=807408, mimeType=video/avc, bitrate=807408, codecs=avc1.42C01E, res=640x360, supported=YES
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:       [X] Track:2, id=video=1097040, mimeType=video/avc, bitrate=1097040, codecs=avc1.42C01E, res=640x360, supported=YES
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:       [X] Track:3, id=video=1404883, mimeType=video/avc, bitrate=1404883, codecs=avc1.4D401F, res=960x540, supported=YES
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     ]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   ]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   MediaCodecAudioRenderer [
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     Group:0, adaptive_supported=N/A [
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:       [X] Track:0, id=audio_eng=96000, mimeType=audio/mp4a-latm, bitrate=96000, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=en, supported=YES
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     ]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   ]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   TextRenderer [
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     Group:0, adaptive_supported=N/A [
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:       [X] Track:0, id=3:cea608, mimeType=application/cea-608, supported=YES
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:     ]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   ]
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   MetadataRenderer []
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   CameraMotionRenderer []
2022-05-10 10:52:36.118 com.google.android.exoplayer2.demo D/EventLogger:   Unmapped [
2022-05-10 10:52:36.119 com.google.android.exoplayer2.demo D/EventLogger:     Group:0 [
2022-05-10 10:52:36.119 com.google.android.exoplayer2.demo D/EventLogger:       [ ] Track:0, id=img=9000, mimeType=null, bitrate=9000, codecs=jpeg, supported=NO
2022-05-10 10:52:36.119 com.google.android.exoplayer2.demo D/EventLogger:     ]
2022-05-10 10:52:36.119 com.google.android.exoplayer2.demo D/EventLogger:   ]
2022-05-10 10:52:36.119 com.google.android.exoplayer2.demo D/EventLogger: ]
2022-05-10 10:52:36.139 com.google.android.exoplayer2.demo D/EventLogger: downstreamFormat [eventTime=0.10, mediaPos=0.00, window=0, period=0, id=audio_eng=96000, mimeType=audio/mp4a-latm, bitrate=96000, codecs=mp4a.40.2, channels=2, sample_rate=44100, language=en]
2022-05-10 10:52:36.140 com.google.android.exop

If you have an email address, can you please share it, so I can share the video file?

Issue Analytics

  • State:closed
  • Created a year ago
  • Comments:6 (3 by maintainers)

github_iconTop GitHub Comments

1reaction
toniheicommented, May 17, 2022

We intentionally ignore selections for embedded streams if the corresponding primary stream isn’t enabled at the same time. In that sense it’s working as intended that the second adaptation set isn’t also decoding the subtitles from the first adaptation set (because this would mean loading two video tracks at the same time just to get the embedded subtitles).

or whether this media structure [1] is unusual enough that the existing behaviour is acceptable

@nishantkp Can you provide more insights into why the streams are set up like this? The current setup seems indeed very unusual because it (a) forces people who require captions to choose the lowest video quality (b) either disables video quality adjustment completely or unnecessarily removes the lowest quality from the list of adaptive qualities that can be used. Both things don’t sound ideal to me, but maybe there is a use case I don’t see here.

Both the player plays captions just fine.

Most likely because they just use the first AdaptationSet by default without any further logic to choose the most useful AdaptationSet.

1reaction
icbakercommented, May 17, 2022

When I play the link provided with the demo app and enable the ‘unknown’ subtitle track I see no subtitles.

I looked in the manifest and noted that there are two video AdaptionSet groups. One contains <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" /> and a single <Representation> node (416x240). The other doesn’t contain <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" /> and contains 4 <Representation> nodes. You can see this structure reflected in the two video Groups in the EventLogger output you included in the original report.

I manually selected the 416x240 track only (using the ‘SELECT TRACKS’ button in the demo app) and then subtitles appeared. They didn’t appear before because the player prefers the AdaptionSet with a choice of bitrates, because this will provide a better video playback experience for the viewer.

Over to @tonihei to see if we should do something different here (e.g. force-selecting the only subtitle-declaring AdaptionSet when subtitles are enabled) - or whether this media structure [1] is unusual enough that the existing behaviour is acceptable.

[1] Two AdaptionSets that seem to represent the same content with different codecs.

Read more comments on GitHub >

github_iconTop Results From Across the Web

What is 608 & 708 Closed Captioning? - 3Play Media
608 closed captions only support the display of regular Latin language characters in languages such as English, Spanish, and French. Extended ...
Read more >
CEA 608 CEA 708 closed captions - CaptioningStar
Both CEA-608 and CEA-708 are legal laws governing closed captioning of TV transmissions in the US, Canada, and Mexico. Both standards, though, ...
Read more >
Show subtitles or captions in QuickTime Player on Mac
Open a movie that has subtitles or captions, then do any of the following: View subtitles: Choose View > Subtitles, then choose a...
Read more >
CEA-608 captions are garbled · Issue #2395 · shaka ... - GitHub
Yes, the captions are meant to be in English. Shaka player via HLS manifest does identity the captions as English. Shaka player doesn't...
Read more >
CEA-608/708 Closed Captions - Your content accessible for ...
CEA -608 and CEA-708 are both standards used for closed captions in broadcasting television, but are widely used for online video and video...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found