2016-10-27 37 views
1

我想知道是否有可能確定HTTP範圍請求中的開始&結束字節,或讓瀏覽器知道從哪裏開始並讓它使用某個用戶定義塊大小左右。 我在我的數據庫中有一個文件,它被分成多個塊,每個塊都是2 MB。如何確定HTTP範圍請求開始和結束字節(nodejs + mongodb)

例如。 20 MB文件=> 10塊

當瀏覽器開始下載文件(視頻文件)時,我研究了Chrome,它首先檢查'range=bytes 0-'字節範圍,如果服務器成功響應'正確'字節和206標頭背部,然後將其發送的文件,例如'range=bytes 1900000-'結束字節另一個請求,

如果您的服務器的部分響應

在服務器端的我已經編寫我的應用程序,這樣它會發送響應以及它只是checkes 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'

這會給一個錯誤,因爲我不能開始從一個塊的一部分發送。否則,我必須切片我的塊並做一些緩衝操作。但我想保持清潔。 如果這是可能的,請讓我知道。

回答

3

我假設你正在流mp4文件? mp4的不同部分(盒子)具有不同的目的,不可能跳到文件中的隨機位置,並且通過預加載索引(moov)首先識別每個幀的位置而開始播放。 moov可以在文件的開頭或結尾,因此瀏覽器可能首先需要文件的結尾。它可以從一開始就確定這個,並且如果它不在開始處尋找moov,將會有一個指向下一個盒子的位置的指針。它可以跳過文件直到找到索引。一旦下載了moov頭文件,瀏覽器就會知道視頻中每個單幀的EXACT字節偏移量和大小,並且可以在搜索時跳轉文件。這一切都是可能的,因爲瀏覽器知道如何本機解析mp4。 TLDR。不,您的解決方案不起作用。

+0

我正在實現部分下載,不僅適用於mp4,而且還適用於其他文件類型,例如音頻文件,iso文件等。不知道有關moov索引的事情。但我很好奇它是如何與MongoDB網格一起工作的。 mongodb nodejs驅動程序還將文件分割爲塊,當我想要檢索文件時,mp4開始流暢地播放,並且可以搜索。他們定義分塊的緩衝區長度以匹配請求的字節範圍,等等。但我還沒有,謝謝你的信息,雖然 – webmaster

相關問題