import videojs from 'video.js'
+import { secondsToTime } from '@shared/core-utils'
import { PlayerNetworkInfo as EventPlayerNetworkInfo } from '../peertube-videojs-typings'
-import { bytes, secondsToTime } from '../utils'
+import { bytes } from '../utils'
interface StatsCardOptions extends videojs.ComponentOptions {
videoUUID: string
videoIsLive: boolean
mode: 'webtorrent' | 'p2p-media-loader'
+ p2pEnabled: boolean
}
interface PlayerNetworkInfo {
intervalMs = 300
playerNetworkInfo: PlayerNetworkInfo = {}
- constructor (player: videojs.Player, options: StatsCardOptions) {
- super(player, options)
- }
-
createEl () {
const container = super.createEl('div', {
className: 'vjs-stats-content',
}
toggle () {
- this.updateInterval
- ? this.hide()
- : this.show()
+ if (this.updateInterval) this.hide()
+ else this.show()
}
show () {
this.container.style.display = 'block'
this.updateInterval = setInterval(async () => {
try {
- const options = this.mode === 'webtorrent'
- ? await this.buildWebTorrentOptions()
- : await this.buildHLSOptions()
+ const options = this.mode === 'p2p-media-loader'
+ ? this.buildHLSOptions()
+ : await this.buildWebTorrentOptions() // Default
this.list.innerHTML = this.getListTemplate(options)
} catch (err) {
this.container.style.display = 'none'
}
- private async buildHLSOptions () {
+ private buildHLSOptions () {
const p2pMediaLoader = this.player_.p2pMediaLoader()
const level = p2pMediaLoader.getCurrentLevel()
? `${playerNetworkInfo.totalDownloaded} ⇓ / ${playerNetworkInfo.totalUploaded} ⇑`
: undefined
const downloadBreakdown = playerNetworkInfo.downloadedFromServer
- ? `${playerNetworkInfo.downloadedFromServer} from server · ${playerNetworkInfo.downloadedFromPeers} from peers`
+ ? `${playerNetworkInfo.downloadedFromServer} from servers · ${playerNetworkInfo.downloadedFromPeers} from peers`
: undefined
const bufferProgress = progress !== undefined
: undefined
return `
- ${this.buildElement(player.localize('Player mode'), this.options_.mode)}
+ ${this.buildElement(player.localize('Player mode'), this.mode || 'HTTP')}
+ ${this.buildElement(player.localize('P2P'), player.localize(this.options_.p2pEnabled ? 'enabled' : 'disabled'))}
${this.buildElement(player.localize('Video UUID'), this.options_.videoUUID)}