html的video标签是如何计算请求头的Range和控制预加载的时长?

第一问 浏览器的 video 标签,好像是会默认预加载大约 30秒 的视频,这个有 api 可以控制吗?
第二是 浏览器分段加载 mp4 视频,是通过请求头的 Range 字段,请看图,当点击进度条的时候,就会发起一个请求,这个请求头的 Range 就表示了大约视频的30秒的字节数,具体多少秒我不清楚,那么这个字节数和视频时长是怎么计算出来的?31162368 - 33914879,差了 2752511 字节

最后说一下,浏览器发起的请求是在启动器里看不到的,所以求指教

我补充一下,用文件字节数 / 视频总秒数,得到的不是一秒的字节数

阅读 4.2k
2 个回答

看到哪个206了吗,

Range Head也支持一次请求文档的多个部分。请求范围用一个逗号分隔开。
引用
curl http://www.example.com -i -H "Range: bytes=0-50, 100-150"
引用
服务器返回 206 Partial Content 状态码和 Content-Type:multipart/byteranges; boundary=3d6b6a416f9b5 头部,Content-Type:multipart/byteranges 表示这个响应有多个 byterange。每一部分 byterange 都有他自己的 Content-type 头部和 Content-Range,并且使用 boundary 参数对 body 进行划分。

https://developer.mozilla.org...

应该是这一小节,6 的前半部分。

6.Let byteRange, which is "entire resource" or a (number, number or "until end") tuple, be the byte range required to satisfy missing data in media data. This value is implementation-defined and may rely on codec, network conditions or other heuristics. The user-agent may determine to fetch the resource in full, in which case byteRange would be "entire resource", to fetch from a byte offset until the end, in which case byteRange would be (number, "until end"), or to fetch a range between two byte offsets, im which case byteRange would be a (number, number) tuple representing the two offsets.

7.If byteRange is not "entire resource", then:

  • If byteRange[1] is "until end" then add a range header to request given byteRange[0].
  • Otherwise, add a range header to request given byteRange[0] and byteRange[1].
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