Skip to content
FrameworkStyle

Customize skins

Learn the public customization surface for packaged Video.js skins and when to eject

Video.js v10 comes with two pre-built skins: Default and Minimal. Start with their public CSS custom properties. When you need to change controls, layout, or interactions, eject the closest skin by copying its code into your project and making it your own.

Basic customization

Set these CSS custom properties directly on the skin:

<video-skin style="--media-accent-color: #f5c518; --media-border-radius: 1rem">
  <video src="video.mp4"></video>
</video-skin>
Property Name Description Type Example
--media-accent-color The color of slider fills and accented controls <color> #f5c518
--media-accent-text-color The color of text and icons shown on the accent color <color> black
--media-border-radius The border radius of the media player A valid border-radius value 1rem
--media-scale-unit The base sizing unit for skin spacing and icons <length> 1rem

If you omit --media-accent-text-color, the skins choose a contrasting text color from --media-accent-color using contrast-color(). You only need to set it when you want to override that result.

Set the audio color scheme

The audio skins adapt their main palette for light and dark mode using light-dark(). It uses the inherited color-scheme, so set color-scheme on the player or an ancestor:

:root {
  color-scheme: light dark;
}

The video skins keep their dark control presentation in both color schemes.

Scale with the document font size

Vanilla CSS and Tailwind skins use --media-scale-unit as the base for control spacing and icon sizes. Vanilla CSS skins also use it for font sizes. It defaults to 16px, so player sizing does not change with the document root font size or the app’s Tailwind spacing scale. Set it to 1rem on the player or an ancestor to make the UI scale with the document root font size:

.player {
  --media-scale-unit: 1rem;
}

You can also add your own class names to the skins.

Where packaged customization stops

The four properties above are the public styling controls for packaged skins. Don’t depend on the elements, classnames, or other custom properties inside a packaged skin. They may change between releases.

Packaged video skins also let you replace the poster through the poster slot.

See Poster.

For anything deeper, eject instead of reaching into the packaged skin. There are no packaged-skin options for adding, removing, or rearranging controls, or replacing its built-in feedback and interactions. Seek buttons are a common example: the audio skins include 10-second skip-back and skip-forward buttons, but the video skins ship without them. To add rewind and fast-forward controls to a video skin, eject it and place a SeekButton in the control bar.

Eject a skin

Eject as soon as the packaged skin no longer matches the player you need. Once ejected, removing a control is removing a component, and changing an overlay or interaction is editing code you own.

An ejected skin is app code, so its markup, class names, and styles are yours to change. If none of the packaged skins is a useful starting point, build a custom UI from the player, container, and individual UI components instead.

Soon, we’ll have a CLI that ejects skins in your preferred framework and style. For now, we invite you to try these copy-paste-ready implementations.

To eject a skin:

  1. Choose the closest implementation below.
  2. Copy every file shown for your framework into your project.
  3. Replace the packaged skin with the copied component or player markup, then edit the files you own.

Default video skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/video.js"></script>
<link rel="stylesheet" href="./player.css">

