我注意到,當一個HTML5視頻加載(緩衝),它的buffered.length
值是2,而當它完成加載,如果視頻已經保存它變爲1video.buffered.length究竟告訴了什麼?
這將是知道的可靠途徑在緩存中(buffered.length == 1
)?如果沒有,我錯過了什麼?有人能解釋一下這個值究竟告訴了我什麼?
我注意到,當一個HTML5視頻加載(緩衝),它的buffered.length
值是2,而當它完成加載,如果視頻已經保存它變爲1video.buffered.length究竟告訴了什麼?
這將是知道的可靠途徑在緩存中(buffered.length == 1
)?如果沒有,我錯過了什麼?有人能解釋一下這個值究竟告訴了我什麼?
按照Apple HTMLMediaElement文檔buffered
是TimeRanges
這就是爲什麼length屬性似乎是錯誤的
緩衝的百分比可以通過使用
video.buffered.end(0)/video.duration
據我瞭解來計算方法爲, buffered
返回一個TimeRanges
對象,其中包含有關已緩衝多少視頻或音頻的數據。
buffered
有三個屬性:length
,start
和end
。
length
返回正在緩衝媒體的多少「部分」。
顯然,在正常情況下,buffered.length
返回1
這就是歌劇說一下:
在正常情況下,只會有一個範圍 - 該瀏覽器從時間開始 下載0,並且下載的範圍延伸到 目前有很多可用的。但是,如果用戶尋求轉發,那麼 瀏覽器可以停止當前下載,並開始對視頻後面部分的 發起新請求。在這種情況下,會有兩個範圍的緩衝數據。
*Source(向下滾動或搜索緩衝)
我的猜測是,這是不是一個可靠的方式告訴我們,如果視頻被緩存。代碼
全線,其中#是一個整數:
document.getElementById("videoId").buffered.start(#);
document.getElementById("videoId").buffered.end(#);
document.getElementById("videoId").buffered.length;
如果事情被緩存,不應該將其加載直線距離?因此,video.buffered.end(0)
一旦緩存的視頻開始將自動成爲視頻的結尾?
有人隨時糾正我或確認這一點。
注意:end()
需要一個參數。該參數返回定義的緩衝vid的值。例如。如果60秒的視頻開始播放,則start(0)
爲0,並且end(0)
逐漸變大。如果將視頻位置更改爲30秒,則start(1)
將變爲30秒,並且end(1)
會從30秒逐漸變大。
不幸的是,我發現iOS 10.2.1上的移動Safari似乎總是返回值爲1的.length
。由於這個原因,我懷疑瀏覽器的支持不一致。在Firefox 51.0.1中(這應該對這些方法有更好的支持),這會使得.length
增加1,然後在再次遞減之後不久。我懷疑這個「可能」是由Firefox將兩個緩衝的vid部分組合在一起造成的。 由於上述原因,我會嘗試找到另一種方法來確定如何檢測視頻是否被緩存。
嘗試進入的URL,瀏覽器Firefox的&:
about:cache