-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Timed metadata are raised all at once when loading a Live DASH DAI stream in a middle of an ad break (4.3.6) #5213
Comments
I'm not 100% sure, but I think what is going on is that if we load a manifest and there is a region that is before the playhead, we count that as having skipped the region. Lines 2949 to 2962 in 70823f9
I can think of a few possible solutions to this on our part, offhand.
|
I like adding a |
Thanks for looking into this. +1, a |
In some cases, in a livestream situation, the region observer's poll method ends up being called before the media time is set to the live edge. This does not happen every time; it's likely based on the exact time it takes the player to start playing. When this does happen, it leads to the region observer "skipping" over every region between time=0 and the live head, as it erroneously believes that it has actually played through all of that time. This could result in confusion for applications that are relying on region data. This change modifiers the region observer so that it does not start examining regions until the time gets past 0 seconds, except in the case of VOD. Closes shaka-project#5213
The solution I proposed initially ended up not being ideal. It turns out that, since the regions in your stream all have 0 duration, we technically skip over them even in the "normal" case. So making a new skip event didn't help, since it would fire all of the time. Anyway, while looking for a better solution, I think I found an underlying bug. Sometimes, I think based on how long the stream takes to load, we start checking for regions before the media element's currentTime is set. So when the time is moved to the live head, the region observer ends up thinking we went from time=0 to the live head, and triggers all regions that are between those two points. So I have made a fix for that instead. |
In some cases, in a livestream situation, the region observer's poll method ends up being called before the media time is set to the live edge. This does not happen every time; it's likely based on the exact time it takes the player to start playing. When this does happen, it leads to the region observer "skipping" over every region between time=0 and the live head, as it erroneously believes that it has actually played through all of that time. This could result in confusion for applications that are relying on region data. This change modifiers the region observer so that it does not start examining regions until the time gets past 0 seconds, except in the case of VOD. Closes #5213
Thanks so much for looking into this! Do you happen to know what is the target release date for 4.4.0? Thanks! |
In some cases, in a livestream situation, the region observer's poll method ends up being called before the media time is set to the live edge. This does not happen every time; it's likely based on the exact time it takes the player to start playing. When this does happen, it leads to the region observer "skipping" over every region between time=0 and the live head, as it erroneously believes that it has actually played through all of that time. This could result in confusion for applications that are relying on region data. This change modifiers the region observer so that it does not start examining regions until the time gets past 0 seconds, except in the case of VOD. Closes #5213
In some cases, in a livestream situation, the region observer's poll method ends up being called before the media time is set to the live edge. This does not happen every time; it's likely based on the exact time it takes the player to start playing. When this does happen, it leads to the region observer "skipping" over every region between time=0 and the live head, as it erroneously believes that it has actually played through all of that time. This could result in confusion for applications that are relying on region data. This change modifiers the region observer so that it does not start examining regions until the time gets past 0 seconds, except in the case of VOD. Backported to v4.2.x Closes #5213
Have you read the FAQ and checked for duplicate open issues?
Yes. I found this issue from 2020, but:
What version of Shaka Player are you using?
4.3.6 and 2.3.7 (on the DAI Video Suite Inspector)
Can you reproduce the issue with our latest release version?
Yes (4.3.6).
Can you reproduce the issue with the latest code from
main
?Yes
Are you using the demo app or your own custom app?
I first experienced the issue on a custom app using the DAI API.
I then reproduced it on the DAI IMA HTML5 Video Suite Inspector.
If custom app, can you reproduce the issue using our demo app?
Yes, using the DAI IMA HTML5 Video Suite Inspector.
What browser and OS are you using?
Mac OS 13.3.1 / Chrome 112.0.5615.137 (Official Build) (x86_64)
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
N/A
What are the manifest and license server URIs?
URI: https://dai.google.com/linear/dash/pa/event/PSzZMzAkSXCmlJOWDmRj8Q/stream/f61416c6-50b8-40df-9c3f-3cb1c312975a:BRU/manifest.mpd
What configuration are you using? What is the output of
player.getConfiguration()
?No specific configuration is added to the default.
What did you do?
What did you expect to happen?
Timed metadata events should be fired progressively, as they are being raised in the stream.
What actually happened?
A bunch of events are raised all at once when the stream is loaded (not played):
The text was updated successfully, but these errors were encountered: