-
Notifications
You must be signed in to change notification settings - Fork 512
The streaming continues beyond the duration if VMAP has scheduled advertises after duration itself #2215
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
Comments
Thanks for your report. I assume you are referring to the client-side IMA ad extension of ExoPlayer.
Let me reassure that I understand correctly what you report (numbers are mine to make it a bit easier):
The expectation is now that playback stops after 10 seconds and the ad at 12_000_000 is not played. The observed behavior is that the ad is played as a post-roll right at the end of the content and after the post roll is played, playback stops with Do I understand your report correctly? In any case, would it be possible that you can provide us with an ad tag URI, so we can repro this in the demo app? This would expedite the investigation and possible fix. If you're unable to share bug test content publicly, please send them to [email protected] using a subject in the format "Issue #2215". Please also update this issue to indicate you’ve done this. |
yes you understood the problem but between the end of the content and the commercial, the streaming is frozen and the user have to wait for the time gap between the end and the ads break. I am going to write you an email with link so you can test by yourself. |
Sorry for my late response and thanks for providing the assets for testing. I was able to use the media and VMAP file you sent by email. Besides the pre roll the ads have a load error, but generally I think it confirms what we discussed above. The VMAP file delivers ad cue points that are after the end of the window. When then the end of the window is reached, the player attemps to play these ads which at this point don't have a URI. The player waits for the ads SDK to deliver the URIs, but because the position at which the SDK would start fetching the ad data is never reached, the SDK never delivers an URI and the player stalls playback waiting for that. That's how I understand what's going on. I think the best solution for this would be to not ad these ad groups after the end of the window to the Since Media3 1.6, A further approach that comes to mind, would be to verify the ad playback state when the timeline comes in and then mark ads that are outside the window as skipped. That would probably work as well. While this is a cheap solution, it's a bit hacky though and would involve that event correct VMAP/VAST file would need to spend CPU cycles for this probably on every timeline update. Obviously, and probablyt not very helpful for you, a solution on your side would be to use a VAMP that doesn't exceed the window duration. I think it's equally obvious though that the ExoPlayer should be able to handle such inaccuracies in the I can't give you a concrete timeline for when we get around to this I'm afraid. |
Issue: #2215 PiperOrigin-RevId: 747376615
Closing as the change from above does not take ads into the |
Version
Media3 1.5.1
More version details
Media3 1.5.1
Devices that reproduce the issue
All
Devices that do not reproduce the issue
N/A
Reproducible in the demo app?
Not tested
Reproduction steps
Using a VMAP file with advertise scheduled beyond the content duration you will see that streaming continues to the first ads possible after the duration and than it finishes.
Expected result
The streaming finishes when it reaches the duration.
Actual result
the Streaming continues beyond the duration till the first ads after this time.
Media
Here two images to show that buffered position is greater than window duration and that the buffered position is the same of the adBreaks.
Bug Report
adb bugreport
to [email protected] after filing this issue.The text was updated successfully, but these errors were encountered: