From 3ddea5d21a04472783a66c87285a4c9b3973a6f0 Mon Sep 17 00:00:00 2001 From: Tsachi Shlidor Date: Mon, 11 Sep 2023 16:18:48 +0300 Subject: [PATCH] fix: Duplicate requests for video summarization and thumbnails info --- src/plugins/cloudinary/index.js | 14 +++++++-- .../models/video-source/video-source.js | 12 ++++---- src/video-player.js | 30 ------------------- 3 files changed, 17 insertions(+), 39 deletions(-) diff --git a/src/plugins/cloudinary/index.js b/src/plugins/cloudinary/index.js index d98faa94..5b5aaf90 100644 --- a/src/plugins/cloudinary/index.js +++ b/src/plugins/cloudinary/index.js @@ -4,17 +4,18 @@ import { applyWithProps } from 'utils/apply-with-props'; import { sliceAndUnsetProperties } from 'utils/slicing'; import { isKeyInTransformation } from 'utils/cloudinary'; import { assign } from 'utils/assign'; +import { isFunction } from 'utils/type-inference'; +import Playlistable from 'mixins/playlistable'; +import plugins from 'plugins'; import { normalizeOptions, mergeTransformations, codecShorthandTrans, extendCloudinaryConfig } from './common'; -import Playlistable from 'mixins/playlistable'; import VideoSource from './models/video-source/video-source'; import EventHandlerRegistry from './event-handler-registry'; import AudioSource from './models/audio-source/audio-source'; -import { isFunction } from '../../utils/type-inference'; const DEFAULT_PARAMS = { transformation: {}, @@ -79,9 +80,16 @@ class CloudinaryContext extends mixin(Playlistable) { } _source = src; - if (!options.skipRefresh) { + + const isDashRequired = options.sourceTypes && options.sourceTypes.some(s => s.includes('dash')); + if (plugins.dashPlugin && isDashRequired) { + plugins.dashPlugin().then(() => { + refresh(); + }); + } else if (!options.skipRefresh) { refresh(); } + this.player.trigger('cldsourcechanged', { source: src }); return _chainTarget; diff --git a/src/plugins/cloudinary/models/video-source/video-source.js b/src/plugins/cloudinary/models/video-source/video-source.js index d182badf..804f48d4 100644 --- a/src/plugins/cloudinary/models/video-source/video-source.js +++ b/src/plugins/cloudinary/models/video-source/video-source.js @@ -1,10 +1,9 @@ -import BaseSource from '../base-source'; -import ImageSource from '../image-source'; -import { normalizeOptions, isSrcEqual, isRawUrl, mergeTransformations } from '../../common'; +import { default as vjs } from 'video.js'; import { sliceAndUnsetProperties } from 'utils/slicing'; import { assign } from 'utils/assign'; import { objectToQuerystring } from 'utils/querystring'; -import { default as vjs } from 'video.js'; +import { castArray } from 'utils/array'; +import { SOURCE_TYPE } from 'utils/consts'; import { CONTAINER_MIME_TYPES, DEFAULT_POSTER_PARAMS, @@ -12,8 +11,9 @@ import { VIDEO_SUFFIX_REMOVAL_PATTERN } from './video-source.const'; import { formatToMimeTypeAndTransformation, isCodecAlreadyExist, normalizeFormat } from './video-source.utils'; -import { castArray } from '../../../../utils/array'; -import { SOURCE_TYPE } from '../../../../utils/consts'; +import { normalizeOptions, isSrcEqual, isRawUrl, mergeTransformations } from '../../common'; +import BaseSource from '../base-source'; +import ImageSource from '../image-source'; let objectId = 0; diff --git a/src/video-player.js b/src/video-player.js index 4435102e..168f33e5 100644 --- a/src/video-player.js +++ b/src/video-player.js @@ -135,16 +135,6 @@ class VideoPlayer extends Utils.mixin(Eventable) { }; _setVideoJsListeners(ready) { - - // Prevent flash of error message while lazy-loading plugins. - videojs.hook('beforeerror', (player, err) => { - if (err && err.code === 3 && this.loadingLazyPlugins) { - err = null; - } - return err; - }); - - this.videojs.on(PLAYER_EVENT.ERROR, () => { const error = this.videojs.error(); if (error) { @@ -208,21 +198,6 @@ class VideoPlayer extends Utils.mixin(Eventable) { this._initSeekThumbs(); } - async _initLazyPlugins(options) { - this.loadingLazyPlugins = true; - - await this._initDash(options); - - this.loadingLazyPlugins = false; - } - - async _initDash(options) { - const isDashRequired = options.sourceTypes && options.sourceTypes.some(s => s.includes('dash')); - if (plugins.dashPlugin && isDashRequired) { - await plugins.dashPlugin(); - } - } - _isFullScreen() { return this.videojs.player().isFullscreen(); } @@ -584,11 +559,6 @@ class VideoPlayer extends Utils.mixin(Eventable) { const videoReadyTimeout = this.videojs.options_.videoTimeout || 55000; this.reTryVideo(maxTries, videoReadyTimeout); - // Lazy loaded plugins - this._initLazyPlugins(options).then(() => { - return this.videojs.cloudinary.source(publicId, options); - }); - return this.videojs.cloudinary.source(publicId, options); }