You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are a few outstanding bug related to playback-watcher disabling all available playlists when going fullscreen or when changing resolution.
The problem is that after a media switch the result of sourceBuffer.buffered() remains intact. Based on the specification I think this is the correct behavior in the web browser. Hence, if after the media change we reload segments that were already buffered before, watcher will think that we are not making any progress.
I'd happily fix the issue but I'm somewhat uncertain of what the desired behavior is. Can you please comment what you think?
AFAIK there are two cases when we need to switch media:
(automatic) when the segment selector decides that the current source is not a good fit. Let's say it decides that instead of 720p we should stream 1080p. In this case, should we keep the already buffered 720p segments around and only use 1080p for the newly fetched segments? Or should we remove these segments and strictly play 1080p going forward so that the user doesn't see the worse quality video?
(manual) IIUC this is handled by fastQualityChange_. The idea is that we need to change the resolution right away, hence throwing away the buffered segments seems like the right thing to do. Instead of that currently we reload the segments and use replaceSegmentsUntil_ to track when we are done. What is the motivation behind this?
Going forward I see a few potential solutions:
call pc.sourceUpdater_.removeVideo/removeAudio to actively reset sourceBuffer.buffered but lose all the already downloaded segments. Is this ok for the automatic/manual cases above?
instead of relying on mediaSource.buffered() implement our own version in watcher that resets on media change. I'm not sure if this is feasible but if MSE exposes the right events we might be able to deduce this.
instead of reusing the same video SourceBuffer for all playlists and calling changeType() we could have a separate sourceBuffer for each playlist. In this case sourceBuffer.buffered() would work as intended. However, as I don't have any experience with ABR I'm not sure if it can be supported with this setup.
What's your preference? Do you have any other ideas?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
For more context see #8452.
There are a few outstanding bug related to playback-watcher disabling all available playlists when going fullscreen or when changing resolution.
The problem is that after a media switch the result of sourceBuffer.buffered() remains intact. Based on the specification I think this is the correct behavior in the web browser. Hence, if after the media change we reload segments that were already buffered before, watcher will think that we are not making any progress.
I'd happily fix the issue but I'm somewhat uncertain of what the desired behavior is. Can you please comment what you think?
AFAIK there are two cases when we need to switch media:
Going forward I see a few potential solutions:
What's your preference? Do you have any other ideas?
Beta Was this translation helpful? Give feedback.
All reactions