return this.currentVideoFile ? this.currentVideoFile.resolution.id : -1
}
- private getVideoFile(): VideoFile {
- const savedAverageBandwidth = getAverageBandwidthInStore()
- return savedAverageBandwidth
- ? this.getAppropriateFile(savedAverageBandwidth)
- : this.pickAverageVideoFile()
-}
-
updateVideoFile (
- videoFile: VideoFile,
+ videoFile?: VideoFile,
options: {
forcePlay?: boolean,
seek?: number,
} = {},
done: () => void = () => { /* empty */ }
) {
- if (videoFile === undefined) {
+ // Automatically choose the adapted video file
+ if (!videoFile) {
+ const savedAverageBandwidth = getAverageBandwidthInStore()
+ videoFile = savedAverageBandwidth
+ ? this.getAppropriateFile(savedAverageBandwidth)
+ : this.pickAverageVideoFile()
+ }
+
+ if (!videoFile) {
throw Error(`Can't update video file since videoFile is undefined.`)
}
options: PlayOptions,
done: Function
) {
+ if (!magnetOrTorrentUrl) return this.fallbackToHttp(options, done)
+
console.log('Adding ' + magnetOrTorrentUrl + '.')
const oldTorrent = this.torrent
if (this.autoplay) {
this.player.posterImage.hide()
- return this.updateVideoFile(this.getVideoFile(), { forcePlay: true, seek: this.startTime })
+ return this.updateVideoFile(undefined, { forcePlay: true, seek: this.startTime })
}
// Proxy first play
this.player.addClass('vjs-has-big-play-button-clicked')
this.player.play = oldPlay
- this.updateVideoFile(this.getVideoFile(), { forcePlay: true, seek: this.startTime })
+ this.updateVideoFile(undefined, { forcePlay: true, seek: this.startTime })
}
}
uploadSpeed: this.torrent.uploadSpeed,
downloaded: this.torrent.downloaded,
uploaded: this.torrent.uploaded
- }
+ },
+ bandwidthEstimate: this.webtorrent.downloadSpeed
} as PlayerNetworkInfo)
}, this.CONSTANTS.INFO_SCHEDULER)
}
private pickAverageVideoFile () {
if (this.videoFiles.length === 1) return this.videoFiles[0]
- return this.videoFiles[Math.floor(this.videoFiles.length / 2)]
+ const files = this.videoFiles.filter(f => f.resolution.id !== 0)
+ return files[Math.floor(files.length / 2)]
}
private stopTorrent (torrent: WebTorrent.Torrent) {
}
private changeQuality () {
- const resolutionId = this.currentVideoFile.resolution.id
+ const resolutionId = this.currentVideoFile.resolution.id as number
const qualityLevels = this.player.qualityLevels()
if (resolutionId === -1) {