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



我想知道是否有可能确定开始&或者让浏览器知道从哪里开始,让它使用一些用户定义的块大小。我的数据库中有一个文件,它被分割成多个块,每个块是2mb。

。20mb文件=> 10个chunk

当浏览器开始下载文件(视频文件)时,我研究了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'

这将给出一个错误,因为我不能从一个块的一部分开始发送。否则我就必须对数据块进行切片并进行一些缓冲区操作。但我想保持干净。如果可以的话,请告诉我。

我假设你正在流式传输mp4文件?mp4的不同部分(盒子)有不同的用途,如果没有通过预加载索引(moov)首先确定每个帧的位置,就不可能跳到文件中的随机位置并开始播放。moov可以在文件的开头,也可以在文件的结尾,因此浏览器可能首先需要文件的结尾。它可以确定这一点,从开始,并寻找月亮,如果它不是在开始,将有一个指针指向下一个框的位置。它可以跳过文件,直到找到索引。一旦下载了moov头文件,浏览器就会知道视频中每一帧的确切字节偏移量和大小,并且可以在你寻找的时候在文件中跳转。这一切都是可能的,因为浏览器知道如何本地解析mp4。TLDR。不,你的办法行不通。

最新更新