mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-25 08:01:20 -08:00
添加监听视频卡顿的插件
This commit is contained in:
1 parent
cef60c4d9a
commit
05cbe4dad6
10 files changed
+149
-1
No files matched your search
@@ -576,6 +576,7 @@
|
||||
miniProgressBar: 'boolean',
|
||||
localPreview: 'boolean',
|
||||
autoPip: 'boolean',
|
||||
networkMonitor: 'boolean',
|
||||
plugins: ['function'],
|
||||
whitelist: ['string|function|regexp'],
|
||||
layers: [{
|
||||
@@ -1856,6 +1857,11 @@
|
||||
return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) / $video.duration : 0;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(player, 'loadedTime', {
|
||||
get: function get() {
|
||||
return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) : 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function seekMix$2(art, player) {
|
||||
@@ -4213,6 +4219,53 @@
|
||||
};
|
||||
}
|
||||
|
||||
function networkMonitor(art) {
|
||||
var waitTime = 0;
|
||||
var playTime = 0;
|
||||
var lastTime = 0;
|
||||
var timer = null;
|
||||
|
||||
function resetTime() {
|
||||
waitTime = 0;
|
||||
playTime = 0;
|
||||
lastTime = 0;
|
||||
cancelAnimationFrame(timer);
|
||||
timer = null;
|
||||
}
|
||||
|
||||
function calculatingTime() {
|
||||
if (timer) return;
|
||||
|
||||
(function loop() {
|
||||
if (art.isDestroy) return;
|
||||
timer = requestAnimationFrame(function () {
|
||||
var nowTime = Date.now();
|
||||
|
||||
if (lastTime) {
|
||||
var diffTime = nowTime - lastTime;
|
||||
playTime += diffTime;
|
||||
|
||||
if (!art.player.playing) {
|
||||
waitTime += diffTime;
|
||||
}
|
||||
}
|
||||
|
||||
lastTime = nowTime;
|
||||
art.emit('networkMonitor', waitTime / playTime);
|
||||
loop();
|
||||
});
|
||||
})();
|
||||
}
|
||||
|
||||
art.on('play', calculatingTime);
|
||||
art.on('pause', resetTime);
|
||||
return {
|
||||
name: 'networkMonitor',
|
||||
reset: resetTime,
|
||||
calculating: calculatingTime
|
||||
};
|
||||
}
|
||||
|
||||
function autoPip(art) {
|
||||
var events = art.events,
|
||||
player = art.player,
|
||||
@@ -4229,6 +4282,9 @@
|
||||
}
|
||||
}, 300);
|
||||
events.proxy(window, 'scroll', scrollDebounce);
|
||||
return {
|
||||
name: 'autoPip'
|
||||
};
|
||||
}
|
||||
|
||||
var Plugins =
|
||||
@@ -4255,6 +4311,10 @@
|
||||
this.add(localPreview);
|
||||
}
|
||||
|
||||
if (option.networkMonitor) {
|
||||
this.add(networkMonitor);
|
||||
}
|
||||
|
||||
if (option.autoPip) {
|
||||
this.add(autoPip);
|
||||
}
|
||||
@@ -4464,6 +4524,7 @@
|
||||
miniProgressBar: false,
|
||||
localPreview: false,
|
||||
autoPip: false,
|
||||
networkMonitor: false,
|
||||
layers: [],
|
||||
contextmenu: [],
|
||||
quality: [],
|
||||
|
||||
Reference in new issue
Block a user