<video-player poster="https://image.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/thumbnail.webp">
  <media-container class="media-skin media-container video-skin" data-theme="default" data-preset="video">
  <slot>
  </slot>
  <media-poster class="media-poster">
  <img alt="" decoding="async" />
  </media-poster>
  <media-buffering-indicator class="media-buffering-indicator">
  <media-icon name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-error-dialog class="media-dialog-root">
  <media-dialog-backdrop class="media-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="media-dialog-popup">
  <div class="media-dialog-content">
  <media-dialog-title class="media-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="media-dialog-description">
  </media-dialog-description>
  </div>
  <div class="media-dialog-actions">
  <media-dialog-close class="media-button media-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls>
  <media-controls-backdrop class="video-controls-backdrop">
  </media-controls-backdrop>
  <media-controls-content class="video-controls video-controls-content">
  <media-tooltip-group>
  <media-controls-group class="video-controls-primary">
  <media-play-button class="media-button media-play-button" id="vjs-2LlEBWp8-0-trigger">
  <media-icon name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-mute-button commandfor="vjs-w7EFSLPI-0-popup" class="media-button media-mute-button video-controls-volume-button" id="vjs-2LlEBWp8-0-2-trigger">
  <media-icon name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-2-trigger" delay="0" disabled sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs-w7EFSLPI-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="vertical">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  <media-controls-group class="video-time-slider-group">
  <media-time class="media-time-value video-time-value" type="current">
  </media-time>
  <media-time-slider class="media-slider media-time-slider">
  <media-time-slider-chapters class="media-time-slider-chapters">
  <template>
  <div class="media-time-slider-chapter">
  <media-slider-track class="media-slider-track media-time-slider-chapter-track">
  <media-slider-buffer class="media-slider-buffer">
  </media-slider-buffer>
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  </div>
  </template>
  </media-time-slider-chapters>
  <media-slider-thumb class="media-slider-thumb media-time-slider-thumb">
  </media-slider-thumb>
  <media-slider-preview class="media-slider-preview" overflow="visible">
  <div class="media-slider-preview-content media-popup-surface media-slider-thumbnail">
  <media-slider-thumbnail class="media-slider-thumbnail-image">
  </media-slider-thumbnail>
  <media-icon name="spinner" class="media-slider-thumbnail-spinner-icon">
  </media-icon>
  </div>
  <div class="media-slider-preview-content media-time-slider-preview-content">
  <media-time-slider-chapter-title class="media-time-slider-chapter-title">
  </media-time-slider-chapter-title>
  <media-slider-value class="media-time-slider-value" type="pointer">
  </media-slider-value>
  </div>
  </media-slider-preview>
  </media-time-slider>
  <media-time class="media-time-toggle video-time-value" type="remaining" toggle>
  </media-time>
  </media-controls-group>
  <media-captions-button class="media-button media-captions-button video-controls-captions-button" id="vjs-2LlEBWp8-0-3-trigger">
  <media-icon name="captions-off" class="media-button-icon media-captions-button-off-icon">
  </media-icon>
  <media-icon name="captions-on" class="media-button-icon media-captions-button-on-icon">
  </media-icon>
  </media-captions-button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-3-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <button commandfor="vjs--FkLpPw4-0-popup" class="media-button media-settings-menu-trigger video-controls-settings-button" id="vjs-2LlEBWp8-0-4-trigger">
  <media-icon name="gear" class="media-button-icon media-settings-menu-trigger-icon">
  </media-icon>
  <media-text class="media-settings-menu-trigger-label" token="menu.settings">Settings</media-text>
  </button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-4-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-text token="menu.settings">Settings</media-text>
  </media-tooltip>
  <media-menu side="top" align="center" class="media-popup media-popup-surface media-menu-popup media-menu-resizable-popup" id="vjs--FkLpPw4-0-popup">
  <media-menu-content class="media-menu-content">
  <media-menu-item commandfor="vjs-9u7bYsN5-0-content" class="media-menu-trigger-item">
  <media-icon name="switches" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.quality">Quality</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-9u7bYsN5-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.quality">Quality</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-quality-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span>
  <span data-part="label">
  </span>
  <sup data-part="tier" class="media-menu-tier">
  </sup>
  </span>
  <span data-part="badge" class="media-menu-badge">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-quality-radio-group>
  </media-menu-content>
  <media-menu-item commandfor="vjs-ieXR5ng0-0-content" class="media-menu-trigger-item">
  <media-icon name="speech" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.audio">Audio</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-ieXR5ng0-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.audio">Audio</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-audio-track-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-audio-track-radio-group>
  </media-menu-content>
  <media-menu-item commandfor="vjs-aHbCtmyv-0-content" class="media-menu-trigger-item">
  <media-icon name="speed" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.speed">Speed</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-aHbCtmyv-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.speed">Speed</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-playback-rate-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-playback-rate-radio-group>
  </media-menu-content>
  <media-menu-item commandfor="vjs-VFLiqDY6-0-content" class="media-menu-trigger-item">
  <media-icon name="captions-off" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.captions">Captions</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-VFLiqDY6-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.captions">Captions</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-captions-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-captions-radio-group>
  </media-menu-content>
  </media-menu-content>
  </media-menu>
  </media-controls-group>
  <media-controls-group class="video-controls-secondary">
  <media-cast-button class="media-button media-cast-button" id="vjs-2LlEBWp8-0-5-trigger">
  <media-icon name="cast-enter" class="media-button-icon media-cast-button-enter-icon">
  </media-icon>
  <media-icon name="cast-exit" class="media-button-icon media-cast-button-exit-icon">
  </media-icon>
  </media-cast-button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-5-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-airplay-button class="media-button media-airplay-button" id="vjs-2LlEBWp8-0-6-trigger">
  <media-icon name="airplay-enter" class="media-button-icon media-airplay-button-enter-icon">
  </media-icon>
  <media-icon name="airplay-exit" class="media-button-icon media-airplay-button-exit-icon">
  </media-icon>
  </media-airplay-button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-6-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-pip-button class="media-button media-pip-button" id="vjs-2LlEBWp8-0-7-trigger">
  <media-icon name="pip-enter" class="media-button-icon media-pip-button-enter-icon">
  </media-icon>
  <media-icon name="pip-exit" class="media-button-icon media-pip-button-exit-icon">
  </media-icon>
  </media-pip-button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-7-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-fullscreen-button class="media-button media-fullscreen-button" id="vjs-2LlEBWp8-0-8-trigger">
  <media-icon name="fullscreen-enter" class="media-button-icon media-fullscreen-button-enter-icon">
  </media-icon>
  <media-icon name="fullscreen-exit" class="media-button-icon media-fullscreen-button-exit-icon">
  </media-icon>
  </media-fullscreen-button>
  <media-tooltip trigger="vjs-2LlEBWp8-0-8-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowRight" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowLeft" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="l" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="j" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="0-9" action="seekToPercent">
  </media-hotkey>
  <media-hotkey keys="Home" action="seekToPercent" value="0">
  </media-hotkey>
  <media-hotkey keys="End" action="seekToPercent" value="100">
  </media-hotkey>
  <media-hotkey keys="&gt;" action="speedUp">
  </media-hotkey>
  <media-hotkey keys="&lt;" action="speedDown">
  </media-hotkey>
  <media-hotkey keys="f" action="toggleFullscreen">
  </media-hotkey>
  <media-hotkey keys="c" action="toggleSubtitles">
  </media-hotkey>
  <media-hotkey keys="i" action="togglePictureInPicture">
  </media-hotkey>
  <media-gesture type="tap" action="togglePaused" pointer="mouse" region="center">
  </media-gesture>
  <media-gesture type="tap" action="toggleControls" pointer="touch">
  </media-gesture>
  <media-gesture type="doubletap" action="seekStep" region="left">
  </media-gesture>
  <media-gesture type="doubletap" action="toggleFullscreen" region="center">
  </media-gesture>
  <media-gesture type="doubletap" action="seekStep" region="right">
  </media-gesture>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  <div class="video-status-indicators">
  <media-volume-indicator class="media-indicator media-volume-indicator">
  <media-volume-indicator-fill class="media-indicator-content media-volume-indicator-fill">
  <media-icon name="volume-high" class="media-volume-indicator-high-icon">
  </media-icon>
  <media-icon name="volume-low" class="media-volume-indicator-low-icon">
  </media-icon>
  <media-icon name="volume-off" class="media-volume-indicator-off-icon">
  </media-icon>
  <media-volume-indicator-value class="media-volume-indicator-value">
  </media-volume-indicator-value>
  </media-volume-indicator-fill>
  </media-volume-indicator>
  <media-status-indicator actions="toggleSubtitles,toggleFullscreen,togglePictureInPicture" class="media-indicator media-status-indicator">
  <div class="media-indicator-content media-status-indicator-content">
  <media-icon name="captions-on" class="media-status-indicator-captions-on-icon">
  </media-icon>
  <media-icon name="captions-off" class="media-status-indicator-captions-off-icon">
  </media-icon>
  <media-icon name="fullscreen-enter" class="media-status-indicator-fullscreen-enter-icon">
  </media-icon>
  <media-icon name="fullscreen-exit" class="media-status-indicator-fullscreen-exit-icon">
  </media-icon>
  <media-icon name="pip-enter" class="media-status-indicator-pip-enter-icon">
  </media-icon>
  <media-icon name="pip-exit" class="media-status-indicator-pip-exit-icon">
  </media-icon>
  <media-status-indicator-value class="media-status-indicator-value">
  </media-status-indicator-value>
  </div>
  </media-status-indicator>
  <media-seek-indicator class="media-seek-indicator">
  <media-icon name="chevron" class="media-seek-indicator-icon">
  </media-icon>
  <media-seek-indicator-value class="media-seek-indicator-value">
  </media-seek-indicator-value>
  </media-seek-indicator>
  <media-status-indicator actions="togglePaused" class="media-playback-status-indicator">
  <media-icon name="play" class="media-playback-status-indicator-play-icon">
  </media-icon>
  <media-icon name="pause" class="media-playback-status-indicator-pause-icon">
  </media-icon>
  </media-status-indicator>
  </div>
  </media-container>
</video-player>

Default audio skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/audio.js"></script>
<link rel="stylesheet" href="./player.css">

