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

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

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

当浏览器开始下载文件(video文件)时,我已经研究了Chrome,它首先检查'range=bytes 0-'字节范围,如果服务器成功回应'right'字节和206回头,则发送另一个请求文件的结束字节,例如'range=bytes 1900000-'

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

在服务器端,我编写了我的应用程序,以便它会发送2 MB的部分,如果你问它很好:)

我想让浏览器做什么

range=bytes 0-'

range=bytes 2000000-4000000 bytes'

range=bytes 4000000-6000000 bytes'

但是如果你问一个不适合2MB块的部分,它会给出一个错误。 或者它只是不能从正确的位置播放audio/video文件。

range=bytes 2500000-4000000 bytes'

range=bytes 0-1000000 bytes'

这将会产生错误,因为我无法从块的一部分开始发送。 否则,我不得不切片我的块,并做一些缓冲操作。 但我想保持清洁。 如果这是可能的,请让我知道。

我假设你正在streamMP4文件? mp4的不同部分(盒子)具有不同的目的,不可能跳到文件中的随机位置,并且通过预加载索引(moov)首先识别每个帧的位置而开始播放。 moov可以在文件的开头或结尾,所以浏览器可能需要先读取文件的结尾。 它可以通过从一开始就确定,并寻找moov,如果它不是在开始,将会有一个指向下一个盒子的位置的指针。 它可以通过文件跳跃青蛙,直到find索引。 一旦moov头被下载,浏览器就会知道video中每个单帧的EXACT字节偏移量和大小,并且可以在你寻找的时候跳转文件。 这是所有可能的,因为浏览器知道如何parsingmp4原生。 TLDR。 不,您的解决scheme将无法正常工作。