aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/assets/player/peertube-videojs-plugin.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/assets/player/peertube-videojs-plugin.ts')
-rw-r--r--client/src/assets/player/peertube-videojs-plugin.ts24
1 files changed, 17 insertions, 7 deletions
diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts
index 2eddcb1d8..ddb73d074 100644
--- a/client/src/assets/player/peertube-videojs-plugin.ts
+++ b/client/src/assets/player/peertube-videojs-plugin.ts
@@ -36,6 +36,7 @@ class PeerTubePlugin extends Plugin {
36 private readonly playerElement: HTMLVideoElement 36 private readonly playerElement: HTMLVideoElement
37 37
38 private readonly autoplay: boolean = false 38 private readonly autoplay: boolean = false
39 private readonly startTime: number = 0
39 private readonly savePlayerSrcFunction: Function 40 private readonly savePlayerSrcFunction: Function
40 private readonly videoFiles: VideoFile[] 41 private readonly videoFiles: VideoFile[]
41 private readonly videoViewUrl: string 42 private readonly videoViewUrl: string
@@ -71,6 +72,7 @@ class PeerTubePlugin extends Plugin {
71 this.autoplay = this.player.options_.autoplay 72 this.autoplay = this.player.options_.autoplay
72 this.player.options_.autoplay = false 73 this.player.options_.autoplay = false
73 74
75 this.startTime = options.startTime
74 this.videoFiles = options.videoFiles 76 this.videoFiles = options.videoFiles
75 this.videoViewUrl = options.videoViewUrl 77 this.videoViewUrl = options.videoViewUrl
76 this.videoDuration = options.videoDuration 78 this.videoDuration = options.videoDuration
@@ -94,7 +96,7 @@ class PeerTubePlugin extends Plugin {
94 this.runViewAdd() 96 this.runViewAdd()
95 97
96 this.player.one('play', () => { 98 this.player.one('play', () => {
97 // Don't run immediately scheduler, wait some seconds the TCP connections are maid 99 // Don't run immediately scheduler, wait some seconds the TCP connections are made
98 this.runAutoQualitySchedulerTimer = setTimeout(() => { 100 this.runAutoQualitySchedulerTimer = setTimeout(() => {
99 this.runAutoQualityScheduler() 101 this.runAutoQualityScheduler()
100 }, this.CONSTANTS.AUTO_QUALITY_SCHEDULER) 102 }, this.CONSTANTS.AUTO_QUALITY_SCHEDULER)
@@ -234,10 +236,7 @@ class PeerTubePlugin extends Plugin {
234 } 236 }
235 237
236 const newVideoFile = this.videoFiles.find(f => f.resolution.id === resolutionId) 238 const newVideoFile = this.videoFiles.find(f => f.resolution.id === resolutionId)
237 this.updateVideoFile(newVideoFile, delay, () => { 239 this.updateVideoFile(newVideoFile, delay, () => this.seek(currentTime))
238 this.player.currentTime(currentTime)
239 this.player.handleTechSeeked_()
240 })
241 } 240 }
242 241
243 flushVideoFile (videoFile: VideoFile, destroyRenderer = true) { 242 flushVideoFile (videoFile: VideoFile, destroyRenderer = true) {
@@ -263,6 +262,11 @@ class PeerTubePlugin extends Plugin {
263 this.trigger('autoResolutionUpdate') 262 this.trigger('autoResolutionUpdate')
264 } 263 }
265 264
265 private seek (time: number) {
266 this.player.currentTime(time)
267 this.player.handleTechSeeked_()
268 }
269
266 private getAppropriateFile (averageDownloadSpeed?: number): VideoFile { 270 private getAppropriateFile (averageDownloadSpeed?: number): VideoFile {
267 if (this.videoFiles === undefined || this.videoFiles.length === 0) return undefined 271 if (this.videoFiles === undefined || this.videoFiles.length === 0) return undefined
268 if (this.videoFiles.length === 1) return this.videoFiles[0] 272 if (this.videoFiles.length === 1) return this.videoFiles[0]
@@ -310,12 +314,18 @@ class PeerTubePlugin extends Plugin {
310 314
311 if (this.autoplay === true) { 315 if (this.autoplay === true) {
312 this.player.posterImage.hide() 316 this.player.posterImage.hide()
313 this.updateVideoFile(undefined, 0, () => this.player.play()) 317 this.updateVideoFile(undefined, 0, () => {
318 this.seek(this.startTime)
319 this.player.play()
320 })
314 } else { 321 } else {
315 // Proxy first play 322 // Proxy first play
316 const oldPlay = this.player.play.bind(this.player) 323 const oldPlay = this.player.play.bind(this.player)
317 this.player.play = () => { 324 this.player.play = () => {
318 this.updateVideoFile(undefined, 0, () => oldPlay) 325 this.updateVideoFile(undefined, 0, () => {
326 this.seek(this.startTime)
327 oldPlay()
328 })
319 this.player.play = oldPlay 329 this.player.play = oldPlay
320 } 330 }
321 } 331 }