1
0
Fork 0

Fix video play on google chrome

This commit is contained in:
Chocobozzz 2018-02-07 10:01:37 +01:00
parent 0bc22f8d7e
commit 481d35966f
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 10 additions and 16 deletions

View File

@ -217,10 +217,15 @@ class PeerTubePlugin extends Plugin {
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
@ -281,6 +286,7 @@ class PeerTubePlugin extends Plugin {
this.renderer = renderer
if (!this.player.paused()) this.player.play().then(done)
else done()
})
})
@ -349,18 +355,12 @@ class PeerTubePlugin extends Plugin {
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())
})
}
}

View File

@ -43,7 +43,6 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca
prepareElem()
preparedElem.addEventListener('error', fallbackToMediaSource)
preparedElem.addEventListener('loadstart', onLoadStart)
preparedElem.addEventListener('canplay', onCanPlay)
return videostream(file, preparedElem)
}
@ -51,7 +50,6 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca
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))
@ -64,7 +62,6 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca
function fallbackToMediaSource () {
preparedElem.removeEventListener('error', fallbackToMediaSource)
preparedElem.removeEventListener('canplay', onCanPlay)
useMediaSource()
}
@ -82,10 +79,7 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca
function onLoadStart () {
preparedElem.removeEventListener('loadstart', onLoadStart)
if (opts.autoplay) preparedElem.play()
}
function onCanPlay () {
preparedElem.removeEventListener('canplay', onCanPlay)
callback(null, renderer)
}
}