Drupal is a registered trademark of Dries Buytaert
drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)! drupal 11.3.9 Update released for Drupal core (11.3.9)! drupal 11.3.8 Update released for Drupal core (11.3.8)! drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)!

video_style

1 sites No security coverage
View on drupal.org

Introduction

Video Style provides reusable video style configuration entities and a pluggable provider API for Drupal.

It is designed as the foundation for a modern Drupal video delivery ecosystem: site builders can create reusable video styles, editors can keep using familiar Media workflows, and developers can implement provider-specific delivery logic without coupling the whole system to one vendor or one rendering approach.

A Video style combines a provider plugin, provider-owned settings, derivative generation logic, a responsive rendering strategy, and a render mode. The module also includes a Video style field formatter and a Video style poster thumbnail formatter.

 

Who this module is for

  • Developers who want a clean, extensible architecture for video delivery in Drupal.
  • Site builders who want reusable video configuration instead of repeating formatter settings field by field.
  • Product owners and digital teams who want a maintainable foundation for local delivery, CDN delivery, remote encoding, responsive sources, and future provider integrations.

 

Features

  • A video_style configuration entity at /admin/config/media/video-styles
  • A shared asset administration page at /admin/config/media/video-styles/assets
  • A shared asset registry for provider-owned metadata
  • A dedicated VideoProvider plugin type for provider-specific style logic
  • A bundled local provider for Drupal-managed files
  • A Video style formatter for single-file media video source fields
  • A Video style poster formatter for rendering poster output through the selected Video style
  • A duplicate operation for quickly creating a new Video style from an existing one
  • Support for provider-defined responsive strategies and render modes

 

Why this module exists

Drupal has mature image tooling, but video delivery often ends up fragmented across formatters, players, custom code, and provider-specific integrations.

Video Style addresses that gap by introducing a Drupal-native abstraction for reusable video delivery. Instead of hard-coding one provider or duplicating formatter settings everywhere, the module separates responsibilities clearly:

  • the base module owns reusable styles, formatters, and shared administration
  • provider modules own delivery logic, sync logic, cleanup logic, and provider-specific configuration
  • responsive rendering is handled by the companion Responsive Video Style module

 

Architecture

The module is intentionally built around clear separation of concerns.

  • Provider plugins own their own configuration form, validation, and submit handling.
  • Provider plugins own derivative generation and source-level delivery attributes.
  • Providers can optionally expose poster image data for native video output.
  • Providers declare whether they behave as a source strategy or a variant strategy for responsive rendering.
  • Providers also declare whether Drupal renders native playback markup or whether the provider owns the final output.
  • The formatter selects a saved Video style; the provider decides what is actually rendered.

This makes the system suitable for both simple local delivery and more advanced integrations such as remote encoding or CDN-backed video providers.

 

Delivery lifecycle

The architecture separates request-side scheduling from read-side delivery.

  • Drupal first calls provider request methods such as requestDerivative() and requestPoster().
  • Providers can use that step to schedule work such as local generation, remote synchronization, or asynchronous processing.
  • Drupal then calls the read-side methods such as buildDerivative(), buildPoster(), or buildProviderElement().
  • The shared asset registry invalidates provider-specific cache tags when delivery state changes, so rendered output can move from fallback delivery to ready derivatives or poster assets.

This pattern is especially important for sustainable long-term maintenance because queue orchestration and final rendering stay clearly separated.

 

Bundled local provider

The included local provider works with Drupal-managed files and mirrors the important playback controls from Drupal core’s video formatter, including controls, autoplay, loop, muted, plays inline, width, and height.

It is useful as a simple Drupal-native provider and also serves as a reference implementation for custom provider modules.

 

Ecosystem

Video Style is the base module of a larger ecosystem.

  • Responsive Video Style adds breakpoint-based mapping and responsive field formatting.
  • Video Style: ImageKit adds an ImageKit provider with asynchronous synchronization, remote delivery, poster generation, and codec-specific delivery options.

The architecture is intentionally open for further provider modules such as FFmpeg, Cloudinary, Bunny.net, Mux, or other delivery backends.

 

Installation and configuration

  1. Install the module as usual.
  2. Create one or more Video styles at /admin/config/media/video-styles.
  3. On a media video source field display, select the Video style formatter and choose the desired Video style.
  4. Optionally use the Video style poster formatter where poster output should be rendered from the selected style.
  5. For responsive delivery or remote providers, install one or more companion modules from the Video Style ecosystem.

 

Roadmap

  • Needed for a beta release
    • Broader real-world testing across different Drupal site architectures and Media setups
    • Expanded automated test coverage for config entities, formatters, provider plugins, and asset registry behavior
    • Additional documentation and administrator-facing help text
    • Validation hardening around provider configuration and formatter edge cases
    • Further review of extension patterns for additional provider modules
  • Needed for a stable release
    • Resolved major and critical issues reported by the community
    • Backward-compatibility review and stabilization of the provider API
    • Production-oriented documentation and upgrade expectations
    • Confidence from broader community adoption and feedback
  • Additional 1.x goals
    • More provider integrations
    • More administrative tooling around assets, delivery state, and diagnostics
    • Further improvements to poster handling and provider-rendered use cases

 

Support / community

Issue queue
Bug reports, feature requests, architectural discussion, and feedback.
Maintainer profile
For more about the maintainer and related Drupal work.

 

Maintainer

David Pacassi Torrico (dpacassi)

Software Architect & Developer Backend


Sponsorship

The initial implementation of this module was fully sponsored by Helga.

If you are interested in sponsoring additional features, provider integrations, hardening work, or long-term maintenance, please get in touch through the issue queue or maintainer profile.

Activity

Total releases
4
First release
Apr 2026
Latest release
1 month ago
Release cadence
4 days
Stability
0% stable

Release Timeline

Releases

Version Type Release date
1.0.0-alpha3 Pre-release Apr 28, 2026
1.0.0-alpha2 Pre-release Apr 21, 2026
1.0.0-alpha1 Pre-release Apr 16, 2026
1.0.x-dev Dev Apr 16, 2026