-
Notifications
You must be signed in to change notification settings - Fork 6k
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
FMP4 extractor can output metadata in the order if media contains v0 and v1 emsg atoms #9996
Comments
Thanks for the detailed report! This isn't actually related to the manifest having multiple periods. The problem is caused by media segments that contain both version 0 and version 1 Version 0 The mixture of version 0 and version 1 Regarding your workaround: It might work, but it doesn't feel like the safest thing to be doing. As per the description of the commit that added the assertion, the assertion prevents a "hard-to-detect failure mode". It would be safer to make a change in |
Thank you for the clear explanation @ojw28. I appreciate the details as I try to learn more about these different video specs. I will pass along this information about the mixture of version 0 and version 1 |
It looks there are two types of metadata in the segment, where one is using v1 and the other v0. I don't think mixing the two is invalid. That said, it does seem a bit unusual. You'd probably want to use v0 atoms everywhere (if you need to support clients that don't support v1 atoms), or you'd want to use v1 atoms everywhere because they're easier for clients to handle (if supported)! We will push a fix to |
Issue: google/ExoPlayer#9996 #minor-release PiperOrigin-RevId: 430773329
Issue: #9996 #minor-release PiperOrigin-RevId: 430773329
Issue: google/ExoPlayer#9996 #minor-release PiperOrigin-RevId: 430773329 (cherry picked from commit 5a304fd)
Hello! We are having a playback issue with our multi-period DASH livestreams. To summarize, when the ExoPlayer encounters small gaps between two periods in a DASH stream, the ExoPlayer throws an exception and playback stops.
Example Stack-trace:
ExoPlayer Versions affected
This issue affects all recent releases of the ExoPlayer starting with v2.12.0. I confirmed it also affects the latest release v2.16.1. It does not affect ExoPlayer v2.11.8.
This issue is device independent, so it seemingly affects all devices.
Reproduction Steps
We have a sample video harvested directly from one of our DASH livestreams that can be viewed here: https://d2aieihupeq7i1.cloudfront.net/multi-period-issue/index.mpd
To reproduce the issue, play that video in the ExoPlayer Demo app and observe. Playback will stop at ~31 seconds.
ADB Bug Report
Google Pixel 5, Android 12.0
bugreport-redfin-SP1A.211105.003-2022-02-18-12-13-39.zip
Notes
It appears this is a regression that started with ExoPlayer v2.12.0 due to code added in this commit: a6be8ee
In that commit, an assertion was added to the beginning of SampleQueue#commitSample():
As you can see by the stack-trace, this is where the
IllegalArgumentException
is thrown.The commit message says this about the assertion:
The rest of the commit seems to be aimed at fixing an extractor issue related to HLS playback. However, this is breaking playback of our DASH streams, which I'd guess was not intended.
We have some upcoming deadlines that will likely make us unable to wait for a fix to be implemented. It appears that DASH playback works fine when I just comment out this assertion, so while we wait for a fix, we may fork the ExoPlayer and have this
commitSample()
method skip the assertion when DASH content is being played. Does that seem like a reasonable solution in the interim or do you have another suggested workaround?Let me know if I can provide any other information. Thank you!
The text was updated successfully, but these errors were encountered: