From 4e11d8f3ca65bb1ffd0f42fa1521eabc5f3d7713 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 27 Apr 2021 15:50:29 +0200 Subject: Cleanup stats for nerds --- .../p2p-media-loader/p2p-media-loader-plugin.ts | 30 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts') diff --git a/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts b/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts index e97925ab5..4275a5e5e 100644 --- a/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts +++ b/client/src/assets/player/p2p-media-loader/p2p-media-loader-plugin.ts @@ -1,10 +1,10 @@ +import * as Hlsjs from 'hls.js/dist/hls.light.js' +import { Events, Segment } from 'p2p-media-loader-core' +import { Engine, initHlsJsPlayer, initVideoJsContribHlsJsPlayer } from 'p2p-media-loader-hlsjs' import videojs from 'video.js' import { P2PMediaLoaderPluginOptions, PlayerNetworkInfo } from '../peertube-videojs-typings' -import { Engine, initHlsJsPlayer, initVideoJsContribHlsJsPlayer } from 'p2p-media-loader-hlsjs' -import { Events, Segment } from 'p2p-media-loader-core' import { timeToInt } from '../utils' import { registerConfigPlugin, registerSourceHandler } from './hls-plugin' -import * as Hlsjs from 'hls.js/dist/hls.light.js' registerConfigPlugin(videojs) registerSourceHandler(videojs) @@ -36,6 +36,9 @@ class P2pMediaLoaderPlugin extends Plugin { private networkInfoInterval: any + private hlsjsCurrentLevel: number + private hlsjsLevels: Hlsjs.Level[] + constructor (player: videojs.Player, options?: P2PMediaLoaderPluginOptions) { super(player) @@ -84,6 +87,16 @@ class P2pMediaLoaderPlugin extends Plugin { clearInterval(this.networkInfoInterval) } + getCurrentLevel () { + return this.hlsjsLevels.find(l => l.level === this.hlsjsCurrentLevel) + } + + getLiveLatency () { + return undefined as number + // FIXME: Use latency when hls >= V1 + // return this.hlsjs.latency + } + getHLSJS () { return this.hlsjs } @@ -140,6 +153,14 @@ class P2pMediaLoaderPlugin extends Plugin { this.p2pEngine.on(Events.PeerConnect, () => this.statsP2PBytes.numPeers++) this.p2pEngine.on(Events.PeerClose, () => this.statsP2PBytes.numPeers--) + this.hlsjs.on(Hlsjs.Events.MANIFEST_PARSED, (_e, manifest) => { + this.hlsjsCurrentLevel = manifest.firstLevel + this.hlsjsLevels = manifest.levels + }) + this.hlsjs.on(Hlsjs.Events.LEVEL_LOADED, (_e, level) => { + this.hlsjsCurrentLevel = level.levelId || (level as any).id + }) + this.networkInfoInterval = setInterval(() => { const p2pDownloadSpeed = this.arraySum(this.statsP2PBytes.pendingDownload) const p2pUploadSpeed = this.arraySum(this.statsP2PBytes.pendingUpload) @@ -166,7 +187,8 @@ class P2pMediaLoaderPlugin extends Plugin { numPeers: this.statsP2PBytes.numPeers, downloaded: this.statsP2PBytes.totalDownload, uploaded: this.statsP2PBytes.totalUpload - } + }, + bandwidthEstimate: (this.hlsjs as any).bandwidthEstimate / 8 } as PlayerNetworkInfo) }, this.CONSTANTS.INFO_SCHEDULER) } -- cgit v1.2.3