diff options
author | Albin Larsson <mail@albinlarsson.com> | 2018-06-11 02:05:26 +0200 |
---|---|---|
committer | Albin Larsson <mail@albinlarsson.com> | 2018-06-11 02:21:00 +0200 |
commit | 94699f325558e7e77d63010416e6c554ae87fef6 (patch) | |
tree | 7798ea4594530ef4ac315df135cc6a2b067e395b | |
parent | 76bb299c68a6b5cc72729771aca2f0d51078ebc5 (diff) | |
download | plyr-94699f325558e7e77d63010416e6c554ae87fef6.tar.lz plyr-94699f325558e7e77d63010416e6c554ae87fef6.tar.xz plyr-94699f325558e7e77d63010416e6c554ae87fef6.zip |
Fix problem with YouTube and Vimeo seeking while playing
-rw-r--r-- | src/js/plugins/vimeo.js | 10 | ||||
-rw-r--r-- | src/js/plugins/youtube.js | 5 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/js/plugins/vimeo.js b/src/js/plugins/vimeo.js index 46d4f3f9..c7548e3d 100644 --- a/src/js/plugins/vimeo.js +++ b/src/js/plugins/vimeo.js @@ -9,6 +9,9 @@ import utils from './../utils'; // Set playback state and trigger change (only on actual change) function assurePlaybackState(play) { + if (play && !this.embed.hasPlayed) { + this.embed.hasPlayed = true; + } if (this.media.paused === play) { this.media.paused = !play; utils.dispatchEvent.call(this, this.media, play ? 'play' : 'pause'); @@ -153,19 +156,20 @@ const vimeo = { // Get current paused state and volume etc const { embed, media, paused, volume } = player; + const restorePause = paused && !embed.hasPlayed; // Set seeking state and trigger event media.seeking = true; utils.dispatchEvent.call(player, media, 'seeking'); // If paused, mute until seek is complete - Promise.resolve(paused && embed.setVolume(0)) + Promise.resolve(restorePause && embed.setVolume(0)) // Seek .then(() => embed.setCurrentTime(time)) // Restore paused - .then(() => paused && embed.pause()) + .then(() => restorePause && embed.pause()) // Restore volume - .then(() => paused && embed.setVolume(volume)) + .then(() => restorePause && embed.setVolume(volume)) .catch(() => { // Do nothing }); diff --git a/src/js/plugins/youtube.js b/src/js/plugins/youtube.js index 67b8093e..9b067c8a 100644 --- a/src/js/plugins/youtube.js +++ b/src/js/plugins/youtube.js @@ -66,6 +66,9 @@ function mapQualityUnits(levels) { // Set playback state and trigger change (only on actual change) function assurePlaybackState(play) { + if (play && !this.embed.hasPlayed) { + this.embed.hasPlayed = true; + } if (this.media.paused === play) { this.media.paused = !play; utils.dispatchEvent.call(this, this.media, play ? 'play' : 'pause'); @@ -469,7 +472,7 @@ const youtube = { case 1: // Restore paused state (YouTube starts playing on seek if the video hasn't been played yet) - if (player.media.paused) { + if (player.media.paused && !player.embed.hasPlayed) { player.media.pause(); } else { assurePlaybackState.call(player, true); |