From 1cc524a0564c93eeee782a012d200ddc1c049fa7 Mon Sep 17 00:00:00 2001 From: Sam Calder-Mason Date: Thu, 19 Jul 2018 18:06:46 +1000 Subject: [PATCH] Inbuilt player initial offset on playback start --- src/components/application/ptplayer.vue | 18 ++++++++++++------ .../application/ptplayer/videoplayer.vue | 12 +++++++----- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/components/application/ptplayer.vue b/src/components/application/ptplayer.vue index 2d538a9b..8363a825 100644 --- a/src/components/application/ptplayer.vue +++ b/src/components/application/ptplayer.vue @@ -11,7 +11,7 @@ :src="getSourceByLabel(chosenQuality)" :initUrl="getSourceByLabel(chosenQuality).initUrl" :params="getSourceByLabel(chosenQuality).params" - :initialOffset="playertime" + :initialOffset="offset" :createdAt="playerCreatedAt" >
@@ -164,7 +164,8 @@ export default { this.chosenKey = query.key.replace('/library/metadata/', '') this.chosenMediaIndex = query.mediaIndex || 0 this.chosenServer = this.plex.servers[query.chosenServer] - this.playertime = query.playertime + this.offset = query.playertime + console.log('Playertime is now', this.playertime) } // Similuate a real plex client @@ -198,8 +199,8 @@ export default { if (err) { return data.callback(this.playertime) } - let difference = Math.abs(time - this.playertime) - console.log('Poll time was out by', difference) + // let difference = Math.abs(time - this.playertime) + // console.log('Poll time was out by', difference) playerdata.time = time this.playertime = time data.callback(playerdata) @@ -227,8 +228,12 @@ export default { this.chosenMediaIndex = data.params.mediaIndex || 0 this.chosenServer = this.plex.servers[data.params.machineIdentifier] console.log('Chosen server is now', this.chosenServer) - this.playertime = data.params.offset || 0 - this.changedPlaying(true) + this.playertime = data.params.offset || this.$route.query.playertime || 0 + this.offset = this.playertime + console.log('Playertime is now', this.playertime) + this.$nextTick(() => { + this.changedPlaying(true) + }) return true } if (data.command === '/player/playback/stop') { @@ -288,6 +293,7 @@ export default { playingMetadata: null, ready: false, transcodeSessionMetadata: {}, + offset: 0, // Browser browser: this.getBrowser(), diff --git a/src/components/application/ptplayer/videoplayer.vue b/src/components/application/ptplayer/videoplayer.vue index e56d400c..710853d2 100644 --- a/src/components/application/ptplayer/videoplayer.vue +++ b/src/components/application/ptplayer/videoplayer.vue @@ -225,7 +225,7 @@ export default { return reject(new Error(e)) } console.log('Player checks passed') - let lastPlayerSpeed = this.player.currentTime() + let lastPlayerSpeed = this.player.playbackRate() let lastPlayerTime = this.player.currentTime() * 1000 console.log('Buffer start', this.bufferStart, 'Seek To', seekTo, 'Buffer End', this.bufferEnd) if (seekTo < this.bufferEnd && seekTo > this.bufferStart) { @@ -262,7 +262,7 @@ export default { } console.log('Playback rate: ' + this.player.playbackRate()) if (lastPlayerSpeed === this.player.playbackRate()) { - // Our played doesnt want to change it speed, lets swap to clean seek + // Our played doesnt want to change it speed, lets swap to clean seek console.log('Failed seek attempt - swapping to clean seek') this.blockedSpeedChanges = true reject(new Error('Failed to slow seek as the playback rate did not want to change')) @@ -304,7 +304,7 @@ export default { this.player.playbackRate(1.0) return reject(new Error('Slow seek was stopped as we are beyond 5000ms')) } - lastPlayerSpeed = this.player.currentTime() + lastPlayerSpeed = this.player.playbackSpeed() }, 25) } else { console.log('Directly seeking to a time') @@ -332,8 +332,10 @@ export default { }, onPlayerLoadeddata (player) { var that = this - - this.player.currentTime(this.initialOffset / 1000) + this.$nextTick(() => { + console.log('Setting player time to', this.initialOffset / 1000) + this.player.currentTime(this.initialOffset / 1000) + }) player.on(['pause'], () => { this.isPlaying = 'paused'