Lazy Video
- YOOtheme Pro: 5.0.42 or newer
- Joomla: 5.4.9 or newer
- WordPress: 6.6 or newer
- PHP: 8.2 or newer
- Browser: A current version of Chrome, Firefox, Safari or another modern browser
FFmpeg is optional. It is required only when you want Lazy Video to extract thumbnails automatically from local video files. FFprobe is additionally used for capture offsets above three seconds.
Lazy Video supports:
- YouTube videos, including Shorts and embed URLs
- Vimeo videos, including unlisted player URLs with their required query parameters
- Direct
.mp4,.m4v,.ogvand.webmfiles - HLS
.m3u8streams where the visitor's browser supports native HLS playback
MPEG-DASH .mpd streams are detected but are not rendered because portable native browser support is not available.
The page initially renders a lightweight visual facade and keeps the real player inside an inert template. The YouTube or Vimeo iframe, or the native video element, is attached only when the configured interaction requires it: a Play click, in-view autoplay, modal activation or page-load autoplay.
This reduces unnecessary player requests and JavaScript work. Thumbnail images have their own loading setting and are lazy-loaded by default; enable eager loading only for a thumbnail that appears in the initial viewport.
Yes. YouTube Shorts URLs are recognized automatically. When the video aspect ratio is set to Auto, Lazy Video uses 9:16 for a recognized YouTube Short and 16:9 for other sources.
You can also choose an explicit aspect ratio or enter custom width and height values. Modal and expanded floating playback can inherit the original ratio or use independent dimensions.
Modern browsers normally allow automatic playback only when the video is muted. Lazy Video follows this browser policy for page-load and in-view autoplay instead of attempting to bypass it.
Use a visitor-initiated Play action or modal when sound should be available from the beginning.
The player is activated when the element enters the viewport and pauses when it is no longer visible. Playback can resume when the element becomes visible again.
In-view autoplay is muted to comply with browser autoplay rules. Because the player is not activated until it approaches the viewport, this mode is useful for videos placed lower on a page.
A video can play inside its original placeholder or open in a UIkit modal. A fixed-position element can expand into its configured player, then be minimized back to the reusable facade or dismissed.
Expanded playback can use its own aspect ratio, dimensions and border style. Fixed playback is intentionally user-initiated, so the Autoplay setting is unavailable in that mode. An optional stable Modal ID can be used when a modal must open from a URL hash.
You can show or hide the native player controls, mute the video, enable looping and choose the autoplay mode. YouTube and Vimeo also provide a setting for keyboard controls, while direct videos use the browser's native HTML video controls.
Lazy Video automatically applies the playback state required by the selected mode. For example, browser-initiated autoplay starts muted, while fixed and modal playback remains visitor-initiated.
Yes. A custom thumbnail takes precedence over the automatic YouTube or Vimeo image and over local frame extraction. You can also configure focal-point cropping, alternative text, loading behavior and a hover transition.
Using a local custom thumbnail gives you the most predictable visual result and avoids a thumbnail request to the video provider.
The Thumbnail Fallback is used only when the primary thumbnail cannot be loaded. The primary image may be a custom thumbnail, a cached platform thumbnail or a frame extracted from a local video.
If no fallback image is selected, Lazy Video uses its bundled neutral placeholder. A valid custom thumbnail remains the primary image.
The selected resolution is treated as the preferred maximum. If it is unavailable, Lazy Video automatically tries the nearest lower quality:
- YouTube: Maximum → High → Medium → Fair → Low
- Vimeo: Maximum → Medium → Low
The resolver never upgrades above the quality you selected. You do not need to add separate fallback options to the element.
Yes. Automatic YouTube and Vimeo thumbnails are cached locally on your website through YOOtheme's signed same-origin image route and persistent image cache. The page render itself does not wait for the provider, and visitors receive the generated local cache image instead of a direct provider thumbnail URL.
On the first cache miss, the server validates and downloads one allow-listed image candidate. Later requests reuse YOOtheme's generated cache file. Requests are protected by strict host, MIME type, image-size, timeout and filesystem checks; any failure safely uses the configured fallback image.
Yes. Enable Extract video thumbnail for a local video and choose the output resolution, image quality and capture offset. Lazy Video uses FFmpeg to capture one frame and stores the generated thumbnail in the local cache.
The first uncached extraction requires additional server processing; subsequent renders reuse the cached image. If FFmpeg is unavailable, the media is invalid or the cache is not writable, the element continues rendering with the configured fallback. For busy sites, pre-warm representative pages or use custom thumbnails.
No. Lazy Video caches generated local thumbnails and automatic YouTube or Vimeo thumbnail images, but it does not copy or cache the actual video streams.
YouTube and Vimeo playback still comes from the selected provider. Direct videos and HLS streams remain at the URL configured in the element, so normal hosting, CDN and bandwidth rules continue to apply.
Vimeo must make the selected video's metadata and thumbnail available to your server. Private access rules, an invalid unlisted URL, outbound HTTPS restrictions or an unavailable high-resolution image can prevent the preferred thumbnail from loading.
Lazy Video automatically tries lower Vimeo resolutions. If the image is still unavailable, use a custom thumbnail or Thumbnail Fallback and confirm that the server can connect to vimeo.com and i.vimeocdn.com.
Select a short direct video as the preview. It plays muted and looped on hover and can either appear over the static thumbnail or replace it entirely.
Preview preloading is optional. Leave it disabled when previews are lower on the page or when conserving bandwidth is more important; enable it only when immediate preview response is required.
Yes. You can choose a built-in UIkit play icon or an icon from the icon sets installed on your website, then control its size and appearance. The overlay supports a video title, position, color mode and visual style.
You can also add a separate action link with its own text, target, style, size and spacing. These controls make it possible to build anything from a minimal play facade to a richer promotional video card.
Yes. Lazy Video uses YOOtheme Pro's standard responsive layout system and supports aspect ratios, explicit dimensions, borders, shadows, decorations, animations, visibility rules, alignment and fixed positioning.
Advanced settings provide custom classes, an ID, HTML attributes, transforms and scoped custom CSS. Element CSS is also applied to modal content after UIkit moves the modal under the page body.
Lazy Video reuses YOOtheme Pro's native YouTube and Vimeo script presets; it does not add a separate cookie store or a per-element consent switch.
- Open YOOtheme Pro → Settings → Scripts.
- Add the native YouTube or Vimeo preset.
- Configure the site's YOOtheme Consent Manager compliance type.
When consent is required, the player, autoplay, modal activation and preview remain blocked until permission is granted. If the Consent Manager is set to None, or no matching script preset exists, the element keeps its normal lazy-loading behavior without an additional consent gate.
Granting YouTube or Vimeo permission from the site's general consent banner updates the permission state, but it does not automatically replay earlier Play clicks or start videos that were previously blocked.
The visitor clicks Play again to start the chosen video. When consent is accepted directly from Lazy Video's notification, only the latest requested video resumes. This prevents multiple previously clicked videos from starting together.
No element can guarantee legal compliance by itself. Lazy Video uses youtube-nocookie.com for YouTube and dnt=1 for Vimeo, delays player activation and can integrate with YOOtheme's native consent system. These measures reduce unnecessary early requests but do not make a third-party video anonymous.
The site owner remains responsible for the selected providers, consent configuration, privacy notice, Content Security Policy and applicable legal requirements.
The provider player is not activated until the configured playback interaction. However, automatic platform thumbnails may cause the server to contact an allow-listed YouTube or Vimeo endpoint on the first cache miss. A custom thumbnail hosted on another domain may also create its own browser request.
For strict prior-consent deployments, use a local custom thumbnail, enable the matching native YOOtheme script preset and verify the final page in the browser's Network panel.
Yes, for direct video files. Add one or more WebVTT .vtt subtitle items and define the track type, language, visible label and optional default state.
YouTube and Vimeo manage captions inside their own players, so Lazy Video does not inject local subtitle tracks into those iframes.
Yes. Enable structured data and complete the required video name, description, thumbnail URL and upload date. Optional fields include the content URL, embed URL and ISO 8601 duration.
When the required values are valid, Lazy Video outputs Schema.org VideoObject JSON-LD. Invalid or incomplete schema data is omitted safely instead of breaking the page.
Yes. Source-enabled fields can receive YOOtheme Dynamic Content, including the video source, thumbnail data, titles, links and metadata.
When the source type is not known yet in the Builder, the Advanced thumbnail panel keeps all local, YouTube and Vimeo settings available. After Dynamic Content resolves, Lazy Video validates the final source and uses only the settings relevant to that source.
Yes. You can use multiple Lazy Video elements in grids, sections, accordions and other Builder layouts. Each element keeps its own player, drag, modal, floating and cleanup state.
Shared provider consent is reused across videos, while a consent notification resumes only the most recently requested video. This prevents several previously clicked players from starting at once.
Yes. Lazy Video includes localized Builder labels, descriptions and frontend accessibility text for the supported language catalogs. The matching catalog is selected from the current YOOtheme locale.
If a translation is unavailable or a language file cannot be read, the original English text is used as a safe fallback rather than displaying an empty label.
After updating Lazy Video, clear the YOOtheme cache, the CMS cache and any CDN or optimization cache that serves JavaScript. Then reload the page without the browser cache.
If the placeholder still does not respond, confirm that YOOtheme Pro and the plugin meet the minimum versions, check the browser console for a blocked or missing runtime file, and verify that Content Security Policy or a consent tool is not blocking the selected video provider.