import { VideoFile } from '../../../../shared/models/videos/video.model'
import { renderVideo } from './video-renderer'
import './settings-menu-button'
-import { PeertubePluginOptions, VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
-import { isMobile, videoFileMaxByResolution, videoFileMinByResolution } from './utils'
+import { PeertubePluginOptions, VideoJSCaption, VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
+import { isMobile, videoFileMaxByResolution, videoFileMinByResolution, timeToInt } from './utils'
import * as CacheChunkStore from 'cache-chunk-store'
import { PeertubeChunkStore } from './peertube-chunk-store'
import {
private player: any
private currentVideoFile: VideoFile
private torrent: WebTorrent.Torrent
+ private videoCaptions: VideoJSCaption[]
private renderer
private fakeRenderer
private autoResolution = true
// Disable auto play on iOS
this.autoplay = options.autoplay && this.isIOS() === false
- this.startTime = options.startTime
+ this.startTime = timeToInt(options.startTime)
this.videoFiles = options.videoFiles
this.videoViewUrl = options.videoViewUrl
this.videoDuration = options.videoDuration
+ this.videoCaptions = options.videoCaptions
this.savePlayerSrcFunction = this.player.src
// Hack to "simulate" src link in video.js >= 6
// Magnet hash is not up to date with the torrent file, add directly the torrent file
if (err.message.indexOf('incorrect info hash') !== -1) {
console.error('Incorrect info hash detected, falling back to torrent file.')
- const options = { forcePlay: true }
- return this.addTorrent(this.torrent['xs'], previousVideoFile, options, done)
+ const newOptions = { forcePlay: true, seek: options.seek }
+ return this.addTorrent(this.torrent['xs'], previousVideoFile, newOptions, done)
}
- return console.warn(err)
+ // Remote instance is down
+ if (err.message.indexOf('from xs param') !== -1) {
+ this.handleError(err)
+ }
+
+ console.warn(err)
})
}
this.initSmoothProgressBar()
+ this.initCaptions()
+
this.alterInactivity()
if (this.autoplay === true) {
}
}
+ private initCaptions () {
+ for (const caption of this.videoCaptions) {
+ this.player.addRemoteTextTrack({
+ kind: 'captions',
+ label: caption.label,
+ language: caption.language,
+ id: caption.language,
+ src: caption.src
+ }, false)
+ }
+ }
+
// Thanks: https://github.com/videojs/video.js/issues/4460#issuecomment-312861657
private initSmoothProgressBar () {
const SeekBar = videojsUntyped.getComponent('SeekBar')