Files
ArtPlayer/packages/artplayer/src/plugins/networkMonitor.js
T

52 lines
1.3 KiB
JavaScript

export default function networkMonitor(art) {
let sampleTime = 10000;
let waitTime = 0;
let playTime = 0;
let lastTime = 0;
let timer = null;
function resetTime() {
waitTime = 0;
playTime = 0;
lastTime = 0;
cancelAnimationFrame(timer);
timer = null;
}
function startTime() {
if (timer) return;
(function loop() {
if (art.isDestroy) return;
timer = requestAnimationFrame(() => {
const nowTime = Date.now();
if (lastTime) {
const diffTime = nowTime - lastTime;
playTime += diffTime;
if (!art.player.playing) {
waitTime += diffTime;
}
}
lastTime = nowTime;
art.emit('networkMonitor', waitTime / playTime);
if (playTime >= sampleTime) {
waitTime = 0;
playTime = 0;
}
loop();
});
})();
}
art.on('play', startTime);
art.on('pause', resetTime);
return {
name: 'networkMonitor',
reset: resetTime,
start: startTime,
sample: time => {
sampleTime = time;
},
};
}