问题标签 [http-range]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
974 浏览

javascript - 如何获取 Meteor 的 HTTP.call(或 get)方法来修改 HTTP 请求标头?

我试图通过仅加载足够的网页内容来获取<head>其 HTML 的标签、获取其标题、图像和描述来加速我的 Meteor 应用程序。我有一个客户端使用以下代码调用服务器端方法:

在服务器端,在metaGetter方法中,我使用 Meteor 的 HTTP.call:

如 Meteor 的文档中所写。我能够得到结果的内容,html。但是,在打印返回的标题后,我没有看到content-range我尝试设置的属性。

编辑:Akshat 的解决方案有效,但仅适用于某些网站,实际上很少。任何帮助将非常感激。

0 投票
1 回答
1558 浏览

video - 查找指定段的 webm 视频的字节范围

我有一个 webm 格式的视频(如 video.webm,持续时间为 60 秒)
我想获取具有 http 标头范围(范围:100-200)的指定视频片段(即分割视频)。
换句话说:
我想获得一段视频(例如从第 4 秒到第 12 秒),但我不想使用任何像 ffmpeg 这样的转换器。我想向服务器发送 http 请求并获取指定范围的 webm 文件。

我可以使用这种方法(http 范围标头)吗?

谢谢

0 投票
0 回答
299 浏览

android - Android 在流式传输视频时搜索 http 范围标头

有没有人在通过 HTTP 协议流式传输视频时使用范围标头实现搜索?

我们已经使用范围标头实现了服务器,用于通过 http 协议流式传输视频,如果我们通过 chrome 浏览器播放它,它可以正常工作。

但在 android 中,VideoView 和 MediaPlayer 能够流式传输数据。但问题出现在流媒体中。

1)当我们使用 MediaPlayer 时,我们只能搜索缓冲的视频。如果我们试图超越缓冲区,它就会停止播放。
2)我们尝试过使用 Vitamio 库,但它不允许我们搜索。但它从头开始播放。(不知道为什么)

0 投票
1 回答
1654 浏览

node.js - Firefox 在接收到具有指定内容范围的 206 后不会请求进一步的数据

为了提供一些上下文,我有一个<video>标签,它的src属性指向我的 node.js 服务器上的一个方法。mp4该方法从另一台服务器获取文件,或者更确切地说是文件的一部分mp4,具体取决于Range浏览器指定的 HTTP 标头,例如 - Range:bytes=0-

预期行为(Chrome 行为)

为了防止我的 node.js 服务器从第三方服务器下载整个文件,我实现了一次下载大约 5MB 的最大缓冲区。因此,如果用户发送请求以获取带有标题的视频

..然后我的服务器将响应

我相信,这是一种足够常见的模式——尽管客户端(在本例中为浏览器)请求已请求bytes=0-(从头到尾),但我改为使用前 5MB 响应,最重要的是告诉客户端响应仅包含总共 415MB ( Content-Range: bytes 0-5000000/415473786) 中的 5MB。响应还具有206指示响应是部分响应的状态。

在 Chrome 中,这按预期工作 - 就在视频播放完前 5MB 视频之前,它向同一端点发出另一个请求,但带有标头

我再次以最大 5MB 响应...

这种模式一直持续到视频结束,用户使用搜索栏暂停或跳过,在这种情况下,浏览器会在所需的时间内请求特定的字节范围。正如我所说,在 Chrome 中一切正常。

火狐行为

描述 Firefox 的行为比描述正确的行为更直接!

火狐请求

回复

然后就是这样 - Firefox 播放前 5MB 的视频,并且不再向服务器发出请求。搜索栏显示视频的正确持续时间,但搜索栏不起作用。当用户尝试寻找视频时,会跳回到开头并再次播放前 5MB。

任何帮助,将不胜感激。

0 投票
2 回答
1079 浏览

http - HTTP Range 请求 multipart/byteranges - 最后是否有 CRLF?

RFC7233很好很清晰,除了行尾。

我对响应的 HTTP 响应正文特别感兴趣multipart/byteranges。我假设每一行都像 HTTP 标头一样由 CRLF 终止,但本文档没有明确说明。我完全糊涂的是最后一行:--THIS_SEPARATOR_SEPARATES--. 后面是CRLF吗?

全块:

抱歉,我真的找不到它,因此将不胜感激。注意:请不要直觉,只有 RFC 参考。

0 投票
1 回答
279 浏览

curl - Http多范围请求慢

我在服务器上有 8gb 文件,我想使用 http 多范围请求从该文件下载 1.5gb。我使用卷曲。

除第一个请求外,所有请求都均匀分布在文件中,其中包含 500mb 的大范围(总共有 161 个请求)。

我发现,第一个大范围请求的下载时间约为 40 秒,总时间约为 560 秒。这意味着,我下载 500mb 40 秒,下载 1gb 520 秒。因此,对于均匀分布的请求,我的速度减慢了 6 倍。我还注意到,当这种均匀分布的请求执行时,下载速率会下降约 6-8 倍。

我不明白,为什么会这样。每个请求中的范围都按偏移量增加排序,所以我不明白,为什么我们会出现这样的减速。你能解释一下,什么会导致这样的混乱?此外,我如何提高此类请求集的性能?

如果需要,我可以提供一组请求和时间。

0 投票
2 回答
2127 浏览

html - How to make browser request smaller range with 206 Partial Content

I am currently making a video streaming service where the video is transcoded in chunks of roughly 1MB each. The HTML5 player of Firefox, Chrome and IE all try their best to request partial content (by adding the Range header to their request). Unfortunately, most of the time this header looks like this:

I don't want to return the full content, but only 1MB of the content, so I return this:

Now Chrome accepts this completely and keeps requesting partial content until it has reached the total length. Firefox however makes only one request which contains the partial content and not the full. Firefox thinks it is the full content and thus not the full video is being played, only part of it. How would I get the same behavior in Firefox as I have in Chrome? I tried returning 416 Range not Satisfiable but both Chrome and Firefox seems to requesting after receiving this status code.

0 投票
0 回答
534 浏览

android - 带有 HTTP Range 标头的 Android VideoView

我有支持视频内容的 HTTP Range 标头的 Web 服务器,并且Web Browsers and iOS效果很好,但是在使用 basic 开始对 Android 应用程序进行测试后,VideoView我发现该应用程序没有使用Range: 0-HTTP 标头发出请求。

根据 HTTP Range 标头规范,我一开始就尝试使用此标头进行响应。发送 2 个字节的文件头,然后客户端将发送范围以进行响应。

在 iOS 和 Web 浏览器上运行得很好,但 AndroidVideoView根本不发送Range标头。

如何使这项工作VideoView

0 投票
1 回答
174 浏览

http - 没有得到范围标头

我正在尝试从谷歌驱动器恢复上传,当我关闭连接时我有文件的 ID 我在再次连接 Internet 后进行此会话:

我没有收到 Range 标头,这是为什么呢?

0 投票
0 回答
983 浏览

php - HTTP 范围、流媒体、音乐和音频

我有一个用于流式传输音频文件的网站。主要是MP3和OGG。几个月以来,我自己处理(PHP)蒸汽部分(在它是 apache2 之前)。首先,我使用多媒体音频文件的切片二进制响应(用于内存分配)进行正常的 200 OK 响应。它工作正常,但我的所有音频都获得了 Infinity 持续时间。根据这个问题,我昨天更新了流媒体部分。

现在,我遇到了我能想象到的最奇怪的错误之一。我的代码重构在 MP3 上运行得非常好,但在 OGG 上却不行......

这是我的 Stream 课程。

我对 HTTP_RANGE 有点困惑。谢谢,