<audio-player>
  <media-container class="media-skin media-container audio-skin" data-theme="default" data-preset="audio">
  <slot>
  </slot>
  <media-error-dialog class="audio-dialog-root">
  <media-dialog-backdrop class="audio-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="audio-dialog-popup">
  <div class="audio-dialog-content">
  <media-dialog-title class="audio-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="audio-dialog-description">
  </media-dialog-description>
  </div>
  <div class="audio-dialog-actions">
  <media-dialog-close class="media-button audio-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls visibility="always">
  <media-controls-content class="audio-controls audio-controls-content">
  <media-tooltip-group>
  <media-controls-group class="audio-controls-start">
  <div class="audio-play-button">
  <media-buffering-indicator class="media-buffering-indicator audio-play-button-buffering-indicator">
  <media-icon name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-play-button class="media-button media-play-button" id="vjs-WpY815nZ-0-trigger">
  <media-icon name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs-WpY815nZ-0-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </div>
  <media-seek-button seconds="-10" class="media-button media-seek-button audio-seek-button" id="vjs-WpY815nZ-0-2-trigger">
  <div class="media-seek-button-content">
  <media-icon name="seek" class="media-button-icon media-seek-button-backward-icon">
  </media-icon>
  <span class="media-seek-button-label media-seek-button-backward-label">10</span>
  </div>
  </media-seek-button>
  <media-tooltip trigger="vjs-WpY815nZ-0-2-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-seek-button seconds="10" class="media-button media-seek-button audio-seek-button" id="vjs-WpY815nZ-0-3-trigger">
  <div class="media-seek-button-content">
  <media-icon name="seek" class="media-button-icon">
  </media-icon>
  <span class="media-seek-button-label media-seek-button-forward-label">10</span>
  </div>
  </media-seek-button>
  <media-tooltip trigger="vjs-WpY815nZ-0-3-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </media-controls-group>
  <media-controls-group class="audio-time-slider-group">
  <media-time class="media-time-value" type="current">
  </media-time>
  <media-time-slider class="media-slider audio-time-slider">
  <media-slider-track class="media-slider-track">
  <media-slider-buffer class="media-slider-buffer">
  </media-slider-buffer>
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb audio-time-slider-thumb">
  </media-slider-thumb>
  <media-slider-preview class="media-slider-preview" overflow="visible">
  <div class="media-slider-preview-content media-popup-surface media-tooltip audio-time-slider-preview-content">
  <media-slider-value class="audio-time-slider-value" type="pointer">
  </media-slider-value>
  </div>
  </media-slider-preview>
  </media-time-slider>
  <media-time class="media-time-toggle audio-time-remaining-value" type="remaining" toggle>
  </media-time>
  </media-controls-group>
  <media-controls-group class="audio-controls-end">
  <media-playback-rate-button commandfor="vjs-Af50YASX-0-popup" class="media-button media-playback-rate-button" id="vjs-WpY815nZ-0-4-trigger">
  </media-playback-rate-button>
  <media-tooltip trigger="vjs-WpY815nZ-0-4-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-menu side="top" align="center" boundary="viewport" class="media-popup media-popup-surface media-menu-popup audio-settings-menu-popup" id="vjs-Af50YASX-0-popup">
  <media-menu-content class="media-menu-content">
  <media-playback-rate-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-playback-rate-radio-group>
  </media-menu-content>
  </media-menu>
  <media-mute-button commandfor="vjs-AvmeDXru-0-popup" class="media-button media-mute-button" id="vjs-WpY815nZ-0-5-trigger">
  <media-icon name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs-WpY815nZ-0-5-trigger" delay="0" disabled sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="top" boundary="viewport" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs-AvmeDXru-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="vertical">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowRight" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowLeft" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="l" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="j" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="0-9" action="seekToPercent">
  </media-hotkey>
  <media-hotkey keys="Home" action="seekToPercent" value="0">
  </media-hotkey>
  <media-hotkey keys="End" action="seekToPercent" value="100">
  </media-hotkey>
  <media-hotkey keys="&gt;" action="speedUp">
  </media-hotkey>
  <media-hotkey keys="&lt;" action="speedDown">
  </media-hotkey>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  </media-container>
</audio-player>

Minimal video skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/video-minimal.js"></script>
<link rel="stylesheet" href="./player.css">

