爲了文章的完整性,首先仍是列舉一下video標籤的屬性:html
Video 對象屬性:android
Video 對象方法:chrome
而後列出能夠用於視頻狀態監控的Media 事件(由媒介(好比視頻、圖像和音頻)觸發的事件,適用於全部html元素,但經常使用於 audio、embed、img、object 以及 video中):瀏覽器
屬性 | 值 | 描述 |
onabort | script | 在退出時運行的腳本 |
oncanplay | script | 當文件就緒能夠開始播放時運行的腳本(緩衝已足夠開始時) |
oncanplaythrough | script | 當媒介可以無需因緩衝而中止便可播放至結尾時運行的腳本 |
ondurationchange | script | 當媒介長度改變時運行的腳本 |
onemptied | script | 當發生故障而且文件忽然不可用時運行的腳本(好比鏈接意外斷開時) |
onended | script | 當媒介已到達結尾時運行的腳本(可發送相似「感謝觀看」之類的消息) |
onerror | script | 當在文件加載期間發生錯誤時運行的腳本 |
onloadeddata | script | 當媒介數據已加載時運行的腳本 |
onloadedmetadata | script | 當元數據(好比分辨率和時長)被加載時運行的腳本 |
onloadstart | script | 在文件開始加載且未實際加載任何數據前運行的腳本 |
onpause | script | 當媒介被用戶或程序暫停時運行的腳本 |
onplay | script | 當媒介已就緒能夠開始播放時運行的腳本 |
onplaying | script | 當媒介已開始播放時運行的腳本 |
onprogress | script | 當瀏覽器正在獲取媒介數據時運行的腳本 |
onratechange | script | 每當回放速率改變時運行的腳本(好比當用戶切換到慢動做或快進模式) |
onreadystatechange | script | 每當就緒狀態改變時運行的腳本(就緒狀態監測媒介數據的狀態) |
onseeked | script | 當 seeking 屬性設置爲 false(指示定位已結束)時運行的腳本 |
onseeking | script | 當 seeking 屬性設置爲 true(指示定位是活動的)時運行的腳本 |
onstalled | script | 在瀏覽器不論何種緣由未能取回媒介數據時運行的腳本 |
onsuspend | script | 在媒介數據徹底加載以前不論何種緣由終止取回媒介數據時運行的腳本 |
ontimeupdate | script | 當播放位置改變時(好比當用戶快進到媒介中一個不一樣的位置時)運行的腳本 |
onvolumechange | script | 每當音量改變時(包括將音量設置爲靜音)時運行的腳本 |
onwaiting | script | 當媒介已中止播放但打算繼續播放時(好比當媒介暫停已緩衝更多數據)運行腳本 |
event | pc側 | iOS | android |
loadstart | 文件加載,video初始化,未加載任何數據 | 與PC側一致 | 一致 |
stalled | 視頻沒有播放,沒有取回任何媒介數據:通常是因爲網絡情況不佳,致使視頻下載中斷 | 一致 | 可能在play()事件觸發前 |
play | play()事件觸發,狀態是開始播放,但視頻並未真正開始播放 | 一致 | 一致 |
waiting | play()事件觸發後,等待數據 | 一致 | 一致 |
durationchange | 獲取到視頻長度,duration屬性能得到真實視頻長度 | 一致 | 可能在play()事件觸發前,可能沒有獲取到真實的視頻長度:可能觸發屢次, 只有最後一次才能獲取到真實的duration,以前的值有可能爲0或者1 |
loadedmetadata | play()事件觸發後,獲取到元數據 | 一致 | play()事件觸發前,沒有獲取到真實的元數據 |
loadeddata | play()事件觸發後,獲取到媒介數據 | 一致 | play()事件觸發前,沒有獲取到真實的媒介數據 |
canplay | 能夠播放,但視頻可能還未真正開始播放,而且中途可能由於加載而暫停 | 一致 | 一致 |
playing | 視頻開始播放 | 一致 | 可能還未真正開始播放,而且可能還未獲取到視頻長度 |
canplaythrough | 視頻開始播放後,能夠流暢播放 | 一致 | 數據可能尚未開始加載,視頻可能還未開始播放, 視頻仍然會卡住 |
timeupdate | 視頻播放後,更新播放進度, 會有明確的進度變化,能夠獲取到currentTime | 一致 | 第一次可能會有偏差,若是 timeupdate事件的currentTime發生變化,表明視頻必定開始播放 |
progress | 視頻播放後,持續下載, 能夠獲取到當前的緩存buffer,而且所有下載完畢後再也不觸發 | 一致 | 第一次可能會有偏差, 所有下載完畢後依然繼續觸發 |
suspend | 緩衝中,視頻可能卡頓也可能在流暢播放中,所有緩存完畢後再也不觸發。視頻還未真實播放前,pause()事件會觸發suspend | 一致 | 一致 |
pause | 多是響應pause()事件暫停,或者是切出頁面自動暫停 | 一致 | 一致 |
seeking | 拖動進度條時,尋找播放位置。或者播放完畢,尋找下一個視頻 | 一致 | 一致 |
seeked | 拖動進度條時,定位到播放位置。或者開始播放下一個視頻,或者是從頭開始循環播放 | 一致 | 一致 |
error | 錯誤,沒法定位錯誤緣由,沒法經過paly()事件繼續播放 | 一致 | 一致 |
# | event | readyState | currentTime (s) | buffered (s) | duration (s) | 視頻狀態 |
1 | loadstart | NOTHING | 0 | null | NaN | 準備請求數據(初始化完畢) |
2 | stalled | NOTHING | 0 | null | NaN | |
3 | play | NOTHING | 0 | null | NaN | play()事件觸發,狀態是開始播放,但視頻並未真正開始播放 |
4 | waiting | NOTHING | 0 | null | NaN | 等待數據 |
5 | durationchange | METADATA | 0 | 0.6 | 44.2 | 獲取到視頻長度 |
6 | loadedmetadata | METADATA | 0 | 0.6 | 44.2 | 獲取到元數據 |
7 | loadeddata | ENOUGH_DATA | 0 | 1.06 | 44.2 | |
8 | canplay | ENOUGH_DATA | 0 | 1.06 | 44.2 | 能夠播放,但中途可能由於加載而暫停 |
9 | playing | ENOUGH_DATA | 0 | 1.06 | 44.2 | 開始播放 |
10 | canplaythrough | ENOUGH_DATA | 0 | 1.06 | 44.2 | 能夠流暢播放 |
11 | timeupdate | ENOUGH_DATA | 0 | 1.06 | 44.2 | 播放進度變化 |
12 | progress | ENOUGH_DATA | 0.1 | 2.92 | 44.2 | 持續下載 |
13 | timeupdate | ENOUGH_DATA | 0.21 | 4.67 | 44.2 | 播放進度變化 |
... | ||||||
38 | suspend | ENOUGH_DATA | 3.29 | 14.08 | 44.2 | 緩衝中,視頻可能卡頓也可能在流暢播放中 |
39 | timeupdate | ENOUGH_DATA | 3.48 | 14.08 | 44.2 | |
... | ||||||
490 | timeupdate | ENOUGH_DATA | 39.7 | 44.2 | 44.2 | |
491 | pause | ENOUGH_DATA | 39.87 | 44.2 | 44.2 | 手動暫停 |
492 | play | ENOUGH_DATA | 39.87 | 44.2 | 44.2 | play()事件觸發 |
493 | playing | ENOUGH_DATA | 40.06 | 44.2 | 44.2 | |
494 | timeupdate | ENOUGH_DATA | 40.24 | 44.2 | 44.2 | |
... | ||||||
509 | timeupdate | ENOUGH_DATA | 43.99 | 44.2 | 44.2 | |
510 | timeupdate | METADATA | 0 | 44.2 | 44.2 | 播放完畢 |
511 | seeking | METADATA | 0 | 44.2 | 44.2 | 尋找中 |
512 | waiting | METADATA | 0 | 44.2 | 44.2 | |
513 | progress | METADATA | 0 | 44.2 | 44.2 | |
514 | timeupdate | ENOUGH_DATA | 0 | 44.2 | 44.2 | |
515 | seeked | ENOUGH_DATA | 0.05 | 44.2 | 44.2 | 播放完畢進度回到起點循環播放 |
516 | canplay | ENOUGH_DATA | 0.25 | 44.2 | 44.2 | |
... | ||||||
802 | timeupdate | ENOUGH_DATA | 23.46 | 44.2 | 44.2 | |
803 | error | ENOUGH_DATA | 0 | 44.2 | 44.2 | 網絡斷開錯誤 |
804 | timeupdate | ENOUGH_DATA | 0 | 44.2 | 44.2 | 沒法繼續播放 |
# | event | readyState | currentTime (s) | buffered (s) | duration (s) | 視頻狀態 |
1 | loadstart | NOTHING | 0 | null | NaN | 準備請求數據(初始化完畢) |
2 | play | NOTHING | 0 | null | NaN | 狀態是開始播放,但視頻並未真正開始播放 |
3 | waiting | NOTHING | 0 | null | NaN | 等待數據 |
4 | durationchange | METADATA | 0 | 7.63 | 44.2 | 獲取到視頻長度 |
5 | loadedmetadata | METADATA | 0 | 7.63 | 44.2 | 獲取到元數據 |
6 | loadeddata | ENOUGH_DATA | 0 | 7.63 | 44.2 | |
7 | canplay | ENOUGH_DATA | 0 | 7.63 | 44.2 | 能夠播放,但中途可能由於加載而暫停 |
8 | canplaythrough | ENOUGH_DATA | 0 | 7.63 | 44.2 | 能夠流暢播放 |
9 | playing | ENOUGH_DATA | 0 | 7.63 | 44.2 | 開始播放 |
10 | timeupdate | ENOUGH_DATA | 0 | 7.63 | 44.2 | 播放進度變化 |
11 | timeupdate | ENOUGH_DATA | 0.25 | 7.63 | 44.2 | |
... | ||||||
22 | timeupdate | ENOUGH_DATA | 3.01 | 36.24 | 44.2 | |
23 | progress | ENOUGH_DATA | 3.15 | 44.2 | 44.2 | 持續下載 |
24 | suspend | ENOUGH_DATA | 3.16 | 44.2 | 44.2 | |
25 | timeupdate | ENOUGH_DATA | 3.26 | 44.2 | 44.2 | |
... | ||||||
39 | pause | ENOUGH_DATA | 6.47 | 44.2 | 44.2 | 手動暫停 |
40 | play | ENOUGH_DATA | 6.51 | 44.2 | 44.2 | |
41 | playing | ENOUGH_DATA | 6.5 | 44.2 | 44.2 | |
42 | timeupdate | ENOUGH_DATA | 6.72 | 44.2 | 44.2 | |
... | ||||||
61 | timeupdate | ENOUGH_DATA | 11.4 | 44.2 | 44.2 | |
62 | pause | ENOUGH_DATA | 11.4 | 44.2 | 44.2 | 網絡環境切換,自動觸發 |
63 | play | ENOUGH_DATA | 11.38 | 44.2 | 44.2 | |
64 | playing | ENOUGH_DATA | 11.41 | 44.2 | 44.2 | |
65 | timeupdate | ENOUGH_DATA | 11.6 | 44.2 | 44.2 | |
... | ||||||
198 | timeupdate | ENOUGH_DATA | 44.15 | 44.2 | 44.2 | |
199 | timeupdate | ENOUGH_DATA | 0 | 44.2 | 44.2 | 播放完畢 |
200 | seeking | ENOUGH_DATA | 0 | 44.2 | 44.2 | 尋找中 |
201 | timeupdate | ENOUGH_DATA | 0.1 | 44.2 | 44.2 | |
202 | seeked | ENOUGH_DATA | 0.2 | 44.2 | 44.2 | 播放完畢進度回到起點循環播放 |
203 | timeupdate | ENOUGH_DATA | 0.37 | 44.2 | 44.2 |
與微信無明顯差別緩存
與微信無明顯差別微信
# | event | readyState | currentTime (s) | buffered (s) | duration (s) | 視頻狀態 |
1 | loadstart | NOTHING | 0 | null | NaN | 準備請求數據(初始化完畢) |
2 | progress | METADATA | 0 | null | 44.2 | |
3 | suspend | METADATA | 0 | null | 44.2 | |
4 | durationchange | METADATA | 0 | null | 44.2 | |
5 | loadedmetadata | METADATA | 0 | null | 44.2 | 未觸發play()事件以前,自動觸發以上事件 |
6 | timeupdate | METADATA | 0 | null | 44.2 | 觸發play()事件,開始播放 |
7 | timeupdate | METADATA | 0 | null | 44.2 | |
8 | timeupdate | METADATA | 0 | null | 44.2 |
在QQ瀏覽器中除了能夠獲取視頻長度,其餘屬性均沒法獲取。鑑於其表現比較詭異,咱們的對比中除開此特例。網絡
# | event | readyState | currentTime (s) | buffered (s) | duration (s) | 視頻狀態 |
1 | loadstart | CURRENT_DATA | 0 | null | 1 | 準備請求數據(初始化完畢) |
2 | durationchange | CURRENT_DATA | 0 | null | 1 | |
3 | loadedmetadata | CURRENT_DATA | 0 | null | 1 | |
4 | loadeddata | CURRENT_DATA | 0 | null | 1 | |
5 | stalled | CURRENT_DATA | 0 | null | 1 | 未觸發play()事件以前,自動觸發以上事件 |
6 | play | ENOUGH_DATA | 0 | null | 1 | 觸發play()事件,開始播放,但視頻可能並未馬上開始播放 |
7 | waiting | ENOUGH_DATA | 0 | null | 1 | |
8 | canplay | ENOUGH_DATA | 0 | null | 1 | 可能由於加載而卡頓 |
9 | canplaythrough | ENOUGH_DATA | 0 | null | 1 | |
10 | playing | ENOUGH_DATA | 0 | null | 1 | |
11 | timeupdate | ENOUGH_DATA | 0 | null | 1 | |
12 | progress | ENOUGH_DATA | 0 | null | 1 | |
13 | durationchange | ENOUGH_DATA | 0 | null | 44.2 | |
14 | playing | ENOUGH_DATA | 0 | null | 44.2 | 視頻真正開始播放 |
15 | timeupdate | ENOUGH_DATA | 0.04 | null | 44.2 | |
... | ||||||
90 | timeupdate | ENOUGH_DATA | 17.29 | 44.2 | 44.2 | |
91 | pause | ENOUGH_DATA | 17.29 | 44.2 | 44.2 | |
92 | play | ENOUGH_DATA | 17.29 | 44.2 | 44.2 | |
93 | playing | ENOUGH_DATA | 17.29 | 44.2 | 44.2 | |
94 | timeupdate | ENOUGH_DATA | 18.75 | 44.2 | 44.2 | |
... | ||||||
196 | timeupdate | ENOUGH_DATA | 0 | 44.2 | 44.2 | |
197 | seeking | ENOUGH_DATA | 0 | 44.2 | 44.2 | |
198 | timeupdate | ENOUGH_DATA | 0 | 44.2 | 44.2 | |
199 | pause | ENOUGH_DATA | 0 | 44.2 | 44.2 | 沒法自動循環播放 |
與微信無明顯差別ide
與微信無明顯差別oop
與三星GT-N7105 4.4.2 weixin版本無明顯差別post