INFO_SCHEDULER: 1000, // Don't change this
AUTO_QUALITY_SCHEDULER: 3000, // Check quality every 3 seconds
AUTO_QUALITY_THRESHOLD_PERCENT: 30, // Bandwidth should be 30% more important than a resolution bitrate to change to it
INFO_SCHEDULER: 1000, // Don't change this
AUTO_QUALITY_SCHEDULER: 3000, // Check quality every 3 seconds
AUTO_QUALITY_THRESHOLD_PERCENT: 30, // Bandwidth should be 30% more important than a resolution bitrate to change to it
- AUTO_QUALITY_OBSERVATION_TIME: 10000, // Wait 10 seconds before potentially changing the definition
- AUTO_QUALITY_UPPER_RESOLUTION_DELAY: 5000, // Buffer upper resolution during 5 seconds
+ AUTO_QUALITY_OBSERVATION_TIME: 10000, // Wait 10 seconds after having change the resolution before another check
+ AUTO_QUALITY_HIGHER_RESOLUTION_DELAY: 5000, // Buffering higher resolution during 5 seconds
BANDWIDTH_AVERAGE_NUMBER_OF_VALUES: 5 // Last 5 seconds to build average bandwidth
}
private player: any
private currentVideoFile: VideoFile
private torrent: WebTorrent.Torrent
BANDWIDTH_AVERAGE_NUMBER_OF_VALUES: 5 // Last 5 seconds to build average bandwidth
}
private player: any
private currentVideoFile: VideoFile
private torrent: WebTorrent.Torrent
private videoViewInterval
private torrentInfoInterval
private autoQualityInterval
private videoViewInterval
private torrentInfoInterval
private autoQualityInterval
- private autoResolution = true
- private isAutoResolutionObservation = false
+ private addTorrentDelay
+ private qualityObservationTimer
+ private runAutoQualitySchedulerTimer
this.player.one('play', () => {
// Don't run immediately scheduler, wait some seconds the TCP connections are maid
this.player.one('play', () => {
// Don't run immediately scheduler, wait some seconds the TCP connections are maid
- setTimeout(() => this.runAutoQualityScheduler(), this.CONSTANTS.AUTO_QUALITY_SCHEDULER)
+ this.runAutoQualitySchedulerTimer = setTimeout(() => {
+ this.runAutoQualityScheduler()
+ }, this.CONSTANTS.AUTO_QUALITY_SCHEDULER)
clearInterval(this.videoViewInterval)
clearInterval(this.torrentInfoInterval)
clearInterval(this.autoQualityInterval)
clearInterval(this.videoViewInterval)
clearInterval(this.torrentInfoInterval)
clearInterval(this.autoQualityInterval)
this.flushVideoFile(previousVideoFile)
const options = { autoplay: true, controls: true }
this.flushVideoFile(previousVideoFile)
const options = { autoplay: true, controls: true }
if (!this.currentVideoFile || f.resolution.id > this.currentVideoFile.resolution.id) {
threshold += ((fileBitrate * this.CONSTANTS.AUTO_QUALITY_THRESHOLD_PERCENT) / 100)
}
if (!this.currentVideoFile || f.resolution.id > this.currentVideoFile.resolution.id) {
threshold += ((fileBitrate * this.CONSTANTS.AUTO_QUALITY_THRESHOLD_PERCENT) / 100)
}
if (this.isAutoResolutionOn() === false) return
if (this.isAutoResolutionObservation === true) return
if (this.isAutoResolutionOn() === false) return
if (this.isAutoResolutionObservation === true) return
if (this.isPlayerWaiting() && file.resolution.id < this.currentVideoFile.resolution.id) {
console.log('Downgrading automatically the resolution to: %s', file.resolution.label)
changeResolution = true
if (this.isPlayerWaiting() && file.resolution.id < this.currentVideoFile.resolution.id) {
console.log('Downgrading automatically the resolution to: %s', file.resolution.label)
changeResolution = true
- setTimeout(() => this.isAutoResolutionObservation = false, this.CONSTANTS.AUTO_QUALITY_OBSERVATION_TIME)
+
+ this.qualityObservationTimer = setTimeout(() => {
+ this.isAutoResolutionObservation = false
+ }, this.CONSTANTS.AUTO_QUALITY_OBSERVATION_TIME)
}
}, this.CONSTANTS.AUTO_QUALITY_SCHEDULER)
}
private isPlayerWaiting () {
}
}, this.CONSTANTS.AUTO_QUALITY_SCHEDULER)
}
private isPlayerWaiting () {