<video-player poster="https://image.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/thumbnail.webp">
  <media-container class="media-skin media-container video-skin" data-theme="minimal" data-preset="video">
  <slot>
  </slot>
  <media-poster class="media-poster">
  <img alt="" decoding="async" />
  </media-poster>
  <media-buffering-indicator class="media-buffering-indicator">
  <media-icon family="minimal" name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-error-dialog class="media-dialog-root">
  <media-dialog-backdrop class="media-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="media-dialog-popup">
  <div class="media-dialog-content">
  <media-dialog-title class="media-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="media-dialog-description">
  </media-dialog-description>
  </div>
  <div class="media-dialog-actions">
  <media-dialog-close class="media-button media-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls>
  <media-controls-backdrop class="video-controls-backdrop">
  </media-controls-backdrop>
  <media-controls-content class="video-controls video-controls-content video-controls-wrap">
  <media-tooltip-group>
  <media-controls-group class="video-controls-start">
  <media-play-button class="media-button media-play-button" id="vjs-ov-hMuXH-0-trigger">
  <media-icon family="minimal" name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon family="minimal" name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon family="minimal" name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-mute-button commandfor="vjs-YSh1x6Ch-0-popup" class="media-button media-mute-button" id="vjs-ov-hMuXH-0-2-trigger">
  <media-icon family="minimal" name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-2-trigger" delay="0" sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="right" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs-YSh1x6Ch-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="horizontal">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  </media-controls-group>
  <media-controls-group class="video-time-slider-group">
  <media-time-group class="media-time-group">
  <media-time class="media-time-toggle media-time-current-value" type="current" toggle>
  </media-time>
  <media-time-separator class="media-time-separator">
  </media-time-separator>
  <media-time class="media-time-duration-value" type="duration">
  </media-time>
  </media-time-group>
  <media-time-slider class="media-slider media-time-slider">
  <media-time-slider-chapters class="media-time-slider-chapters">
  <template>
  <div class="media-time-slider-chapter">
  <media-slider-track class="media-slider-track media-time-slider-chapter-track">
  <media-slider-buffer class="media-slider-buffer">
  </media-slider-buffer>
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  </div>
  </template>
  </media-time-slider-chapters>
  <media-slider-thumb class="media-slider-thumb media-time-slider-thumb">
  </media-slider-thumb>
  <media-slider-preview class="media-slider-preview" overflow="clamp">
  <div class="media-slider-preview-content media-popup-surface media-slider-thumbnail">
  <media-slider-thumbnail class="media-slider-thumbnail-image">
  </media-slider-thumbnail>
  <media-icon family="minimal" name="spinner" class="media-slider-thumbnail-spinner-icon">
  </media-icon>
  </div>
  <div class="media-slider-preview-content media-time-slider-preview-content">
  <media-time-slider-chapter-title class="media-time-slider-chapter-title">
  </media-time-slider-chapter-title>
  <media-slider-value class="media-time-slider-value" type="pointer">
  </media-slider-value>
  </div>
  </media-slider-preview>
  </media-time-slider>
  </media-controls-group>
  <media-controls-group class="video-controls-end">
  <media-captions-button class="media-button media-captions-button" id="vjs-ov-hMuXH-0-3-trigger">
  <media-icon family="minimal" name="captions-off" class="media-button-icon media-captions-button-off-icon">
  </media-icon>
  <media-icon family="minimal" name="captions-on" class="media-button-icon media-captions-button-on-icon">
  </media-icon>
  </media-captions-button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-3-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <button commandfor="vjs-rWfNHqIH-0-popup" class="media-button media-settings-menu-trigger" id="vjs-ov-hMuXH-0-4-trigger">
  <media-icon family="minimal" name="gear" class="media-button-icon media-settings-menu-trigger-icon">
  </media-icon>
  <media-text class="media-settings-menu-trigger-label" token="menu.settings">Settings</media-text>
  </button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-4-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-text token="menu.settings">Settings</media-text>
  </media-tooltip>
  <media-menu side="top" align="center" class="media-popup media-popup-surface media-menu-popup media-menu-resizable-popup" id="vjs-rWfNHqIH-0-popup">
  <media-menu-content class="media-menu-content">
  <media-menu-item commandfor="vjs-xJ2aGXvS-0-content" class="media-menu-trigger-item">
  <media-icon family="minimal" name="switches" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.quality">Quality</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon family="minimal" name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-xJ2aGXvS-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon family="minimal" name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.quality">Quality</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-quality-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span>
  <span data-part="label">
  </span>
  <sup data-part="tier" class="media-menu-tier">
  </sup>
  </span>
  <span data-part="badge" class="media-menu-badge">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon family="minimal" name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-quality-radio-group>
  </media-menu-content>
  <media-menu-item commandfor="vjs-8KDWGfn7-0-content" class="media-menu-trigger-item">
  <media-icon family="minimal" name="speech" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.audio">Audio</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon family="minimal" name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-8KDWGfn7-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon family="minimal" name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.audio">Audio</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-audio-track-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon family="minimal" name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-audio-track-radio-group>
  </media-menu-content>
  <media-menu-item commandfor="vjs-XISChfP1-0-content" class="media-menu-trigger-item">
  <media-icon family="minimal" name="speed" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.speed">Speed</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon family="minimal" name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-XISChfP1-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon family="minimal" name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.speed">Speed</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-playback-rate-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon family="minimal" name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-playback-rate-radio-group>
  </media-menu-content>
  <media-menu-item commandfor="vjs-II02rIHX-0-content" class="media-menu-trigger-item">
  <media-icon family="minimal" name="captions-off" class="media-menu-trigger-item-icon">
  </media-icon>
  <media-text token="menu.captions">Captions</media-text>
  <span class="media-menu-hint">
  <span data-part="value" class="media-menu-hint-label">
  </span>
  <media-icon family="minimal" name="chevron" class="media-menu-forward-chevron">
  </media-icon>
  </span>
  </media-menu-item>
  <media-menu-content class="media-menu-content" id="vjs-II02rIHX-0-content">
  <media-menu-item class="media-menu-back-item">
  <media-icon family="minimal" name="chevron" class="media-menu-back-chevron">
  </media-icon>
  <media-text token="menu.captions">Captions</media-text>
  </media-menu-item>
  <media-menu-separator class="media-menu-separator">
  </media-menu-separator>
  <media-captions-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon family="minimal" name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-captions-radio-group>
  </media-menu-content>
  </media-menu-content>
  </media-menu>
  <media-controls-group class="video-controls-trailing">
  <media-cast-button class="media-button media-cast-button" id="vjs-ov-hMuXH-0-5-trigger">
  <media-icon family="minimal" name="cast-enter" class="media-button-icon media-cast-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="cast-exit" class="media-button-icon media-cast-button-exit-icon">
  </media-icon>
  </media-cast-button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-5-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-airplay-button class="media-button media-airplay-button" id="vjs-ov-hMuXH-0-6-trigger">
  <media-icon family="minimal" name="airplay-enter" class="media-button-icon media-airplay-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="airplay-exit" class="media-button-icon media-airplay-button-exit-icon">
  </media-icon>
  </media-airplay-button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-6-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-pip-button class="media-button media-pip-button" id="vjs-ov-hMuXH-0-7-trigger">
  <media-icon family="minimal" name="pip-enter" class="media-button-icon media-pip-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="pip-exit" class="media-button-icon media-pip-button-exit-icon">
  </media-icon>
  </media-pip-button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-7-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-fullscreen-button class="media-button media-fullscreen-button" id="vjs-ov-hMuXH-0-8-trigger">
  <media-icon family="minimal" name="fullscreen-enter" class="media-button-icon media-fullscreen-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="fullscreen-exit" class="media-button-icon media-fullscreen-button-exit-icon">
  </media-icon>
  </media-fullscreen-button>
  <media-tooltip trigger="vjs-ov-hMuXH-0-8-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </media-controls-group>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowRight" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowLeft" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="l" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="j" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="0-9" action="seekToPercent">
  </media-hotkey>
  <media-hotkey keys="Home" action="seekToPercent" value="0">
  </media-hotkey>
  <media-hotkey keys="End" action="seekToPercent" value="100">
  </media-hotkey>
  <media-hotkey keys="&gt;" action="speedUp">
  </media-hotkey>
  <media-hotkey keys="&lt;" action="speedDown">
  </media-hotkey>
  <media-hotkey keys="f" action="toggleFullscreen">
  </media-hotkey>
  <media-hotkey keys="c" action="toggleSubtitles">
  </media-hotkey>
  <media-hotkey keys="i" action="togglePictureInPicture">
  </media-hotkey>
  <media-gesture type="tap" action="togglePaused" pointer="mouse" region="center">
  </media-gesture>
  <media-gesture type="tap" action="toggleControls" pointer="touch">
  </media-gesture>
  <media-gesture type="doubletap" action="seekStep" region="left">
  </media-gesture>
  <media-gesture type="doubletap" action="toggleFullscreen" region="center">
  </media-gesture>
  <media-gesture type="doubletap" action="seekStep" region="right">
  </media-gesture>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  <div class="video-status-indicators">
  <media-volume-indicator class="media-indicator media-volume-indicator">
  <media-volume-indicator-fill class="media-indicator-content media-volume-indicator-fill">
  <media-icon family="minimal" name="volume-high" class="media-volume-indicator-high-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-low" class="media-volume-indicator-low-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-off" class="media-volume-indicator-off-icon">
  </media-icon>
  <media-volume-indicator-value class="media-volume-indicator-value">
  </media-volume-indicator-value>
  </media-volume-indicator-fill>
  </media-volume-indicator>
  <media-status-indicator actions="toggleSubtitles,toggleFullscreen,togglePictureInPicture" class="media-indicator media-status-indicator">
  <div class="media-indicator-content media-status-indicator-content">
  <media-icon family="minimal" name="captions-on" class="media-status-indicator-captions-on-icon">
  </media-icon>
  <media-icon family="minimal" name="captions-off" class="media-status-indicator-captions-off-icon">
  </media-icon>
  <media-icon family="minimal" name="fullscreen-enter" class="media-status-indicator-fullscreen-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="fullscreen-exit" class="media-status-indicator-fullscreen-exit-icon">
  </media-icon>
  <media-icon family="minimal" name="pip-enter" class="media-status-indicator-pip-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="pip-exit" class="media-status-indicator-pip-exit-icon">
  </media-icon>
  <media-status-indicator-value class="media-status-indicator-value">
  </media-status-indicator-value>
  </div>
  </media-status-indicator>
  <media-seek-indicator class="media-seek-indicator">
  <media-icon family="minimal" name="chevron" class="media-seek-indicator-icon">
  </media-icon>
  <media-seek-indicator-value class="media-seek-indicator-value">
  </media-seek-indicator-value>
  </media-seek-indicator>
  <media-status-indicator actions="togglePaused" class="media-playback-status-indicator">
  <media-icon family="minimal" name="play" class="media-playback-status-indicator-play-icon">
  </media-icon>
  <media-icon family="minimal" name="pause" class="media-playback-status-indicator-pause-icon">
  </media-icon>
  </media-status-indicator>
  </div>
  </media-container>
</video-player>

Minimal audio skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/audio-minimal.js"></script>
<link rel="stylesheet" href="./player.css">

<audio-player>
  <media-container class="media-skin media-container audio-skin" data-theme="minimal" data-preset="audio">
  <slot>
  </slot>
  <media-error-dialog class="audio-dialog-root">
  <media-dialog-backdrop class="audio-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="audio-dialog-popup">
  <div class="audio-dialog-content">
  <media-dialog-title class="audio-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="audio-dialog-description">
  </media-dialog-description>
  </div>
  <div class="audio-dialog-actions">
  <media-dialog-close class="media-button audio-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls visibility="always">
  <media-controls-content class="audio-controls audio-controls-content">
  <media-tooltip-group>
  <media-controls-group class="audio-controls-start">
  <div class="audio-play-button">
  <media-buffering-indicator class="media-buffering-indicator audio-play-button-buffering-indicator">
  <media-icon family="minimal" name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-play-button class="media-button media-play-button" id="vjs-Kt-6Zyuc-0-trigger">
  <media-icon family="minimal" name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon family="minimal" name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon family="minimal" name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs-Kt-6Zyuc-0-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </div>
  <media-seek-button seconds="-10" class="media-button media-seek-button" id="vjs-Kt-6Zyuc-0-2-trigger">
  <div class="media-seek-button-content">
  <media-icon family="minimal" name="seek" class="media-button-icon media-seek-button-backward-icon">
  </media-icon>
  <span class="media-seek-button-label media-seek-button-backward-label">10</span>
  </div>
  </media-seek-button>
  <media-tooltip trigger="vjs-Kt-6Zyuc-0-2-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-seek-button seconds="10" class="media-button media-seek-button" id="vjs-Kt-6Zyuc-0-3-trigger">
  <div class="media-seek-button-content">
  <media-icon family="minimal" name="seek" class="media-button-icon">
  </media-icon>
  <span class="media-seek-button-label media-seek-button-forward-label">10</span>
  </div>
  </media-seek-button>
  <media-tooltip trigger="vjs-Kt-6Zyuc-0-3-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </media-controls-group>
  <media-controls-group class="audio-time-slider-group">
  <media-time-group class="media-time-group">
  <media-time class="media-time-toggle media-time-current-value" type="current" toggle>
  </media-time>
  <media-time-separator class="media-time-separator">
  </media-time-separator>
  <media-time class="media-time-duration-value" type="duration">
  </media-time>
  </media-time-group>
  <media-time-slider class="media-slider audio-time-slider">
  <media-slider-track class="media-slider-track">
  <media-slider-buffer class="media-slider-buffer">
  </media-slider-buffer>
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb audio-time-slider-thumb">
  </media-slider-thumb>
  <media-slider-preview class="media-slider-preview" overflow="clamp">
  <div class="media-slider-preview-content media-popup-surface media-tooltip audio-time-slider-preview-content">
  <media-slider-value class="audio-time-slider-value" type="pointer">
  </media-slider-value>
  </div>
  </media-slider-preview>
  </media-time-slider>
  </media-controls-group>
  <media-controls-group class="audio-controls-end">
  <media-mute-button commandfor="vjs-YAfWw7lI-0-popup" class="media-button media-mute-button" id="vjs-Kt-6Zyuc-0-4-trigger">
  <media-icon family="minimal" name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs-Kt-6Zyuc-0-4-trigger" delay="0" sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="left" boundary="viewport" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs-YAfWw7lI-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="horizontal">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  <media-playback-rate-button commandfor="vjs-CwBiPD5b-0-popup" class="media-button media-playback-rate-button" id="vjs-Kt-6Zyuc-0-5-trigger">
  </media-playback-rate-button>
  <media-tooltip trigger="vjs-Kt-6Zyuc-0-5-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-menu side="top" align="center" boundary="viewport" class="media-popup media-popup-surface media-menu-popup audio-settings-menu-popup" id="vjs-CwBiPD5b-0-popup">
  <media-menu-content class="media-menu-content">
  <media-playback-rate-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon family="minimal" name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-playback-rate-radio-group>
  </media-menu-content>
  </media-menu>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowRight" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowLeft" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="l" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="j" action="seekStep">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="0-9" action="seekToPercent">
  </media-hotkey>
  <media-hotkey keys="Home" action="seekToPercent" value="0">
  </media-hotkey>
  <media-hotkey keys="End" action="seekToPercent" value="100">
  </media-hotkey>
  <media-hotkey keys="&gt;" action="speedUp">
  </media-hotkey>
  <media-hotkey keys="&lt;" action="speedDown">
  </media-hotkey>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  </media-container>
