private playerElement: HTMLVideoElement
private videoFiles: VideoFile[]
private torrent: WebTorrent.Torrent
+ private autoplay = false
constructor (player: videojs.Player, options: PeertubePluginOptions) {
super(player, options)
+ // Fix canplay event on google chrome by disabling default videojs autoplay
+ this.autoplay = this.player.options_.autoplay
+ this.player.options_.autoplay = false
+
this.videoFiles = options.videoFiles
// Hack to "simulate" src link in video.js >= 6
this.renderer = renderer
if (!this.player.paused()) this.player.play().then(done)
+ else done()
})
})
const webTorrentButton = new WebTorrentButton(this.player)
controlBar.webTorrent = controlBar.el().insertBefore(webTorrentButton.el(), controlBar.progressControl.el())
- if (this.player.options_.autoplay === true) {
- this.updateVideoFile()
+ if (this.autoplay === true) {
+ this.updateVideoFile(undefined, () => this.player.play())
} else {
this.player.one('play', () => {
- // On firefox, we need to wait to load the video before playing
- if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1) {
- this.player.pause()
- this.updateVideoFile(undefined, () => this.player.play())
- return
- }
-
- this.updateVideoFile(undefined)
+ this.player.pause()
+ this.updateVideoFile(undefined, () => this.player.play())
})
}
}
prepareElem()
preparedElem.addEventListener('error', fallbackToMediaSource)
preparedElem.addEventListener('loadstart', onLoadStart)
- preparedElem.addEventListener('canplay', onCanPlay)
return videostream(file, preparedElem)
}
prepareElem()
preparedElem.addEventListener('error', callback)
preparedElem.addEventListener('loadstart', onLoadStart)
- preparedElem.addEventListener('canplay', onCanPlay)
const wrapper = new MediaElementWrapper(preparedElem)
const writable = wrapper.createWriteStream(getCodec(file.name))
function fallbackToMediaSource () {
preparedElem.removeEventListener('error', fallbackToMediaSource)
- preparedElem.removeEventListener('canplay', onCanPlay)
useMediaSource()
}
function onLoadStart () {
preparedElem.removeEventListener('loadstart', onLoadStart)
if (opts.autoplay) preparedElem.play()
- }
- function onCanPlay () {
- preparedElem.removeEventListener('canplay', onCanPlay)
callback(null, renderer)
}
}