[英]How to determine HTTP range request start & end bytes (nodejs + mongodb)
我想知道是否有可能確定HTTP范圍請求中的開始和結束字節,或讓瀏覽器以某種方式知道從哪里開始並讓它使用一些用戶定義的塊大小左右。 我的數據庫中有一個文件,它被分成多個塊,每個塊大小為2 MB。
例如。 20 MB文件=> 10個塊
當瀏覽器開始下載文件(視頻文件)時,我研究過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塊的部分,它會給出一個錯誤。 或者它不會從音頻/視頻文件的正確位置播放。
range=bytes 2500000-4000000 bytes'
range=bytes 0-1000000 bytes'
這會產生錯誤,因為我無法開始從塊的一部分發送。 否則我必須切片我的塊並做一些緩沖操作。 但我想保持清潔。 如果可以,請告訴我。
我假設您正在播放mp4文件? mp4的不同部分(框)具有不同的目的,不可能跳轉到文件中的隨機位置並開始播放而不首先通過預加載索引(moov)來識別每個幀的位置。 moov可以位於文件的開頭或結尾,因此瀏覽器可能需要首先結束文件。 它可以通過從頭開始,並查找moov來確定這一點,如果它不在開頭,則會有一個指向下一個框位置的指針。 它可以跳過文件中的青蛙,直到它找到索引。 下載moov標題后,瀏覽器將知道視頻中每個幀的精確字節偏移和大小,並且可以在搜索時跳轉到文件。 這一切都是可能的,因為瀏覽器知道如何本地解析mp4。 TLDR。 不,您的解決方案無效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.