-
Notifications
You must be signed in to change notification settings - Fork 482
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
seekToNextMediaItem() affected by DRM latency, while automatic playlist transitions are not #1602
Comments
As you've seen, ExoPlayer's default behaviour is to request a DRM license for content as soon as it loads the content into memory (
I assume this mneans "cached on disk", because if the video segment has been loaded into memory by ExoPlayer then we should already have requested the DRM license. The best way to manually trigger this session acquisition is via You can get a handle to the right It sounds like you might have already tried something like this, but I'm afraid you haven't really provided enough detail about why it didn't work. |
Thank you so much for your fast reply! You've given me enough information to find a workaround. I did go down the The This has allowed me to implement a workaround: setting a buffering window greater than the current item via If I'm not mistaken, ExoPlayer currently doesn't support any visual transitions between video media items like crossfades, does it? Is that typically implemented with 2 or more players in separate views rendered on top of each other? |
That's correct. Audio crossfade support is tracked by #2. I don't think we have an issue tracking video crossfade, though it is discussed a bit in this closed issue (in the context of the Feel free to open a new enhancement issue to track video crossfade support, I suspect an implementation of this would use the It sounds like you've got a solution to your immediate problem, so I'm going to close this issue. |
The context is using ExoPlayer with Widevine-protected videos exclusively, each requiring their own DRM license. The videos do not have an unencrypted start, they are fully encrypted from the very beginning. They are most of the time cached locally with DashDownloader.
If the media items are set up as a playlist on the player, automatic transitions from one item to the next are seamless and the player gets the DRM license ahead of the next video starting to play. No black screen between the media items.
If the user skips to the next video themselves, via calling seekToNextMediaItem(), the player turns black while the DRM license request happens. Only after it's completed will the next video start playing. A black screen will flash for however long the DRM request takes to complete. This happens even if the video segments are locally cached.
I have a feeling that this issue hasn't been seen much by others before, because most DRM packagers tend to have a default setting of having the first few seconds of a video in the clear, which would likely mask this issue.
I've spent days trying to override all the different parts (DRM session manager, etc.) but I can't find a way to essential prepare the next media item for a player for its DRM license, without the player making that item the current one.
I'm looking for a way to perform either of these scenarios:
After trying very hard, I have the impression that neither option is possible as-is without some upstream changes, but I'd be very happy to be proven wrong and pointed to existing mechanics that would allow either of these scenarios to be implemented.
I think that having more fine-grained control over when DRM license requests happen for an arbitrary media item, decoupled from when it plays, would be very useful for a variety of scenarios.
The text was updated successfully, but these errors were encountered: