Skip to content
FrameworkStyle

createPlayer

Factory function that creates a player instance with a typed store, provider mixin, and controller for HTML custom elements

createPlayer is the entry point for setting up a Video.js player with HTML custom elements. It accepts a configuration object with a features array and returns a typed PlayerController, context, ProviderMixin, and a create store factory. Import ContainerElement separately when you need a custom container.

import { createPlayer, MediaElement, selectPlayback } from '@videojs/html';
import { videoFeatures } from '@videojs/html/video';

const { ProviderMixin, PlayerController, context } = createPlayer({
  features: videoFeatures,
});

// Provider element: owns the store, provides context to descendants
class VideoPlayer extends ProviderMixin(MediaElement) {}
customElements.define('video-player', VideoPlayer);

// Control element with selector
class PlayButton extends MediaElement {
  #playback = new PlayerController(this, context, selectPlayback);
}

PlayerController and ProviderMixin are scoped to the created player’s feature set. ContainerElement consumes the shared player context, so the same class works with any created player.

Use split elements (recommended for reusable skins/layouts):

import { ContainerElement, createPlayer, MediaElement } from '@videojs/html';
import { videoFeatures } from '@videojs/html/video';

const { ProviderMixin } = createPlayer({ features: videoFeatures });

class PlayerRoot extends ProviderMixin(MediaElement) {}
class PlayerRegion extends ContainerElement {}

Examples

Basic Usage

Play Pause
<demo-video-player class="demo-video-player">
    <media-container>
        <video
            src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4"
            autoplay
            muted
            playsinline
        ></video>
        <demo-play-toggle class="media-play-button">
            <span class="paused">Play</span>
            <span class="playing">Pause</span>
        </demo-play-toggle>
    </media-container>
</demo-video-player>

API Reference

Video

Creates a player factory with a typed store, provider mixin, and controller.

Parameters

ParameterTypeDefaultDetails
config*CreatePlayerConfig<VideoFeatures>

Return Value

PropertyTypeDetails
contextPlayerContext<Store>
createfunction
PlayerControllerPlayerController.Constructor<Store>
ProviderMixinProviderMixin<Store>

Audio

Creates a player factory for audio media.

Parameters

ParameterTypeDefaultDetails
config*CreatePlayerConfig<AudioFeatures>

Return Value

PropertyTypeDetails
contextPlayerContext<Store>
createfunction
PlayerControllerPlayerController.Constructor<Store>
ProviderMixinProviderMixin<Store>

Generic

Creates a player factory with custom features.

Parameters

ParameterTypeDefaultDetails
config*CreatePlayerConfig<Features>

Return Value

PropertyTypeDetails
contextPlayerContext<Store>
createfunction
PlayerControllerPlayerController.Constructor<Store>
ProviderMixinProviderMixin<Store>