Skip to content

Fail to show subtitle in Tradition Chinese and Simplified Chinese #2167

@felixyangtw

Description

@felixyangtw

Version

Media3 1.5.0

More version details

No response

Devices that reproduce the issue

Samsung S24 running on Android 14

Devices that do not reproduce the issue

No response

Reproducible in the demo app?

Yes

Reproduction steps

  1. download androidx-media3
  2. add the following to media.exolist.json
    {
    "name": "WebVTT Sample",
    "uri": "https://devstreaming-cdn.apple.com/videos/streaming/examples/adv_dv_atmos/main.m3u8"
    },
  3. run demo
  4. change subtitle to Tradition Chinese or Simplified Chinese

Expected result

It should show subtitle but not in Tradition Chinese or Simplified Chinese.

Actual result

E Unexpected exception loading stream
java.lang.IllegalArgumentException: Out of range: -27
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:204)
at com.google.common.primitives.Chars.checkedCast(Chars.java:83)
at androidx.media3.common.util.ParsableByteArray.peekCharacterAndSize(ParsableByteArray.java:750)
at androidx.media3.common.util.ParsableByteArray.readCharacterIfInList(ParsableByteArray.java:712)
at androidx.media3.common.util.ParsableByteArray.skipLineTerminator(ParsableByteArray.java:698)
at androidx.media3.common.util.ParsableByteArray.readLine(ParsableByteArray.java:566)
at androidx.media3.common.util.ParsableByteArray.readLine(ParsableByteArray.java:532)
at androidx.media3.extractor.text.webvtt.WebvttCueParser.parseCue(WebvttCueParser.java:359)
at androidx.media3.extractor.text.webvtt.WebvttCueParser.parseCue(WebvttCueParser.java:218)
at androidx.media3.extractor.text.webvtt.WebvttParser.parse(WebvttParser.java:101)
at androidx.media3.extractor.text.SubtitleTranscodingTrackOutput.sampleMetadata(SubtitleTranscodingTrackOutput.java:146)
at androidx.media3.exoplayer.hls.WebvttExtractor.processSample(WebvttExtractor.java:220)
at androidx.media3.exoplayer.hls.WebvttExtractor.read(WebvttExtractor.java:162)
at androidx.media3.exoplayer.hls.BundledHlsMediaChunkExtractor.read(BundledHlsMediaChunkExtractor.java:102)
at androidx.media3.exoplayer.hls.HlsMediaChunk.feedDataToExtractor(HlsMediaChunk.java:503)
at androidx.media3.exoplayer.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:467)
at androidx.media3.exoplayer.hls.HlsMediaChunk.load(HlsMediaChunk.java:424)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:450)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
2025-02-20 10:09:09.517 20876-20876 EventLogger androidx.media3.demo.main D downstreamFormat [eventTime=6.30, mediaPos=3.17, window=0, period=0, id=subtitles:中文(繁體), mimeType=text/vtt, container=application/x-mpegURL, language=zh-cmn-hant, labels=[zh-cmn-hant: 中文(繁體)], selectionFlags=[auto]]
2025-02-20 10:09:09.519 20876-20876 EventLogger androidx.media3.demo.main E internalError [eventTime=6.30, mediaPos=3.17, window=0, period=0, loadError
androidx.media3.exoplayer.upstream.Loader$UnexpectedLoaderException: Unexpected IllegalArgumentException: Out of range: -27
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:471)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalArgumentException: Out of range: -27
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:204)
at com.google.common.primitives.Chars.checkedCast(Chars.java:83)
at androidx.media3.common.util.ParsableByteArray.peekCharacterAndSize(ParsableByteArray.java:750)
at androidx.media3.common.util.ParsableByteArray.readCharacterIfInList(ParsableByteArray.java:712)
at androidx.media3.common.util.ParsableByteArray.skipLineTerminator(ParsableByteArray.java:698)
at androidx.media3.common.util.ParsableByteArray.readLine(ParsableByteArray.java:566)
at androidx.media3.common.util.ParsableByteArray.readLine(ParsableByteArray.java:532)
at androidx.media3.extractor.text.webvtt.WebvttCueParser.parseCue(WebvttCueParser.java:359)
at androidx.media3.extractor.text.webvtt.WebvttCueParser.parseCue(WebvttCueParser.java:218)
at androidx.media3.extractor.text.webvtt.WebvttParser.parse(WebvttParser.java:101)
at androidx.media3.extractor.text.SubtitleTranscodingTrackOutput.sampleMetadata(SubtitleTranscodingTrackOutput.java:146)
at androidx.media3.exoplayer.hls.WebvttExtractor.processSample(WebvttExtractor.java:220)
at androidx.media3.exoplayer.hls.WebvttExtractor.read(WebvttExtractor.java:162)
at androidx.media3.exoplayer.hls.BundledHlsMediaChunkExtractor.read(BundledHlsMediaChunkExtractor.java:102)
at androidx.media3.exoplayer.hls.HlsMediaChunk.feedDataToExtractor(HlsMediaChunk.java:503)
at androidx.media3.exoplayer.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:467)
at androidx.media3.exoplayer.hls.HlsMediaChunk.load(HlsMediaChunk.java:424)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:450)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) 
at java.lang.Thread.run(Thread.java:1012) 
]
2025-02-20 10:09:09.527 20876-21622 ExoPlayerImplInternal androidx.media3.demo.main E Disabling track due to error: id=subtitles:中文(繁體), mimeType=application/x-media3-cues, container=application/x-mpegURL, codecs=text/vtt, language=zh-cmn-hant, labels=[zh-cmn-hant: 中文(繁體)], selectionFlags=[auto]
androidx.media3.exoplayer.upstream.Loader$UnexpectedLoaderException: Unexpected IllegalArgumentException: Out of range: -27
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:471)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalArgumentException: Out of range: -27
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:204)
at com.google.common.primitives.Chars.checkedCast(Chars.java:83)
at androidx.media3.common.util.ParsableByteArray.peekCharacterAndSize(ParsableByteArray.java:750)
at androidx.media3.common.util.ParsableByteArray.readCharacterIfInList(ParsableByteArray.java:712)
at androidx.media3.common.util.ParsableByteArray.skipLineTerminator(ParsableByteArray.java:698)
at androidx.media3.common.util.ParsableByteArray.readLine(ParsableByteArray.java:566)
at androidx.media3.common.util.ParsableByteArray.readLine(ParsableByteArray.java:532)
at androidx.media3.extractor.text.webvtt.WebvttCueParser.parseCue(WebvttCueParser.java:359)
at androidx.media3.extractor.text.webvtt.WebvttCueParser.parseCue(WebvttCueParser.java:218)
at androidx.media3.extractor.text.webvtt.WebvttParser.parse(WebvttParser.java:101)
at androidx.media3.extractor.text.SubtitleTranscodingTrackOutput.sampleMetadata(SubtitleTranscodingTrackOutput.java:146)
at androidx.media3.exoplayer.hls.WebvttExtractor.processSample(WebvttExtractor.java:220)
at androidx.media3.exoplayer.hls.WebvttExtractor.read(WebvttExtractor.java:162)
at androidx.media3.exoplayer.hls.BundledHlsMediaChunkExtractor.read(BundledHlsMediaChunkExtractor.java:102)
at androidx.media3.exoplayer.hls.HlsMediaChunk.feedDataToExtractor(HlsMediaChunk.java:503)
at androidx.media3.exoplayer.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:467)
at androidx.media3.exoplayer.hls.HlsMediaChunk.load(HlsMediaChunk.java:424)
at androidx.media3.exoplayer.upstream.Loader$LoadTask.run(Loader.java:450)

Media

media url:

https://devstreaming-cdn.apple.com/videos/streaming/examples/adv_dv_atmos/main.m3u8"

Bug Report

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions