Bug 184094
Summary: | Video does not leave seeking state after seeking to duration | ||
---|---|---|---|
Product: | WebKit | Reporter: | Theodore Abshire <theodab> |
Component: | Media | Assignee: | Nobody <webkit-unassigned> |
Status: | NEW | ||
Severity: | Normal | CC: | eric.carlson, jer.noble, webkit-bug-importer |
Priority: | P2 | Keywords: | InRadar |
Version: | Safari Technology Preview | ||
Hardware: | Mac | ||
OS: | Unspecified |
Theodore Abshire
When playing some assets, loaded via the MediaSource API (but not via src=), if you seek to the video's duration the video never leaves the seeking state.
If you tab away from Safari and come back, sometimes it will begin playing over again.
I have created a minimal reproduction page for this bug:
https://storage.googleapis.com/shaka-demo-assets/_bugs/1363/index.html
Just open the web console and press the "begin test" button.
After seeking (and waiting for a few seconds to give it reasonable time to complete the process of seeking), the video's "seeking" property is true, "ended" is true, and "paused" is false.
I've tried this a few times and it seems quite consistent. I've tried it with Safari 11.0.3 and with Safari Technology Preview (11.2), and it happens with both. Sometimes if I tab away for a while and come back to Safari, the video has restarted.
There do not seem to be similar issues on Chrome or Firefox. This also doesn't apply to every asset; I've only seen it thus far with the asset in the test page (and another asset that I've left commented out in the source, if you care to make comparisons).
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/38975014>
Jer Noble
The basic problem is that the "buffered time" ranges are [inclusive,exclusive). So while the buffered range is [0,60.0), a seek to 60.0 will fail because it is technically outside the buffered range.
The last sample (in both PTS and DTS order) has a display time of 767488/12800 (or 59.96) and a duration of 512/12800 (or 0.04). So a seek to 60.0 is to a time where there is no displayable sample.
That said, the stream is marked as "ended", and perhaps the last sample should be considered to have an infinite duration for the purposes of being "displayable".