2012-03-17 24 views
2

我注意到,當一個HTML5視頻加載(緩衝),它的buffered.length值是2,而當它完成加載,如果視頻已經保存它變爲1video.buffered.length究竟告訴了什麼?

這將是知道的可靠途徑在緩存中(buffered.length == 1)?如果沒有,我錯過了什麼?有人能解釋一下這個值究竟告訴了我什麼?

回答

1

據我瞭解來計算方法爲, buffered返回一個TimeRanges對象,其中包含有關已緩衝多少視頻或音頻的數據。

buffered有三個屬性:length,startend

length返回正在緩衝媒體的多少「部分」。

顯然,在正常情況下,buffered.length返回1

這就是歌劇說一下:

在正常情況下,只會有一個範圍 - 該瀏覽器從時間開始 下載0,並且下載的範圍延伸到 目前有很多可用的。但是,如果用戶尋求轉發,那麼 瀏覽器可以停止當前下載,並開始對視頻後面部分的 發起新請求。在這種情況下,會有兩個範圍的緩衝數據。

*Source(向下滾動或搜索緩衝

我的猜測是,這是不是一個可靠的方式告訴我們,如果視頻被緩存。代碼

0

全線,其中#是一個整數:

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