范围请求和HTML5音频

问题描述 投票:7回答:2

在HTML5音频的上下文中,如果服务器发送的请求带有以下头。

Range:bytes=0-

将回应

内容范围:0-4991234字节。

能否被所有现代浏览器正确处理?当需要byte[500]时,浏览器会自动知道请求下一个分块吗?我对以下规范的理解是否正确?

如果所有的先决条件都为真,服务器支持目标资源的Range头字段,并且指定的范围是有效的和可满足的(如第2.1节中所定义的),服务器应该发送一个206(部分内容)响应,其有效载荷包含一个或多个部分表示,这些部分表示对应于第4节中所定义的可满足的范围。

我从下面的规范中读到。http:/tools.ietf.orghtmldraft-ietf-httpbis-p5-range-22。

html audio http-headers protocols
2个回答
1
投票

如果该请求是由浏览器内部通过分配视频标签的音频的src属性生成的,那么是的,媒体元素知道如何处理字节范围请求,并为下一段进行后续请求。 不需要额外的逻辑。


1
投票

听起来你对规范的解释是正确的。然而,以下的例子 响应范围请求的服务人员 表明 等开放式请求的预期响应。0- 是整个字节范围. 然后,浏览器将响应流到一些启发式,如果用户寻求到一个范围之外的已经流的发起一个后续的开放式请求。

在顺序词中,如果有一个文件与 1000 字节:第一个请求总是 Range: bytes=0-. 浏览器决定加载100个字节。用户寻找到最后,浏览器又发送了一个请求。Range: bytes=900-.

事实上,我从来没有见过浏览器要求明确的,封闭的范围的例子,如 Range: bytes=0-100. 他们似乎也没有使用范围大小,即1234在 Content-Range: bytes 0-499/1234. 我猜测这是因为有些服务器可能会发送 * 对于未知持续时间的文件(或连续、实时播放)。

忠告:这是基于我的观察,主要是Firefox、Chrome和iOS Safari。行为可能会因浏览器供应商、版本等而有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.