-
Notifications
You must be signed in to change notification settings - Fork 386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Subtitle parsing broken in 1.4.0-alpha02+ #1516
Comments
Looking at the code, it seems the exception you're seeing is basically an index out of bounds issue: media/libraries/extractor/src/main/java/androidx/media3/extractor/text/webvtt/WebvttSubtitle.java Lines 61 to 65 in 023e9d1
I think I can see the issue with the logic here - we need to either not return media/libraries/extractor/src/main/java/androidx/media3/extractor/text/LegacySubtitleUtil.java Lines 40 to 52 in 023e9d1
|
I've added a test that creates the same stack trace, and sent a change the fixes the code to not crash in this case - I hope to include this in |
Issue: #1516 #cherrypick PiperOrigin-RevId: 648416119
This should be fixed by the commit above. |
Hello @icbaker I'm testing this out in
and it is indeed because the
I'm working on changing the setup to try the legacy way and will report on the results there |
The array of [0, 241000, 241000, 1409000, 1409000, 1442000, 1442000, 1475000, 1475000, 1509000, 1509000, 1576000, 1576000, 1642000, 1642000, 1676000, 1676000, 1742000, 1742000, 1776000, 1776000, 1809000, 1809000, 1843000, 1843000, 2009000, 2009000, 2043000, 2043000, 2076000, 2076000, 2109000, 2109000, 2210000, 2210000, 2243000, 2243000, 2276000, 2276000, 2310000, 2310000, 2610000, 2610000, 2677000, 2677000, 2810000, 2810000, 2844000, 2844000, 2877000, 2877000, 3211000, 3211000, 3244000, 3244000, 3277000, 3277000, 3511000, 3511000, 3544000, 3544000, 3578000, 3578000, 3644000, 3644000, 3678000, 3678000, 3711000, 3711000, 4004000] But the value we are searching for in |
I'd like to point out that ExoPlayer doesn't crash, everything is caught. It's just that our playback is broken (we get a 3001) when trying to play with subtitles on |
Please can you give us a way to play a stream that reproduces this issue? Without that I'm afraid we're just guessing at the possible cause (and it seems that last time we guessed wrong). |
Please either upload it here or send it to android-media-github@google.com with the subject |
Our videos are locked with DRM and our DRM tokens are only good for 10 minutes. I cannot share our source so I think we may be stuck here. It may be that I can provide you with a dynamic URL that will return DRM tokens you can use(along with our custom DRM implementation) but I need to consider this.. |
Confirmed our subtitles show properly and no playback errors if we use:
|
@JonWatson Are you able to share the DASH manifest URL via email, without the DRM license/token info? That may be enough for us to reproduce the issue (since it only concerns subtitles, which presumably aren't encrypted). |
Yes I can do that! An example manifest URL has been sent to |
This is caused when the requested "output start time" is equal to or larger than the last event time in a `Subtitle` object. This resolves the error in Issue: #1516, but subtitles are still not renderered (probably because the timestamps aren't what we expect somewhere, but I need to investigate this part further). #cherrypick PiperOrigin-RevId: 660462720
Thanks for the test stream, it's been really helpful to look into this issue. I've fixed the Looking in your DASH manifest it seems that your subtitles are raw WebVTT (not encapsulated in ISOBMFF / MP4) but are segmented. I believe this combination is not supported by the DASH-IF IOP 5.2.10 (emphasis mine):
I appreciate that this stream works on 1.3.1, and not on 1.4.0, so even if this content isn't fully spec compliant it still seems like a regression in the library. I'm still working on plumbing the right timestamps around to get these subtitles showing up again - I haven't quite got it working yet. |
@JonWatson Ah I think the stream stopped working today - would you be able to email a new link so I can continue debugging? Thanks! |
Done! Thank you |
If the length of the `ExtractorInput` is not known then the `subtitleData` field is re-sized by 1kB each time (`SubtitleExtractor.DEFAULT_BUFFER_SIZE`), so the end of the array is often not populated. This change ensures that `length` is propagated to `SubtitleParser`, so that implementations don't try and parse the garbage/zero bytes at the end of the array. Discovered while investigating Issue: #1516 #cherrypick PiperOrigin-RevId: 661195634
@JonWatson I've made some hacky local changes which get subtitles showing for your stream, but I need to clean them up before being able to submit (because at the moment they will break other use-cases). Unfortunately I think the stream stopped working again today - would you be able to send a new one? |
Thanks @icbaker , new manifest has been emailed |
This is caused when the requested "output start time" is equal to or larger than the last event time in a `Subtitle` object. This resolves the error in Issue: #1516, but subtitles are still not renderered (probably because the timestamps aren't what we expect somewhere, but I need to investigate this part further). #cherrypick PiperOrigin-RevId: 660462720 (cherry picked from commit 3763e5b)
If the length of the `ExtractorInput` is not known then the `subtitleData` field is re-sized by 1kB each time (`SubtitleExtractor.DEFAULT_BUFFER_SIZE`), so the end of the array is often not populated. This change ensures that `length` is propagated to `SubtitleParser`, so that implementations don't try and parse the garbage/zero bytes at the end of the array. Discovered while investigating Issue: #1516 #cherrypick PiperOrigin-RevId: 661195634 (cherry picked from commit f37f969)
Version
Media3 main branch
More version details
Subtitle parsing for a given DASH asset (DRM protected) works fine in
1.4.0-alpha01
but in1.4.0-alpha02
and1.4.0-beta01
the playback fails with the following exception. Without provding the asset, can you help figure this out? Any info from the DASH manifest that I could provide to help? Again, same asset plays fine and displays subtitles in1.4.0-alpha01
Devices that reproduce the issue
Nvidia Shield TV
Pixel 7 Pro
Devices that do not reproduce the issue
None known
Reproducible in the demo app?
Yes
Reproduction steps
Expected result
Playback succeeds even when displaying subtitles
Actual result
Receive ERROR_CODE_PARSING_CONTAINER_MALFORMED 3001 during playback when attempting to display subtitles
Media
Private URL. Please let me know if there is some info I can provide from the DASH manifest
Bug Report
adb bugreport
to android-media-github@google.com after filing this issue.The text was updated successfully, but these errors were encountered: