[Webkit-unassigned] [Bug 280207] New: Scrubbing VP9 video causes video element to fail with HTTP range
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Sep 23 14:04:42 PDT 2024
https://bugs.webkit.org/show_bug.cgi?id=280207
Bug ID: 280207
Summary: Scrubbing VP9 video causes video element to fail with
HTTP range
Product: WebKit
Version: WebKit Nightly Build
Hardware: Mac (Apple Silicon)
OS: macOS 15
Status: NEW
Severity: Normal
Priority: P2
Component: Media
Assignee: webkit-unassigned at lists.webkit.org
Reporter: ian at ecn.io
Using the latest nightly build (284094 at main) on macOS 15, loading a video and scrubbing it causes the video element to fail and display "Error". This error is reproducible on release Safari, technology preview, and nightly, as well as Safari on iOS 18 (hence why I believe this is a WebKit bug).
The video will load and play normally, but as soon as you try to scrub forward in the video it will fail. The only message printed to the console is "Failed to load resource: Plug-in handled load".
This issue only happens on servers that support HTTP range requests. If no range support of presented by the server, the video can be scrubbed (mostly) without issue (I say mostly because there's weird artifacts, but that's a different issue for another time).
The video is being served from nginx. Video details from ffprobe:
```
Input #0, matroska,webm, from 'VDkhN-e42A8.webm':
Metadata:
ENCODER : Lavf61.1.100
Duration: 00:32:50.39, start: 0.000000, bitrate: 8235 kb/s
Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 2560x1440, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn (default)
Metadata:
DURATION : 00:32:50.349000000
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Metadata:
DURATION : 00:32:50.388000000
```
The browser makes a request for the video file and will download the entire file (Request #1), but scrubbing the video beyond where the player has buffered triggered 4 more requests each for different amounts of data. The last 3 of them show as failed, though there's no information as to what went wrong beyond devtools just saying an error occured.
Request #1:
> GET /VDkhN-e42A8.webm
> Accept: */*
> Sec-Fetch-Dest: video
> Sec-Fetch-Mode: no-cors
> Sec-Fetch-Site: same-origin
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15
< 200
< Content-Type: video/webm
< Last-Modified: Fri, 13 Sep 2024 04:34:27 GMT
< X-XSS-Protection: 1; mode=block
< Referrer-Policy: no-referrer
< Date: Mon, 23 Sep 2024 20:43:38 GMT
< Content-Length: 2028292448
< X-Content-Type-Options: nosniff
< Accept-Ranges: bytes
< ETag: "66e3c0d3-78e54960"
< X-Frame-Options: SAMEORIGIN
< Server: nginx/1.27.0
< Strict-Transport-Security: max-age=63072000
Request #2:
> :method: GET
> :scheme: https
> :authority: [redacted]
> :path: /VDkhN-e42A8.webm
> Accept: */*
> Sec-Fetch-Site: same-origin
> Sec-Fetch-Dest: video
> Range: bytes=0-1
> Sec-Fetch-Mode: no-cors
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15
> Accept-Language: en-CA,en-US;q=0.9,en;q=0.8
> Accept-Encoding: identity
> X-Playback-Session-Id: 9A133EA9-D7E0-4659-9D04-D0A922DAF37D
> Priority: u=3, i
< :status: 206
< Content-Type: video/webm
< Last-Modified: Fri, 13 Sep 2024 04:34:27 GMT
< X-XSS-Protection: 1; mode=block
< Referrer-Policy: no-referrer
< Date: Mon, 23 Sep 2024 20:43:52 GMT
< Content-Length: 2
< X-Content-Type-Options: nosniff
< ETag: "66e3c0d3-78e54960"
< Content-Range: bytes 0-1/2028292448
< X-Frame-Options: SAMEORIGIN
< Server: nginx/1.27.0
< Strict-Transport-Security: max-age=63072000
Request #3:
> GET /VDkhN-e42A8.webm
> Range: bytes=0-2028292447
> Accept: */*
> Connection: Keep-Alive
> Accept-Encoding: identity
> Sec-Fetch-Dest: video
> Sec-Fetch-Mode: no-cors
> Sec-Fetch-Site: same-origin
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15
> X-Playback-Session-Id: 9A133EA9-D7E0-4659-9D04-D0A922DAF37D
< 206
< Content-Type: video/webm
< Last-Modified: Fri, 13 Sep 2024 04:34:27 GMT
< X-XSS-Protection: 1; mode=block
< Referrer-Policy: no-referrer
< Date: Mon, 23 Sep 2024 20:43:52 GMT
< Content-Length: 2028292448
< X-Content-Type-Options: nosniff
< ETag: "66e3c0d3-78e54960"
< Content-Range: bytes 0-2028292447/2028292448
< X-Frame-Options: SAMEORIGIN
< Server: nginx/1.27.0
< Strict-Transport-Security: max-age=63072000
Request #4:
> GET /VDkhN-e42A8.webm
> Range: bytes=440729600-2028292447
> Accept: */*
> Connection: Keep-Alive
> Accept-Encoding: identity
> Sec-Fetch-Dest: video
> Sec-Fetch-Mode: no-cors
> Sec-Fetch-Site: same-origin
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15
> X-Playback-Session-Id: 9A133EA9-D7E0-4659-9D04-D0A922DAF37D
< 206
< Content-Type: video/webm
< Last-Modified: Fri, 13 Sep 2024 04:34:27 GMT
< X-XSS-Protection: 1; mode=block
< Referrer-Policy: no-referrer
< Date: Mon, 23 Sep 2024 20:43:52 GMT
< Content-Length: 1587562848
< X-Content-Type-Options: nosniff
< ETag: "66e3c0d3-78e54960"
< Content-Range: bytes 440729600-2028292447/2028292448
< X-Frame-Options: SAMEORIGIN
< Server: nginx/1.27.0
< Strict-Transport-Security: max-age=63072000
Request #5:
> GET /VDkhN-e42A8.webm
> Range: bytes=1595736064-2028292447
> Accept: */*
> Connection: Keep-Alive
> Accept-Encoding: identity
> Sec-Fetch-Dest: video
> Sec-Fetch-Mode: no-cors
> Sec-Fetch-Site: same-origin
> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Safari/605.1.15
> X-Playback-Session-Id: 9A133EA9-D7E0-4659-9D04-D0A922DAF37D
< 206
< Content-Type: video/webm
< Last-Modified: Fri, 13 Sep 2024 04:34:27 GMT
< X-XSS-Protection: 1; mode=block
< Referrer-Policy: no-referrer
< Date: Mon, 23 Sep 2024 20:43:52 GMT
< Content-Length: 432556384
< X-Content-Type-Options: nosniff
< ETag: "66e3c0d3-78e54960"
< Content-Range: bytes 1595736064-2028292447/2028292448
< X-Frame-Options: SAMEORIGIN
< Server: nginx/1.27.0
< Strict-Transport-Security: max-age=63072000
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20240923/0d151d67/attachment.htm>
More information about the webkit-unassigned
mailing list