diff options
-rw-r--r-- | client/src/app/videos/+video-watch/video-watch.component.ts | 47 | ||||
-rw-r--r-- | client/src/assets/player/peertube-videojs-plugin.ts | 6 |
2 files changed, 34 insertions, 19 deletions
diff --git a/client/src/app/videos/+video-watch/video-watch.component.ts b/client/src/app/videos/+video-watch/video-watch.component.ts index d4e3ec014..bec6932ae 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts | |||
@@ -69,6 +69,10 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
69 | ) | 69 | ) |
70 | 70 | ||
71 | this.paramsSub = this.route.params.subscribe(routeParams => { | 71 | this.paramsSub = this.route.params.subscribe(routeParams => { |
72 | if (this.videoPlayerLoaded) { | ||
73 | this.player.pause() | ||
74 | } | ||
75 | |||
72 | let uuid = routeParams['uuid'] | 76 | let uuid = routeParams['uuid'] |
73 | this.videoService.getVideo(uuid).subscribe( | 77 | this.videoService.getVideo(uuid).subscribe( |
74 | video => this.onVideoFetched(video), | 78 | video => this.onVideoFetched(video), |
@@ -276,30 +280,35 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
276 | return this.router.navigate([ '/videos/list' ]) | 280 | return this.router.navigate([ '/videos/list' ]) |
277 | } | 281 | } |
278 | 282 | ||
279 | this.playerElement = this.elementRef.nativeElement.querySelector('#video-element') | 283 | // Player was already loaded |
280 | 284 | if (this.videoPlayerLoaded !== true) { | |
281 | const videojsOptions = { | 285 | this.playerElement = this.elementRef.nativeElement.querySelector('#video-element') |
282 | controls: true, | 286 | |
283 | autoplay: true, | 287 | const videojsOptions = { |
284 | plugins: { | 288 | controls: true, |
285 | peertube: { | 289 | autoplay: true, |
286 | videoFiles: this.video.files, | 290 | plugins: { |
287 | playerElement: this.playerElement, | 291 | peertube: { |
288 | autoplay: true, | 292 | videoFiles: this.video.files, |
289 | peerTubeLink: false | 293 | playerElement: this.playerElement, |
294 | autoplay: true, | ||
295 | peerTubeLink: false | ||
296 | } | ||
290 | } | 297 | } |
291 | } | 298 | } |
292 | } | ||
293 | 299 | ||
294 | this.videoPlayerLoaded = true | 300 | this.videoPlayerLoaded = true |
295 | 301 | ||
296 | const self = this | 302 | const self = this |
297 | videojs(this.playerElement, videojsOptions, function () { | 303 | videojs(this.playerElement, videojsOptions, function () { |
298 | self.player = this | 304 | self.player = this |
299 | this.on('customError', (event, data) => { | 305 | this.on('customError', (event, data) => { |
300 | self.handleError(data.err) | 306 | self.handleError(data.err) |
307 | }) | ||
301 | }) | 308 | }) |
302 | }) | 309 | } else { |
310 | (this.player as any).setVideoFiles(this.video.files) | ||
311 | } | ||
303 | 312 | ||
304 | this.setVideoDescriptionHTML() | 313 | this.setVideoDescriptionHTML() |
305 | 314 | ||
diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index 4ba37b7d9..4898c1efe 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts | |||
@@ -283,6 +283,12 @@ const peertubePlugin = function (options: PeertubePluginOptions) { | |||
283 | } | 283 | } |
284 | } | 284 | } |
285 | 285 | ||
286 | player.setVideoFiles = function (files: VideoFile[]) { | ||
287 | player.videoFiles = files | ||
288 | |||
289 | player.updateVideoFile(undefined, () => player.play()) | ||
290 | } | ||
291 | |||
286 | player.ready(function () { | 292 | player.ready(function () { |
287 | const controlBar = player.controlBar | 293 | const controlBar = player.controlBar |
288 | 294 | ||