aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlbin Larsson <mail@albinlarsson.com>2018-06-11 02:05:26 +0200
committerAlbin Larsson <mail@albinlarsson.com>2018-06-11 02:21:00 +0200
commit94699f325558e7e77d63010416e6c554ae87fef6 (patch)
tree7798ea4594530ef4ac315df135cc6a2b067e395b
parent76bb299c68a6b5cc72729771aca2f0d51078ebc5 (diff)
downloadplyr-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.js10
-rw-r--r--src/js/plugins/youtube.js5
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);