3 ms·
It’s not true because throwing a video file as a source on video tag has no information about the file being requested until the headers are pushed down. Hell b
by wordofx 2y ago
It’s not true because throwing a video file as a source on video tag has no information about the file being requested until the headers are pushed down. Hell back in 2005 Akamai didn’t even support byte range headers for partial content delivery, which made resuming videos impossible, I believe they pushed out the update across their network in 06 or 07.
- jonathanlydall 2y agoIf your HTTP server provides and supports the appropriate headers and you’re serving supported file types, then it absolutely is true. Just putting a url in my Chromium based browser’s address bar to an mp4 file we have hosted on CloudFlare R2 “just works” (I expect a video tag would be the same), supporting skipping ahead in the video without having to download the whole thing. Initially skipping ahead didn’t work until I disabled caching on CloudFlare CDN as that breaks the “accept-range” capability on videos. For now we have negligible amount of viewership of these mp4s, but if it becomes an issue we’ll use CloudFlare’s video serving product.
- wordofx 2y ago> If your HTTP server provides and supports the appropriate headers and you’re serving supported file types, then it absolutely is true. No. When you play a file in the browser with a video tag. It requests the file. It doesn’t ask for a range. It does use the range if you seek it, or you write the JavaScript to fetch based on a range. That’s why if you press play and pause it buffers the whole video. Only if you write the code yourself can you partially buffer a while like YouTube does.
- bmacho 2y agoNah, it uses complex video specific logic and http range requests as protocol. (At least the normal browsers and servers. You can roll your own dumb client/server of course.) > That’s why if you press play and pause it buffers the whole video. Browsers don't do that.
- jonathanlydall 2y agoObviously it doesn’t initially ask for a range if it starts from the beginning of the video, but it starts playing video immediately without requiring the whole file to download, when you seek it cancels the current request and then does a range request. At no point does it “have” to cache the entire file. I suppose if you watch it from start to finish without seeking it might cache the entire file, but it may alternatively keep a limited amount cached of the video and if you go back to an earlier time it may need to re-request that part. Your confidence seems very high on something which more than one person has corrected you on now, perhaps you need to reassess the current state of video serving, keeping in mind it does require HTTP servers to allow range requests.
- deleted 2y ago[deleted]
- creatonez 2y agoWho cares what happened in 2005? This is so rare nowadays, I've only really seen it on websites that are constructing the file as they go, such as the Github zip download feature.
- wewewedxfgdf 2y agoYou can learn it here: https://www.zeng.dev/post/2023-http-range-and-play-mp4-in-browser/ https://www.zeng.dev/post/2023-http-range-and-play-mp4-in-br... You can also watch it happen - the Chrome developer tools network tab will show you the traffic that goes to and from the web browser to the server and you can see this process in action.
- maccard 2y ago2005 is basically the dark ages of the web. It’s pre Ajax and ie6 was the dominant browser. Using this as an argument is like saying apps aren’t suitable because the iPhone didn’t have an App Store until 2008. > It’s not true because throwing a video file as a source on video tag has no information about the file being requested until the headers are pushed down. And yet, if you stick a web server in front of a video and load it in chrome, you’ll see just that happening.
- wordofx 2y agoCan load a video into a video tag in chrome. Press play and pause. See it makes a single request and buffers the whole video.
- maccard 2y agoIf you stick: <video controls> <source src="/video/sample.mp4" type="video/mp4"> Your browser does not support the video tag. </video> into a html file, and run it against this pastebin [0], you'll see that chrome (and safari) both do range requests out of the box if the fileis big enough. [0] https://pastebin.com/MyUfiwYE https://pastebin.com/MyUfiwYE