【发布时间】:2021-12-17 02:34:09
【问题描述】:
基本上我的理解是:每当视频播放器播放媒体时,它都会以块的形式下载它,由RANGE 标头定义。服务器只提供从文件中请求的字节。
但是,当我在 chromium 中打开 mp4 文件时会发生什么:
以下是每个请求上与内容相关的响应标头,以及RANGE 请求标头,顺序相同:
---
accept-ranges: bytes
content-encoding: gzip
content-type: video/mp4
range: bytes=0-
---
accept-ranges: bytes
Content-Length: 100450390
Content-Range: bytes 0-100450389/100450390
content-type: video/mp4
range: bytes=100237312-
---
accept-ranges: bytes
Content-Length: 213078
Content-Range: bytes 100237312-100450389/100450390
content-type: video/mp4
range: bytes=32768-
---
accept-ranges: bytes
Content-Length: 100417622
Content-Range: bytes 32768-100450389/100450390
content-type: video/mp4
range: bytes=6127616-
---
accept-ranges: bytes
Content-Length: 94322774
Content-Range: bytes 6127616-100450389/100450390
content-type: video/mp4
据我所见,我理解第二个请求请求整个文件,第三个请求从文件末尾请求 200kb,第四个请求从 32kb 开始,最后一个请求文件从第 6 兆字节开始。
仅此一项看起来就很混乱,但是问题开头的屏幕截图进一步延续了混乱,这表明一半的响应与请求的尺寸不符?
此外,最后一个请求从开始播放视频到最后是 3 分钟长,服务器保持请求存活这么长时间,大部分时间都处于空闲状态,这不是很糟糕吗?寿命(我说的是特别是 apache)?
我想如果我必须总结我的问题,我想了解正在发生的事情并理解所有这些。
【问题讨论】:
标签: html video server html5-video chunking