</audio-player>

Default live video skin

The live skins swap the duration and current-time displays for a Live button. They build on the live presets, so the player reports live-edge state.

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/live-video.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/media/hlsjs-video.js"></script>
<link rel="stylesheet" href="./player.css">

<live-video-player poster="https://image.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM/thumbnail.webp">
  <media-container class="media-skin media-container video-skin" data-theme="default" data-preset="live-video">
  <slot>
  </slot>
  <media-poster class="media-poster">
  <img alt="" decoding="async" />
  </media-poster>
  <media-buffering-indicator class="media-buffering-indicator">
  <media-icon name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-error-dialog class="media-dialog-root">
  <media-dialog-backdrop class="media-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="media-dialog-popup">
  <div class="media-dialog-content">
  <media-dialog-title class="media-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="media-dialog-description">
  </media-dialog-description>
  </div>
  <div class="media-dialog-actions">
  <media-dialog-close class="media-button media-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls>
  <media-controls-backdrop class="video-controls-backdrop">
  </media-controls-backdrop>
  <media-controls-content class="video-controls video-controls-content video-controls-spaced">
  <media-tooltip-group>
  <media-controls-group class="video-controls-primary video-controls-spaced">
  <media-play-button class="media-button media-play-button" id="vjs-SLh7frqo-0-trigger">
  <media-icon name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs-SLh7frqo-0-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-live-button class="media-button media-live-button">
  </media-live-button>
  <div aria-hidden="true" class="video-controls-spacer">
  </div>
  <media-mute-button commandfor="vjs-tVq_QLCb-0-popup" class="media-button media-mute-button" id="vjs-SLh7frqo-0-2-trigger">
  <media-icon name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs-SLh7frqo-0-2-trigger" delay="0" disabled sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs-tVq_QLCb-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="vertical">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  <media-captions-button commandfor="vjs-T0xt0Wtl-0-popup" class="media-button media-captions-button video-controls-captions-menu" id="vjs-SLh7frqo-0-3-trigger">
  <media-icon name="captions-off" class="media-button-icon media-captions-button-off-icon">
  </media-icon>
  <media-icon name="captions-on" class="media-button-icon media-captions-button-on-icon">
  </media-icon>
  </media-captions-button>
  <media-tooltip trigger="vjs-SLh7frqo-0-3-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-menu side="top" align="center" boundary="viewport" class="media-popup media-popup-surface media-menu-popup" id="vjs-T0xt0Wtl-0-popup">
  <media-menu-content class="media-menu-content">
  <media-captions-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-captions-radio-group>
  </media-menu-content>
  </media-menu>
  <media-cast-button class="media-button media-cast-button" id="vjs-SLh7frqo-0-4-trigger">
  <media-icon name="cast-enter" class="media-button-icon media-cast-button-enter-icon">
  </media-icon>
  <media-icon name="cast-exit" class="media-button-icon media-cast-button-exit-icon">
  </media-icon>
  </media-cast-button>
  <media-tooltip trigger="vjs-SLh7frqo-0-4-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-airplay-button class="media-button media-airplay-button" id="vjs-SLh7frqo-0-5-trigger">
  <media-icon name="airplay-enter" class="media-button-icon media-airplay-button-enter-icon">
  </media-icon>
  <media-icon name="airplay-exit" class="media-button-icon media-airplay-button-exit-icon">
  </media-icon>
  </media-airplay-button>
  <media-tooltip trigger="vjs-SLh7frqo-0-5-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-pip-button class="media-button media-pip-button" id="vjs-SLh7frqo-0-6-trigger">
  <media-icon name="pip-enter" class="media-button-icon media-pip-button-enter-icon">
  </media-icon>
  <media-icon name="pip-exit" class="media-button-icon media-pip-button-exit-icon">
  </media-icon>
  </media-pip-button>
  <media-tooltip trigger="vjs-SLh7frqo-0-6-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-fullscreen-button class="media-button media-fullscreen-button" id="vjs-SLh7frqo-0-7-trigger">
  <media-icon name="fullscreen-enter" class="media-button-icon media-fullscreen-button-enter-icon">
  </media-icon>
  <media-icon name="fullscreen-exit" class="media-button-icon media-fullscreen-button-exit-icon">
  </media-icon>
  </media-fullscreen-button>
  <media-tooltip trigger="vjs-SLh7frqo-0-7-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="f" action="toggleFullscreen">
  </media-hotkey>
  <media-hotkey keys="c" action="toggleSubtitles">
  </media-hotkey>
  <media-hotkey keys="i" action="togglePictureInPicture">
  </media-hotkey>
  <media-gesture type="tap" action="togglePaused" pointer="mouse" region="center">
  </media-gesture>
  <media-gesture type="tap" action="toggleControls" pointer="touch">
  </media-gesture>
  <media-gesture type="doubletap" action="toggleFullscreen" region="center">
  </media-gesture>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  <div class="video-status-indicators">
  <media-volume-indicator class="media-indicator media-volume-indicator">
  <media-volume-indicator-fill class="media-indicator-content media-volume-indicator-fill">
  <media-icon name="volume-high" class="media-volume-indicator-high-icon">
  </media-icon>
  <media-icon name="volume-low" class="media-volume-indicator-low-icon">
  </media-icon>
  <media-icon name="volume-off" class="media-volume-indicator-off-icon">
  </media-icon>
  <media-volume-indicator-value class="media-volume-indicator-value">
  </media-volume-indicator-value>
  </media-volume-indicator-fill>
  </media-volume-indicator>
  <media-status-indicator actions="toggleSubtitles,toggleFullscreen,togglePictureInPicture" class="media-indicator media-status-indicator">
  <div class="media-indicator-content media-status-indicator-content">
  <media-icon name="captions-on" class="media-status-indicator-captions-on-icon">
  </media-icon>
  <media-icon name="captions-off" class="media-status-indicator-captions-off-icon">
  </media-icon>
  <media-icon name="fullscreen-enter" class="media-status-indicator-fullscreen-enter-icon">
  </media-icon>
  <media-icon name="fullscreen-exit" class="media-status-indicator-fullscreen-exit-icon">
  </media-icon>
  <media-icon name="pip-enter" class="media-status-indicator-pip-enter-icon">
  </media-icon>
  <media-icon name="pip-exit" class="media-status-indicator-pip-exit-icon">
  </media-icon>
  <media-status-indicator-value class="media-status-indicator-value">
  </media-status-indicator-value>
  </div>
  </media-status-indicator>
  <media-status-indicator actions="togglePaused" class="media-playback-status-indicator">
  <media-icon name="play" class="media-playback-status-indicator-play-icon">
  </media-icon>
  <media-icon name="pause" class="media-playback-status-indicator-pause-icon">
  </media-icon>
  </media-status-indicator>
  </div>
  </media-container>
