如何确定HTTP范围请求的开始和时间结束字节(nodejs + mongodb)

时间:2016-10-27 01:22:04

标签: node.js http-live-streaming chunks

我想知道是否可以确定开始& HTTP范围请求中的结束字节或让浏览器以某种方式知道从哪里开始,并让它使用一些用户定义的块大小左右。 我的数据库中有一个文件,它被分成多个块,每个块大小为2 MB。

例如。 20 MB文件=> 10个块

当浏览器开始下载文件(视频文件)时,我研究过Chrome,它首先检查'range=bytes 0-'字节范围,如果服务器成功响应“正确”字节和206个回拨,那么发送另一个对文件结束字节的请求,例如'range=bytes 1900000-'

只检查您的服务器是否对部分响应做出了很好的响应

在服务器端,我已经对我的应用进行了编码,这样如果您对其进行了很好的解释,它将发送2 MB的部分内容:)

我希望浏览器做什么

range=bytes 0-'

range=bytes 2000000-4000000 bytes'

range=bytes 4000000-6000000 bytes'

但是如果你问一个不适合2mb块的部分,那就会出错。或者它不会从音频/视频文件的正确位置播放。

range=bytes 2500000-4000000 bytes'

range=bytes 0-1000000 bytes'

这会产生错误,因为我无法从块的一部分开始发送。否则我必须切片我的块并做一些缓冲操作。但我想保持清洁。 如果可以,请告诉我。

1 个答案:

答案 0 :(得分:3)

我假设您正在播放mp4文件? mp4的不同部分(框)具有不同的目的,不可能跳转到文件中的随机位置并开始播放而不首先通过预加载索引(moov)来识别每个帧的位置。 moov可以位于文件的开头或结尾,因此浏览器可能需要首先结束文件。它可以通过从头开始,并查找moov来确定这一点,如果它不在开头,则会有一个指向下一个框位置的指针。它可以跳过文件中的青蛙,直到它找到索引。下载moov标题后,浏览器将知道视频中每个帧的精确字节偏移和大小,并且可以在搜索时跳转到文件。这一切都是可能的,因为浏览器知道如何本地解析mp4。 TLDR。不,您的解决方案无效。