import * as WebTorrent from 'webtorrent'
import { timeToInt } from '@shared/core-utils'
import { VideoFile } from '@shared/models'
-import {
- getAverageBandwidthInStore,
- getStoredMute,
- getStoredP2PEnabled,
- getStoredVolume,
- saveAverageBandwidth
-} from '../peertube-player-local-storage'
+import { getAverageBandwidthInStore, getStoredMute, getStoredVolume, saveAverageBandwidth } from '../peertube-player-local-storage'
import { PeerTubeResolution, PlayerNetworkInfo, WebtorrentPluginOptions } from '../peertube-videojs-typings'
import { getRtcConfig, isIOS, videoFileMaxByResolution, videoFileMinByResolution } from '../utils'
import { PeertubeChunkStore } from './peertube-chunk-store'
this.startTime = timeToInt(options.startTime)
- // Disable auto play on iOS
+ // Custom autoplay handled by webtorrent because we lazy play the video
this.autoplay = options.autoplay
- this.playerRefusedP2P = !getStoredP2PEnabled()
+
+ this.playerRefusedP2P = options.playerRefusedP2P
this.videoFiles = options.videoFiles
this.videoDuration = options.videoDuration
}
// Do not display error to user because we will have multiple fallback
- this.disableErrorDisplay();
+ this.player.peertube().hideFatalError();
// Hack to "simulate" src link in video.js >= 6
// Without this, we can't play the video after pausing it
private getAppropriateFile (averageDownloadSpeed?: number): VideoFile {
if (this.videoFiles === undefined) return undefined
+ if (this.videoFiles.length === 1) return this.videoFiles[0]
const files = this.videoFiles.filter(f => f.resolution.id !== 0)
-
if (files.length === 0) return undefined
- if (files.length === 1) return files[0]
// Don't change the torrent if the player ended
if (this.torrent && this.torrent.progress === 1 && this.player.ended()) return this.currentVideoFile
this.torrent = null
// Enable error display now this is our last fallback
- this.player.one('error', () => this.enableErrorDisplay())
+ this.player.one('error', () => this.player.peertube().displayFatalError())
const httpUrl = this.currentVideoFile.fileUrl
this.player.src = this.savePlayerSrcFunction
return this.player.trigger('customError', { err })
}
- private enableErrorDisplay () {
- this.player.addClass('vjs-error-display-enabled')
- }
-
- private disableErrorDisplay () {
- this.player.removeClass('vjs-error-display-enabled')
- }
-
private pickAverageVideoFile () {
if (this.videoFiles.length === 1) return this.videoFiles[0]