</live-video-player>

Default live audio skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/live-audio.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/media/mux-audio.js"></script>
<link rel="stylesheet" href="./player.css">

<live-audio-player>
  <media-container class="media-skin media-container audio-skin" data-theme="default" data-preset="live-audio">
  <slot>
  </slot>
  <media-error-dialog class="audio-dialog-root">
  <media-dialog-backdrop class="audio-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="audio-dialog-popup">
  <div class="audio-dialog-content">
  <media-dialog-title class="audio-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="audio-dialog-description">
  </media-dialog-description>
  </div>
  <div class="audio-dialog-actions">
  <media-dialog-close class="media-button audio-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls visibility="always">
  <media-controls-content class="audio-controls audio-controls-content">
  <media-tooltip-group>
  <media-controls-group class="audio-controls-start">
  <div class="audio-play-button">
  <media-buffering-indicator class="media-buffering-indicator audio-play-button-buffering-indicator">
  <media-icon name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-play-button class="media-button media-play-button" id="vjs-MTfaG4lw-0-trigger">
  <media-icon name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs-MTfaG4lw-0-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </div>
  <media-live-button class="media-button media-live-button">
  </media-live-button>
  </media-controls-group>
  <div aria-hidden="true" class="audio-controls-spacer">
  </div>
  <media-controls-group class="audio-controls-end">
  <media-mute-button commandfor="vjs-vZE53B_T-0-popup" class="media-button media-mute-button" id="vjs-MTfaG4lw-0-2-trigger">
  <media-icon name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs-MTfaG4lw-0-2-trigger" delay="0" disabled sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="top" boundary="viewport" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs-vZE53B_T-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="vertical">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  </media-container>
</live-audio-player>

Minimal live video skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/live-video-minimal.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/media/hlsjs-video.js"></script>
<link rel="stylesheet" href="./player.css">

<live-video-player poster="https://image.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM/thumbnail.webp">
  <media-container class="media-skin media-container video-skin" data-theme="minimal" data-preset="live-video">
  <slot>
  </slot>
  <media-poster class="media-poster">
  <img alt="" decoding="async" />
  </media-poster>
  <media-buffering-indicator class="media-buffering-indicator">
  <media-icon family="minimal" name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-error-dialog class="media-dialog-root">
  <media-dialog-backdrop class="media-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="media-dialog-popup">
  <div class="media-dialog-content">
  <media-dialog-title class="media-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="media-dialog-description">
  </media-dialog-description>
  </div>
  <div class="media-dialog-actions">
  <media-dialog-close class="media-button media-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls>
  <media-controls-backdrop class="video-controls-backdrop">
  </media-controls-backdrop>
  <media-controls-content class="video-controls video-controls-content">
  <media-tooltip-group>
  <media-controls-group class="video-controls-start">
  <media-play-button class="media-button media-play-button" id="vjs-YOevKTMk-0-trigger">
  <media-icon family="minimal" name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon family="minimal" name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon family="minimal" name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs-YOevKTMk-0-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-live-button class="media-button media-live-button">
  </media-live-button>
  <media-mute-button commandfor="vjs-2aI8KUId-0-popup" class="media-button media-mute-button" id="vjs-YOevKTMk-0-2-trigger">
  <media-icon family="minimal" name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs-YOevKTMk-0-2-trigger" delay="0" sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="right" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs-2aI8KUId-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="horizontal">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  </media-controls-group>
  <div aria-hidden="true" class="video-controls-spacer">
  </div>
  <media-controls-group class="video-controls-end">
  <media-captions-button commandfor="vjs-Fw5h0ujT-0-popup" class="media-button media-captions-button" id="vjs-YOevKTMk-0-3-trigger">
  <media-icon family="minimal" name="captions-off" class="media-button-icon media-captions-button-off-icon">
  </media-icon>
  <media-icon family="minimal" name="captions-on" class="media-button-icon media-captions-button-on-icon">
  </media-icon>
  </media-captions-button>
  <media-tooltip trigger="vjs-YOevKTMk-0-3-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-menu side="top" align="center" boundary="viewport" class="media-popup media-popup-surface media-menu-popup" id="vjs-Fw5h0ujT-0-popup">
  <media-menu-content class="media-menu-content">
  <media-captions-radio-group class="media-menu-radio-group">
  <template>
  <media-menu-radio-item class="media-menu-radio-item">
  <span data-part="label">
  </span>
  <media-menu-item-indicator force-mount class="media-menu-item-indicator">
  <media-icon family="minimal" name="check" class="media-menu-radio-item-icon">
  </media-icon>
  </media-menu-item-indicator>
  </media-menu-radio-item>
  </template>
  </media-captions-radio-group>
  </media-menu-content>
  </media-menu>
  <media-cast-button class="media-button media-cast-button" id="vjs-YOevKTMk-0-4-trigger">
  <media-icon family="minimal" name="cast-enter" class="media-button-icon media-cast-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="cast-exit" class="media-button-icon media-cast-button-exit-icon">
  </media-icon>
  </media-cast-button>
  <media-tooltip trigger="vjs-YOevKTMk-0-4-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-airplay-button class="media-button media-airplay-button" id="vjs-YOevKTMk-0-5-trigger">
  <media-icon family="minimal" name="airplay-enter" class="media-button-icon media-airplay-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="airplay-exit" class="media-button-icon media-airplay-button-exit-icon">
  </media-icon>
  </media-airplay-button>
  <media-tooltip trigger="vjs-YOevKTMk-0-5-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-pip-button class="media-button media-pip-button" id="vjs-YOevKTMk-0-6-trigger">
  <media-icon family="minimal" name="pip-enter" class="media-button-icon media-pip-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="pip-exit" class="media-button-icon media-pip-button-exit-icon">
  </media-icon>
  </media-pip-button>
  <media-tooltip trigger="vjs-YOevKTMk-0-6-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-fullscreen-button class="media-button media-fullscreen-button" id="vjs-YOevKTMk-0-7-trigger">
  <media-icon family="minimal" name="fullscreen-enter" class="media-button-icon media-fullscreen-button-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="fullscreen-exit" class="media-button-icon media-fullscreen-button-exit-icon">
  </media-icon>
  </media-fullscreen-button>
  <media-tooltip trigger="vjs-YOevKTMk-0-7-trigger" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="f" action="toggleFullscreen">
  </media-hotkey>
  <media-hotkey keys="c" action="toggleSubtitles">
  </media-hotkey>
  <media-hotkey keys="i" action="togglePictureInPicture">
  </media-hotkey>
  <media-gesture type="tap" action="togglePaused" pointer="mouse" region="center">
  </media-gesture>
  <media-gesture type="tap" action="toggleControls" pointer="touch">
  </media-gesture>
  <media-gesture type="doubletap" action="toggleFullscreen" region="center">
  </media-gesture>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  <div class="video-status-indicators">
  <media-volume-indicator class="media-indicator media-volume-indicator">
  <media-volume-indicator-fill class="media-indicator-content media-volume-indicator-fill">
  <media-icon family="minimal" name="volume-high" class="media-volume-indicator-high-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-low" class="media-volume-indicator-low-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-off" class="media-volume-indicator-off-icon">
  </media-icon>
  <media-volume-indicator-value class="media-volume-indicator-value">
  </media-volume-indicator-value>
  </media-volume-indicator-fill>
  </media-volume-indicator>
  <media-status-indicator actions="toggleSubtitles,toggleFullscreen,togglePictureInPicture" class="media-indicator media-status-indicator">
  <div class="media-indicator-content media-status-indicator-content">
  <media-icon family="minimal" name="captions-on" class="media-status-indicator-captions-on-icon">
  </media-icon>
  <media-icon family="minimal" name="captions-off" class="media-status-indicator-captions-off-icon">
  </media-icon>
  <media-icon family="minimal" name="fullscreen-enter" class="media-status-indicator-fullscreen-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="fullscreen-exit" class="media-status-indicator-fullscreen-exit-icon">
  </media-icon>
  <media-icon family="minimal" name="pip-enter" class="media-status-indicator-pip-enter-icon">
  </media-icon>
  <media-icon family="minimal" name="pip-exit" class="media-status-indicator-pip-exit-icon">
  </media-icon>
  <media-status-indicator-value class="media-status-indicator-value">
  </media-status-indicator-value>
  </div>
  </media-status-indicator>
  <media-status-indicator actions="togglePaused" class="media-playback-status-indicator">
  <media-icon family="minimal" name="play" class="media-playback-status-indicator-play-icon">
  </media-icon>
  <media-icon family="minimal" name="pause" class="media-playback-status-indicator-pause-icon">
  </media-icon>
  </media-status-indicator>
  </div>
  </media-container>
