Dash-Industry-Forum / dash.js

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.
http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html
Other
5.09k stars 1.67k forks source link

Fix disabling of catchup (leave playback rate alone) #3084

Closed difosfor closed 4 years ago

difosfor commented 4 years ago
Environment
Steps to reproduce
  1. Create MediaPlayer: const player = MediaPlayer().create()
  2. Enable low latency and disable catchup: player.updateSettings({ streaming: { lowLatencyEnabled: true, liveCatchUpPlaybackRate: 0 } })
  3. Initialize, e.g: player.initialize(media, sourceUrl, true)
  4. Change playback rate, e.g: player.setPlaybackRate(1.1)
Observed behaviour

The playback rate is changed back to 1 even though catchup was disabled.

Console output
player.setPlaybackRate(1.1)
undefined
[24411][PlaybackController] Native video element event: ratechange:  1.1 
[24418][PlaybackController] Native video element event: ratechange:  1 
Notes

This is a regression of my previous issue #2897. I've noted what I think to be the fix in a comment in there. I'm now creating this issue and will fork and try to fix it and then create a PR with that fix for your consideration.

difosfor commented 4 years ago

Created pull request: #3085

Brainiarc7 commented 4 years ago

This explains inexplicable stutters observed even with standard DASH manifests containing multiple adaptation sets, where the same variants packaged for HLS play smoothly with no issues.

EDIT: Stripped the linked issue I had stated.

epiclabsDASH commented 4 years ago

@Brainiarc7, I don't think those are related at all. Issue reported by @difosfor is about low latency management, not about streams with multiple adaptation sets or about smooth transitions across periods.

@difosfor, thanks for the fix!