</live-video-player>

Minimal live audio skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/live-audio-minimal.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/cdn@10.0.0-beta.32/media/mux-audio.js"></script>
<link rel="stylesheet" href="./player.css">

<live-audio-player>
  <media-container class="media-skin media-container audio-skin" data-theme="minimal" data-preset="live-audio">
  <slot>
  </slot>
  <media-error-dialog class="audio-dialog-root">
  <media-dialog-backdrop class="audio-dialog-backdrop">
  </media-dialog-backdrop>
  <media-dialog-popup class="audio-dialog-popup">
  <div class="audio-dialog-content">
  <media-dialog-title class="audio-dialog-title">
  </media-dialog-title>
  <media-dialog-description class="audio-dialog-description">
  </media-dialog-description>
  </div>
  <div class="audio-dialog-actions">
  <media-dialog-close class="media-button audio-dialog-close">
  </media-dialog-close>
  </div>
  </media-dialog-popup>
  </media-error-dialog>
  <media-controls visibility="always">
  <media-controls-content class="audio-controls audio-controls-content">
  <media-tooltip-group>
  <media-controls-group class="audio-controls-start">
  <div class="audio-play-button">
  <media-buffering-indicator class="media-buffering-indicator audio-play-button-buffering-indicator">
  <media-icon family="minimal" name="spinner" class="media-buffering-indicator-spinner-icon">
  </media-icon>
  </media-buffering-indicator>
  <media-play-button class="media-button media-play-button" id="vjs--SjoeXZe-0-trigger">
  <media-icon family="minimal" name="restart" class="media-button-icon media-play-button-restart-icon">
  </media-icon>
  <media-icon family="minimal" name="play" class="media-button-icon media-play-button-play-icon">
  </media-icon>
  <media-icon family="minimal" name="pause" class="media-button-icon media-play-button-pause-icon">
  </media-icon>
  </media-play-button>
  <media-tooltip trigger="vjs--SjoeXZe-0-trigger" boundary="viewport" side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  </div>
  <media-live-button class="media-button media-live-button">
  </media-live-button>
  </media-controls-group>
  <div aria-hidden="true" class="audio-controls-spacer">
  </div>
  <media-controls-group class="audio-controls-end">
  <media-mute-button commandfor="vjs--RwTkbW2-0-popup" class="media-button media-mute-button" id="vjs--SjoeXZe-0-2-trigger">
  <media-icon family="minimal" name="volume-off" class="media-button-icon media-mute-button-off-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-low" class="media-button-icon media-mute-button-low-icon">
  </media-icon>
  <media-icon family="minimal" name="volume-high" class="media-button-icon media-mute-button-high-icon">
  </media-icon>
  </media-mute-button>
  <media-tooltip trigger="vjs--SjoeXZe-0-2-trigger" delay="0" sticky side="top" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-tooltip">
  <media-tooltip-label>
  </media-tooltip-label>
  <media-tooltip-shortcut class="media-tooltip-shortcut">
  </media-tooltip-shortcut>
  </media-tooltip>
  <media-volume-popover open-on-hover delay="200" close-delay="100" side="left" boundary="viewport" class="media-popup media-popup-safe-area media-popup-transition media-popup-surface media-volume-popover" id="vjs--RwTkbW2-0-popup">
  <media-volume-slider class="media-slider media-volume-slider" thumb-alignment="edge" orientation="horizontal">
  <media-slider-track class="media-slider-track">
  <media-slider-fill class="media-slider-fill">
  </media-slider-fill>
  </media-slider-track>
  <media-slider-thumb class="media-slider-thumb media-volume-slider-thumb">
  </media-slider-thumb>
  </media-volume-slider>
  </media-volume-popover>
  </media-controls-group>
  </media-tooltip-group>
  </media-controls-content>
  </media-controls>
  <media-hotkey keys="Space" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="k" action="togglePaused">
  </media-hotkey>
  <media-hotkey keys="m" action="toggleMuted">
  </media-hotkey>
  <media-hotkey keys="ArrowUp" action="volumeStep">
  </media-hotkey>
  <media-hotkey keys="ArrowDown" action="volumeStep">
  </media-hotkey>
  <media-status-announcer class="media-status-announcer">
  </media-status-announcer>
  </media-container>
</live-audio-player>