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.

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/html@10.0.0-beta.31/cdn/video.js"></script>
<link rel="stylesheet" href="./player.css">

<video-player poster="https://image.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/thumbnail.webp">
  <media-container class="media-default-skin media-default-skin--video">
    <video src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4" playsinline></video>

    <media-poster>
      <img alt="" decoding="async" />
    </media-poster>

    <media-buffering-indicator class="media-buffering-indicator">
      <media-icon name="spinner" class="media-icon"></media-icon>
    </media-buffering-indicator>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog media-surface">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--primary"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <media-controls>
      <media-controls-backdrop class="media-overlay"></media-controls-backdrop>
      <media-controls-content class="media-surface media-controls media-controls--root">
      <media-tooltip-group>
        <div class="media-surface media-controls media-controls--primary">
          <div class="media-button-group">
            <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
              <media-icon name="restart" class="media-icon media-icon--restart"></media-icon>
              <media-icon name="play" class="media-icon media-icon--play"></media-icon>
              <media-icon name="pause" class="media-icon media-icon--pause"></media-icon>
            </media-play-button>
            <media-tooltip id="play-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-mute-button commandfor="video-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
              <media-icon name="volume-off" class="media-icon media-icon--volume-off"></media-icon>
              <media-icon name="volume-low" class="media-icon media-icon--volume-low"></media-icon>
              <media-icon name="volume-high" class="media-icon media-icon--volume-high"></media-icon>
            </media-mute-button>

            <media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-surface media-popover media-popover--volume">
              <media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge">
                <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-slider__thumb--persistent"></media-slider-thumb>
              </media-volume-slider>
            </media-popover>
          </div>

          <div class="media-time-controls">
            <media-time type="current" class="media-time"></media-time>
            <media-time-slider class="media-slider">
              <media-time-slider-chapters class="media-slider__chapters">
                <template>
                  <div class="media-slider__chapter">
                    <media-slider-track class="media-slider__track media-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-slider-thumb>

              <media-slider-preview overflow="visible" class="media-slider__preview">
                <div class="media-surface media-thumbnail media-slider__thumbnail">
                  <media-slider-thumbnail class="media-thumbnail__image"></media-slider-thumbnail>
                  <media-icon name="spinner" class="media-thumbnail__spinner media-icon"></media-icon>
                </div>
                <div class="media-slider__value">
                  <media-time-slider-chapter-title class="media-slider__chapter-title"></media-time-slider-chapter-title>
                  <media-slider-value type="pointer" class="media-time"></media-slider-value>
                </div>
              </media-slider-preview>
            </media-time-slider>
            <media-time toggle type="remaining" class="media-time"></media-time>
          </div>

          <div class="media-button-group">
            <media-captions-button commandfor="captions-tooltip" class="media-button media-button--subtle media-button--icon media-button--captions">
              <media-icon name="captions-off" class="media-icon media-icon--captions-off"></media-icon>
              <media-icon name="captions-on" class="media-icon media-icon--captions-on"></media-icon>
            </media-captions-button>
            <media-tooltip id="captions-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <button id="settings-trigger" commandfor="settings-menu" aria-labelledby="settings-label" class="media-button media-button--subtle media-button--icon media-button--settings">
              <media-icon name="gear" class="media-icon media-icon--settings"></media-icon>
              <media-text token="menu.settings" id="settings-label" class="media-sr-only">Settings</media-text>
            </button>
            <media-menu id="settings-menu" side="top" align="center" class="media-surface media-popover media-menu media-menu--settings">
              <media-menu-content class="media-menu__content">
                <media-menu-item commandfor="settings-quality-menu" class="media-menu__item media-menu__item--submenu">
                  <media-icon name="switches" class="media-icon"></media-icon>
                  <media-text token="menu.quality">Quality</media-text>
                  <span class="media-menu__hint">
                    <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                    <media-icon name="chevron" class="media-icon media-menu__chevron"></media-icon>
                  </span>
                </media-menu-item>
                <media-menu-item commandfor="settings-audio-menu" class="media-menu__item media-menu__item--submenu">
                  <media-icon name="speech" class="media-icon"></media-icon>
                  <media-text token="menu.audio">Audio</media-text>
                  <span class="media-menu__hint">
                    <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                    <media-icon name="chevron" class="media-icon media-menu__chevron"></media-icon>
                  </span>
                </media-menu-item>
                <media-menu-item commandfor="settings-speed-menu" class="media-menu__item media-menu__item--submenu">
                  <media-icon name="speed" class="media-icon"></media-icon>
                  <media-text token="menu.speed">Speed</media-text>
                  <span class="media-menu__hint">
                    <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                    <media-icon name="chevron" class="media-icon media-menu__chevron"></media-icon>
                  </span>
                </media-menu-item>
                <media-menu-item commandfor="settings-captions-menu" class="media-menu__item media-menu__item--submenu">
                  <media-icon name="captions-off" class="media-icon"></media-icon>
                  <media-text token="menu.captions">Captions</media-text>
                  <span class="media-menu__hint">
                    <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                    <media-icon name="chevron" class="media-icon media-menu__chevron"></media-icon>
                  </span>
                </media-menu-item>
              </media-menu-content>
              <media-menu-content id="settings-quality-menu" class="media-menu__panel">
                <media-menu-item class="media-menu__back">
                  <media-icon name="chevron" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                  <media-text token="menu.quality">Quality</media-text>
                </media-menu-item>
                <div class="media-menu__separator"></div>
                <media-quality-radio-group class="media-menu__group">
                  <template>
                    <media-menu-radio-item class="media-menu__item">
                      <span>
                        <bdi data-part="label" dir="auto"></bdi>
                        <sup data-part="tier" class="media-menu__tier"></sup>
                      </span>
                      <span data-part="badge" class="media-badge"></span>
                      <media-menu-item-indicator force-mount class="media-menu__indicator">
                        <media-icon name="check" class="media-icon"></media-icon>
                      </media-menu-item-indicator>
                    </media-menu-radio-item>
                  </template>
                </media-quality-radio-group>
              </media-menu-content>
              <media-menu-content id="settings-audio-menu" class="media-menu__panel">
                <media-menu-item class="media-menu__back">
                  <media-icon name="chevron" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                  <media-text token="menu.audio">Audio</media-text>
                </media-menu-item>
                <div class="media-menu__separator"></div>
                <media-audio-track-radio-group class="media-menu__group">
                  <template>
                    <media-menu-radio-item class="media-menu__item">
                      <bdi data-part="label" dir="auto"></bdi>
                      <media-menu-item-indicator force-mount class="media-menu__indicator">
                        <media-icon name="check" class="media-icon"></media-icon>
                      </media-menu-item-indicator>
                    </media-menu-radio-item>
                  </template>
                </media-audio-track-radio-group>
              </media-menu-content>
              <media-menu-content id="settings-speed-menu" class="media-menu__panel">
                <media-menu-item class="media-menu__back">
                  <media-icon name="chevron" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                  <media-text token="menu.speed">Speed</media-text>
                </media-menu-item>
                <div class="media-menu__separator"></div>
                <media-playback-rate-radio-group class="media-menu__group">
                  <template>
                    <media-menu-radio-item class="media-menu__item">
                      <bdi data-part="label" dir="auto"></bdi>
                      <media-menu-item-indicator force-mount class="media-menu__indicator">
                        <media-icon name="check" class="media-icon"></media-icon>
                      </media-menu-item-indicator>
                    </media-menu-radio-item>
                  </template>
                </media-playback-rate-radio-group>
              </media-menu-content>
              <media-menu-content id="settings-captions-menu" class="media-menu__panel">
                <media-menu-item class="media-menu__back">
                  <media-icon name="chevron" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                  <media-text token="menu.captions">Captions</media-text>
                </media-menu-item>
                <div class="media-menu__separator"></div>
                <media-captions-radio-group class="media-menu__group">
                  <template>
                    <media-menu-radio-item class="media-menu__item">
                      <bdi data-part="label" dir="auto"></bdi>
                      <media-menu-item-indicator force-mount class="media-menu__indicator">
                        <media-icon name="check" class="media-icon"></media-icon>
                      </media-menu-item-indicator>
                    </media-menu-radio-item>
                  </template>
                </media-captions-radio-group>
              </media-menu-content>
            </media-menu>
            <media-tooltip id="settings-tooltip" trigger="settings-trigger" side="top" class="media-surface media-tooltip">
              <media-text token="menu.settings">Settings</media-text>
            </media-tooltip>
          </div>
        </div>

        <div class="media-surface media-controls media-controls--secondary">
          <div class="media-button-group">
            <media-cast-button commandfor="cast-tooltip" class="media-button media-button--subtle media-button--icon media-button--cast">
              <media-icon name="cast-enter" class="media-icon media-icon--cast-enter"></media-icon>
              <media-icon name="cast-exit" class="media-icon media-icon--cast-exit"></media-icon>
            </media-cast-button>
            <media-tooltip id="cast-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-airplay-button commandfor="airplay-tooltip" class="media-button media-button--subtle media-button--icon media-button--airplay">
              <media-icon name="airplay-enter" class="media-icon media-icon--airplay-enter"></media-icon>
              <media-icon name="airplay-exit" class="media-icon media-icon--airplay-exit"></media-icon>
            </media-airplay-button>
            <media-tooltip id="airplay-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-pip-button commandfor="pip-tooltip" class="media-button media-button--subtle media-button--icon media-button--pip">
              <media-icon name="pip-enter" class="media-icon media-icon--pip-enter"></media-icon>
              <media-icon name="pip-exit" class="media-icon media-icon--pip-exit"></media-icon>
            </media-pip-button>
            <media-tooltip id="pip-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--subtle media-button--icon media-button--fullscreen">
              <media-icon name="fullscreen-enter" class="media-icon media-icon--fullscreen-enter"></media-icon>
              <media-icon name="fullscreen-exit" class="media-icon media-icon--fullscreen-exit"></media-icon>
            </media-fullscreen-button>
            <media-tooltip id="fullscreen-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>
          </div>
        </div>
      </media-tooltip-group>
      </media-controls-content>
    </media-controls>

    <!-- Hotkeys -->
    <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="f" action="toggleFullscreen"></media-hotkey>
    <media-hotkey keys="c" action="toggleSubtitles"></media-hotkey>
    <media-hotkey keys="i" action="togglePictureInPicture"></media-hotkey>
    <media-hotkey keys="ArrowRight" action="seekStep" value="5"></media-hotkey>
    <media-hotkey keys="ArrowLeft" action="seekStep" value="-5"></media-hotkey>
    <media-hotkey keys="l" action="seekStep" value="10"></media-hotkey>
    <media-hotkey keys="j" action="seekStep" value="-10"></media-hotkey>
    <media-hotkey keys="ArrowUp" action="volumeStep" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></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=">" action="speedUp"></media-hotkey>
    <media-hotkey keys="<" action="speedDown"></media-hotkey>

    <!-- Gestures -->
    <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" value="-10" region="left"></media-gesture>
    <media-gesture type="doubletap" action="toggleFullscreen" region="center"></media-gesture>
    <media-gesture type="doubletap" action="seekStep" value="10" region="right"></media-gesture>

    <!-- Input Indicators -->
    <media-status-announcer class="media-sr-only"></media-status-announcer>
    <div class="media-input-indicator-overlay">
      <media-volume-indicator hidden class="media-surface media-volume-indicator">
        <media-volume-indicator-fill class="media-volume-indicator__content">
          <media-icon name="volume-high" class="media-icon media-icon--volume-high"></media-icon>
          <media-icon name="volume-low" class="media-icon media-icon--volume-low"></media-icon>
          <media-icon name="volume-off" class="media-icon media-icon--volume-off"></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
        hidden
        actions="toggleSubtitles toggleFullscreen togglePictureInPicture"
        class="media-surface media-status-indicator media-status-indicator--state"
      >
        <div class="media-status-indicator__content">
          <media-icon name="captions-on" class="media-icon media-icon--captions-on"></media-icon>
          <media-icon name="captions-off" class="media-icon media-icon--captions-off"></media-icon>
          <media-icon name="fullscreen-enter" class="media-icon media-icon--fullscreen-enter"></media-icon>
          <media-icon name="fullscreen-exit" class="media-icon media-icon--fullscreen-exit"></media-icon>
          <media-icon name="pip-enter" class="media-icon media-icon--pip-enter"></media-icon>
          <media-icon name="pip-exit" class="media-icon media-icon--pip-exit"></media-icon>
          <media-status-indicator-value class="media-status-indicator__value"></media-status-indicator-value>
        </div>
      </media-status-indicator>
      <media-seek-indicator hidden class="media-seek-indicator">
        <media-icon name="chevron" class="media-icon media-icon--seek"></media-icon>
        <media-seek-indicator-value class="media-seek-indicator__value"></media-seek-indicator-value>
      </media-seek-indicator>
      <media-status-indicator hidden actions="togglePaused" class="media-status-indicator media-status-indicator--playback">
        <media-icon name="play" class="media-icon media-icon--play"></media-icon>
        <media-icon name="pause" class="media-icon media-icon--pause"></media-icon>
      </media-status-indicator>
    </div>
  </media-container>
</video-player>

Default audio skin

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

<audio-player>
  <media-container class="media-default-skin media-default-skin--audio">
    <audio src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4"></audio>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--subtle"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <div class="media-surface media-controls">
      <media-tooltip-group>
        <div class="media-button-group">
          <span class="media-button--play__wrapper">
            <media-buffering-indicator class="media-buffering-indicator">
              <media-icon name="spinner" class="media-icon"></media-icon>
            </media-buffering-indicator>
            <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
              <media-icon name="restart" class="media-icon media-icon--restart"></media-icon>
              <media-icon name="play" class="media-icon media-icon--play"></media-icon>
              <media-icon name="pause" class="media-icon media-icon--pause"></media-icon>
            </media-play-button>
            <media-tooltip id="play-tooltip" side="top" boundary="viewport" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>
          </span>

          <media-seek-button commandfor="seek-backward-tooltip" seconds="-10" class="media-button media-button--subtle media-button--icon media-button--seek">
            <span class="media-icon__container">
              <media-icon name="seek" class="media-icon media-icon--seek media-icon--flipped"></media-icon>
              <span class="media-icon__label">10</span>
            </span>
          </media-seek-button>
          <media-tooltip id="seek-backward-tooltip" side="top" boundary="viewport" class="media-surface media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-seek-button commandfor="seek-forward-tooltip" seconds="10" class="media-button media-button--subtle media-button--icon media-button--seek">
            <span class="media-icon__container">
              <media-icon name="seek" class="media-icon media-icon--seek"></media-icon>
              <span class="media-icon__label">10</span>
            </span>
          </media-seek-button>
          <media-tooltip id="seek-forward-tooltip" side="top" boundary="viewport" class="media-surface media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>
        </div>

        <div class="media-time-controls">
          <media-time type="current" class="media-time"></media-time>
          <media-time-slider class="media-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"></media-slider-thumb>
            <media-slider-preview overflow="visible" class="media-slider__preview">
              <media-slider-value type="pointer" class="media-surface media-tooltip media-slider__value media-time"></media-slider-value>
            </media-slider-preview>
          </media-time-slider>
          <media-time toggle type="remaining" class="media-time"></media-time>
        </div>

        <div class="media-button-group">
          <media-playback-rate-button id="playback-rate-trigger" commandfor="playback-rate-menu" class="media-button media-button--subtle media-button--icon media-button--playback-rate"></media-playback-rate-button>
          <media-menu id="playback-rate-menu" side="top" align="center" boundary="viewport" class="media-surface media-popover media-menu">
            <media-menu-content class="media-menu__content">
              <media-playback-rate-radio-group class="media-menu__group">
                <template>
                  <media-menu-radio-item class="media-menu__item">
                    <span data-part="label"></span>
                    <media-menu-item-indicator force-mount class="media-menu__indicator">
                      <media-icon name="check" class="media-icon"></media-icon>
                    </media-menu-item-indicator>
                  </media-menu-radio-item>
                </template>
              </media-playback-rate-radio-group>
            </media-menu-content>
          </media-menu>
          <media-tooltip trigger="playback-rate-trigger" side="top" boundary="viewport" class="media-surface media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-mute-button commandfor="audio-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
            <media-icon name="volume-off" class="media-icon media-icon--volume-off"></media-icon>
            <media-icon name="volume-low" class="media-icon media-icon--volume-low"></media-icon>
            <media-icon name="volume-high" class="media-icon media-icon--volume-high"></media-icon>
          </media-mute-button>

          <media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="top" boundary="viewport" class="media-surface media-popover media-popover--volume">
            <media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge">
              <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-slider__thumb--persistent"></media-slider-thumb>
            </media-volume-slider>
          </media-popover>
        </div>
      </media-tooltip-group>
    </div>

    <!-- Hotkeys -->
    <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" value="5"></media-hotkey>
    <media-hotkey keys="ArrowLeft" action="seekStep" value="-5"></media-hotkey>
    <media-hotkey keys="l" action="seekStep" value="10"></media-hotkey>
    <media-hotkey keys="j" action="seekStep" value="-10"></media-hotkey>
    <media-hotkey keys="ArrowUp" action="volumeStep" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></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=">" action="speedUp"></media-hotkey>
    <media-hotkey keys="<" action="speedDown"></media-hotkey>
  </media-container>
</audio-player>

Minimal video skin

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

<video-player poster="https://image.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/thumbnail.webp">
  <media-container class="media-minimal-skin media-minimal-skin--video">
    <video src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4" playsinline></video>

    <media-poster>
      <img alt="" decoding="async" />
    </media-poster>

    <media-buffering-indicator class="media-buffering-indicator">
      <media-icon name="spinner" family="minimal" class="media-icon"></media-icon>
    </media-buffering-indicator>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--primary"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <media-controls>
      <media-controls-backdrop class="media-overlay"></media-controls-backdrop>
      <media-controls-content class="media-controls">
      <media-tooltip-group>
        <div class="media-button-group">
          <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
            <media-icon name="restart" family="minimal" class="media-icon media-icon--restart"></media-icon>
            <media-icon name="play" family="minimal" class="media-icon media-icon--play"></media-icon>
            <media-icon name="pause" family="minimal" class="media-icon media-icon--pause"></media-icon>
          </media-play-button>
          <media-tooltip id="play-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-mute-button id="video-mute-trigger" commandfor="video-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
            <media-icon name="volume-off" family="minimal" class="media-icon media-icon--volume-off"></media-icon>
            <media-icon name="volume-low" family="minimal" class="media-icon media-icon--volume-low"></media-icon>
            <media-icon name="volume-high" family="minimal" class="media-icon media-icon--volume-high"></media-icon>
          </media-mute-button>
          <media-tooltip trigger="video-mute-trigger" delay="0" sticky side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-popover id="video-volume-popover" open-on-hover delay="200" close-delay="100" side="right" class="media-popover media-popover--volume">
            <media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
              <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-slider__thumb--persistent"></media-slider-thumb>
            </media-volume-slider>
          </media-popover>
        </div>

        <div class="media-time-controls">
          <media-time-group class="media-time-group">
            <media-time toggle type="current" class="media-time media-time--current"></media-time>
            <media-time-separator class="media-time-separator"></media-time-separator>
            <media-time type="duration" class="media-time media-time--duration"></media-time>
          </media-time-group>

          <media-time-slider class="media-slider">
            <media-time-slider-chapters class="media-slider__chapters">
              <template>
                <div class="media-slider__chapter">
                  <media-slider-track class="media-slider__track media-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-slider-thumb>

            <media-slider-preview class="media-slider__preview">
              <div class="media-thumbnail media-slider__thumbnail">
                <media-slider-thumbnail class="media-thumbnail__image"></media-slider-thumbnail>
                <media-icon name="spinner" family="minimal" class="media-thumbnail__spinner media-icon"></media-icon>
              </div>
              <div class="media-slider__value">
                <media-time-slider-chapter-title class="media-slider__chapter-title"></media-time-slider-chapter-title>
                <media-slider-value type="pointer" class="media-time"></media-slider-value>
              </div>
            </media-slider-preview>
          </media-time-slider>
        </div>

        <div class="media-button-group">
          <media-captions-button commandfor="captions-tooltip" class="media-button media-button--subtle media-button--icon media-button--captions">
            <media-icon name="captions-off" family="minimal" class="media-icon media-icon--captions-off"></media-icon>
            <media-icon name="captions-on" family="minimal" class="media-icon media-icon--captions-on"></media-icon>
          </media-captions-button>
          <media-tooltip id="captions-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <button id="settings-trigger" commandfor="settings-menu" aria-labelledby="settings-label" class="media-button media-button--subtle media-button--icon media-button--settings">
            <media-icon name="gear" family="minimal" class="media-icon media-icon--settings"></media-icon>
            <media-text token="menu.settings" id="settings-label" class="media-sr-only">Settings</media-text>
          </button>
          <media-menu id="settings-menu" side="top" align="center" class="media-popover media-menu media-menu--settings">
            <media-menu-content class="media-menu__content">
              <media-menu-item commandfor="settings-quality-menu" class="media-menu__item media-menu__item--submenu">
                <media-icon name="switches" family="minimal" class="media-icon"></media-icon>
                <media-text token="menu.quality">Quality</media-text>
                <span class="media-menu__hint">
                  <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                  <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron"></media-icon>
                </span>
              </media-menu-item>
              <media-menu-item commandfor="settings-audio-menu" class="media-menu__item media-menu__item--submenu">
                <media-icon name="speech" family="minimal" class="media-icon"></media-icon>
                <media-text token="menu.audio">Audio</media-text>
                <span class="media-menu__hint">
                  <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                  <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron"></media-icon>
                </span>
              </media-menu-item>
              <media-menu-item commandfor="settings-speed-menu" class="media-menu__item media-menu__item--submenu">
                <media-icon name="speed" family="minimal" class="media-icon"></media-icon>
                <media-text token="menu.speed">Speed</media-text>
                <span class="media-menu__hint">
                  <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                  <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron"></media-icon>
                </span>
              </media-menu-item>
              <media-menu-item commandfor="settings-captions-menu" class="media-menu__item media-menu__item--submenu">
                <media-icon name="captions-off" family="minimal" class="media-icon"></media-icon>
                <media-text token="menu.captions">Captions</media-text>
                <span class="media-menu__hint">
                  <bdi data-part="hint" dir="auto" class="media-menu__hint-label"></bdi>
                  <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron"></media-icon>
                </span>
              </media-menu-item>
            </media-menu-content>
            <media-menu-content id="settings-quality-menu" class="media-menu__panel">
              <media-menu-item class="media-menu__back">
                <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                <media-text token="menu.quality">Quality</media-text>
              </media-menu-item>
              <div class="media-menu__separator"></div>
              <media-quality-radio-group class="media-menu__group">
                <template>
                  <media-menu-radio-item class="media-menu__item">
                    <span>
                      <bdi data-part="label" dir="auto"></bdi>
                      <sup data-part="tier" class="media-menu__tier"></sup>
                    </span>
                    <span data-part="badge" class="media-badge"></span>
                    <media-menu-item-indicator force-mount class="media-menu__indicator">
                      <media-icon name="check" family="minimal" class="media-icon"></media-icon>
                    </media-menu-item-indicator>
                  </media-menu-radio-item>
                </template>
              </media-quality-radio-group>
            </media-menu-content>
            <media-menu-content id="settings-audio-menu" class="media-menu__panel">
              <media-menu-item class="media-menu__back">
                <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                <media-text token="menu.audio">Audio</media-text>
              </media-menu-item>
              <div class="media-menu__separator"></div>
              <media-audio-track-radio-group class="media-menu__group">
                <template>
                  <media-menu-radio-item class="media-menu__item">
                    <bdi data-part="label" dir="auto"></bdi>
                    <media-menu-item-indicator force-mount class="media-menu__indicator">
                      <media-icon name="check" family="minimal" class="media-icon"></media-icon>
                    </media-menu-item-indicator>
                  </media-menu-radio-item>
                </template>
              </media-audio-track-radio-group>
            </media-menu-content>
            <media-menu-content id="settings-speed-menu" class="media-menu__panel">
              <media-menu-item class="media-menu__back">
                <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                <media-text token="menu.speed">Speed</media-text>
              </media-menu-item>
              <div class="media-menu__separator"></div>
              <media-playback-rate-radio-group class="media-menu__group">
                <template>
                  <media-menu-radio-item class="media-menu__item">
                    <bdi data-part="label" dir="auto"></bdi>
                    <media-menu-item-indicator force-mount class="media-menu__indicator">
                      <media-icon name="check" family="minimal" class="media-icon"></media-icon>
                    </media-menu-item-indicator>
                  </media-menu-radio-item>
                </template>
              </media-playback-rate-radio-group>
            </media-menu-content>
            <media-menu-content id="settings-captions-menu" class="media-menu__panel">
              <media-menu-item class="media-menu__back">
                <media-icon name="chevron" family="minimal" class="media-icon media-menu__chevron media-icon--flipped"></media-icon>
                <media-text token="menu.captions">Captions</media-text>
              </media-menu-item>
              <div class="media-menu__separator"></div>
              <media-captions-radio-group class="media-menu__group">
                <template>
                  <media-menu-radio-item class="media-menu__item">
                    <bdi data-part="label" dir="auto"></bdi>
                    <media-menu-item-indicator force-mount class="media-menu__indicator">
                      <media-icon name="check" family="minimal" class="media-icon"></media-icon>
                    </media-menu-item-indicator>
                  </media-menu-radio-item>
                </template>
              </media-captions-radio-group>
            </media-menu-content>
          </media-menu>
          <media-tooltip id="settings-tooltip" trigger="settings-trigger" side="top" class="media-tooltip">
            <media-text token="menu.settings">Settings</media-text>
          </media-tooltip>

          <media-cast-button commandfor="cast-tooltip" class="media-button media-button--subtle media-button--icon media-button--cast">
            <media-icon name="cast-enter" family="minimal" class="media-icon media-icon--cast-enter"></media-icon>
            <media-icon name="cast-exit" family="minimal" class="media-icon media-icon--cast-exit"></media-icon>
          </media-cast-button>
          <media-tooltip id="cast-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-airplay-button commandfor="airplay-tooltip" class="media-button media-button--subtle media-button--icon media-button--airplay">
            <media-icon name="airplay-enter" family="minimal" class="media-icon media-icon--airplay-enter"></media-icon>
            <media-icon name="airplay-exit" family="minimal" class="media-icon media-icon--airplay-exit"></media-icon>
          </media-airplay-button>
          <media-tooltip id="airplay-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-pip-button commandfor="pip-tooltip" class="media-button media-button--subtle media-button--icon media-button--pip">
            <media-icon name="pip-enter" family="minimal" class="media-icon media-icon--pip-enter"></media-icon>
            <media-icon name="pip-exit" family="minimal" class="media-icon media-icon--pip-exit"></media-icon>
          </media-pip-button>
          <media-tooltip id="pip-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--subtle media-button--icon media-button--fullscreen">
            <media-icon name="fullscreen-enter" family="minimal" class="media-icon media-icon--fullscreen-enter"></media-icon>
            <media-icon name="fullscreen-exit" family="minimal" class="media-icon media-icon--fullscreen-exit"></media-icon>
          </media-fullscreen-button>
          <media-tooltip id="fullscreen-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>
        </div>
      </media-tooltip-group>
      </media-controls-content>
    </media-controls>

    <!-- Hotkeys -->
    <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="f" action="toggleFullscreen"></media-hotkey>
    <media-hotkey keys="c" action="toggleSubtitles"></media-hotkey>
    <media-hotkey keys="i" action="togglePictureInPicture"></media-hotkey>
    <media-hotkey keys="ArrowRight" action="seekStep" value="5"></media-hotkey>
    <media-hotkey keys="ArrowLeft" action="seekStep" value="-5"></media-hotkey>
    <media-hotkey keys="l" action="seekStep" value="10"></media-hotkey>
    <media-hotkey keys="j" action="seekStep" value="-10"></media-hotkey>
    <media-hotkey keys="ArrowUp" action="volumeStep" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></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=">" action="speedUp"></media-hotkey>
    <media-hotkey keys="<" action="speedDown"></media-hotkey>

    <!-- Gestures -->
    <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" value="-10" region="left"></media-gesture>
    <media-gesture type="doubletap" action="toggleFullscreen" region="center"></media-gesture>
    <media-gesture type="doubletap" action="seekStep" value="10" region="right"></media-gesture>

    <!-- Input Indicators -->
    <media-status-announcer class="media-sr-only"></media-status-announcer>
    <div class="media-input-indicator-overlay">
      <media-volume-indicator hidden class="media-volume-indicator">
        <media-volume-indicator-fill class="media-volume-indicator__content">
          <media-icon name="volume-high" family="minimal" class="media-icon media-icon--volume-high"></media-icon>
          <media-icon name="volume-low" family="minimal" class="media-icon media-icon--volume-low"></media-icon>
          <media-icon name="volume-off" family="minimal" class="media-icon media-icon--volume-off"></media-icon>
          <div class="media-volume-indicator__progress" aria-hidden="true"></div>
          <media-volume-indicator-value class="media-volume-indicator__value"></media-volume-indicator-value>
        </media-volume-indicator-fill>
      </media-volume-indicator>

      <media-status-indicator hidden actions="toggleSubtitles toggleFullscreen togglePictureInPicture" class="media-status-indicator media-status-indicator--state">
        <div class="media-status-indicator__content">
          <media-icon name="captions-on" family="minimal" class="media-icon media-icon--captions-on"></media-icon>
          <media-icon name="captions-off" family="minimal" class="media-icon media-icon--captions-off"></media-icon>
          <media-icon name="fullscreen-enter" family="minimal" class="media-icon media-icon--fullscreen-enter"></media-icon>
          <media-icon name="fullscreen-exit" family="minimal" class="media-icon media-icon--fullscreen-exit"></media-icon>
          <media-icon name="pip-enter" family="minimal" class="media-icon media-icon--pip-enter"></media-icon>
          <media-icon name="pip-exit" family="minimal" class="media-icon media-icon--pip-exit"></media-icon>
          <media-status-indicator-value class="media-status-indicator__value"></media-status-indicator-value>
        </div>
      </media-status-indicator>

      <media-seek-indicator hidden class="media-seek-indicator">
        <media-icon name="chevron" family="minimal" class="media-icon media-icon--seek"></media-icon>
        <media-seek-indicator-value class="media-seek-indicator__value"></media-seek-indicator-value>
      </media-seek-indicator>

      <media-status-indicator hidden actions="togglePaused" class="media-status-indicator media-status-indicator--playback">
        <media-icon name="play" family="minimal" class="media-icon media-icon--play"></media-icon>
        <media-icon name="pause" family="minimal" class="media-icon media-icon--pause"></media-icon>
      </media-status-indicator>
    </div>
  </media-container>
</video-player>

Minimal audio skin

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

<audio-player>
  <media-container class="media-minimal-skin media-minimal-skin--audio">
    <audio src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4"></audio>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--subtle"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <div class="media-controls">
      <media-tooltip-group>
        <div class="media-button-group">
          <span class="media-button--play__wrapper">
            <media-buffering-indicator class="media-buffering-indicator">
              <media-icon name="spinner" family="minimal" class="media-icon"></media-icon>
            </media-buffering-indicator>
            <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
              <media-icon name="restart" family="minimal" class="media-icon media-icon--restart"></media-icon>
              <media-icon name="play" family="minimal" class="media-icon media-icon--play"></media-icon>
              <media-icon name="pause" family="minimal" class="media-icon media-icon--pause"></media-icon>
            </media-play-button>
            <media-tooltip id="play-tooltip" side="top" boundary="viewport" class="media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>
          </span>

          <media-seek-button commandfor="seek-backward-tooltip" seconds="-10" class="media-button media-button--subtle media-button--icon media-button--seek">
            <span class="media-icon__container">
              <media-icon name="seek" family="minimal" class="media-icon media-icon--seek media-icon--flipped"></media-icon>
              <span class="media-icon__label">10</span>
            </span>
          </media-seek-button>
          <media-tooltip id="seek-backward-tooltip" side="top" boundary="viewport" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-seek-button commandfor="seek-forward-tooltip" seconds="10" class="media-button media-button--subtle media-button--icon media-button--seek">
            <span class="media-icon__container">
              <media-icon name="seek" family="minimal" class="media-icon media-icon--seek"></media-icon>
              <span class="media-icon__label">10</span>
            </span>
          </media-seek-button>
          <media-tooltip id="seek-forward-tooltip" side="top" boundary="viewport" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>
        </div>

        <div class="media-time-controls">
          <media-time-group class="media-time-group">
            <media-time toggle type="current" class="media-time media-time--current"></media-time>
            <media-time-separator class="media-time-separator"></media-time-separator>
            <media-time type="duration" class="media-time media-time--duration"></media-time>
          </media-time-group>

          <media-time-slider class="media-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"></media-slider-thumb>
            <media-slider-preview class="media-slider__preview">
              <media-slider-value type="pointer" class="media-tooltip media-slider__value media-time"></media-slider-value>
            </media-slider-preview>
          </media-time-slider>
        </div>

        <div class="media-button-group">
          <media-mute-button id="audio-mute-trigger" commandfor="audio-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
            <media-icon name="volume-off" family="minimal" class="media-icon media-icon--volume-off"></media-icon>
            <media-icon name="volume-low" family="minimal" class="media-icon media-icon--volume-low"></media-icon>
            <media-icon name="volume-high" family="minimal" class="media-icon media-icon--volume-high"></media-icon>
          </media-mute-button>
          <media-tooltip trigger="audio-mute-trigger" delay="0" sticky side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" boundary="viewport" class="media-popover media-popover--volume">
            <media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
              <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-slider__thumb--persistent"></media-slider-thumb>
            </media-volume-slider>
          </media-popover>

          <media-playback-rate-button id="playback-rate-trigger" commandfor="playback-rate-menu" class="media-button media-button--subtle media-button--icon media-button--playback-rate"></media-playback-rate-button>
          <media-menu id="playback-rate-menu" side="top" align="center" boundary="viewport" class="media-popover media-menu">
            <media-menu-content class="media-menu__content">
              <media-playback-rate-radio-group class="media-menu__group">
                <template>
                  <media-menu-radio-item class="media-menu__item">
                    <span data-part="label"></span>
                    <media-menu-item-indicator force-mount class="media-menu__indicator">
                      <media-icon name="check" family="minimal" class="media-icon"></media-icon>
                    </media-menu-item-indicator>
                  </media-menu-radio-item>
                </template>
              </media-playback-rate-radio-group>
            </media-menu-content>
          </media-menu>
          <media-tooltip trigger="playback-rate-trigger" side="top" boundary="viewport" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

        </div>
      </media-tooltip-group>
    </div>

    <!-- Hotkeys -->
    <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" value="5"></media-hotkey>
    <media-hotkey keys="ArrowLeft" action="seekStep" value="-5"></media-hotkey>
    <media-hotkey keys="l" action="seekStep" value="10"></media-hotkey>
    <media-hotkey keys="j" action="seekStep" value="-10"></media-hotkey>
    <media-hotkey keys="ArrowUp" action="volumeStep" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></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=">" action="speedUp"></media-hotkey>
    <media-hotkey keys="<" action="speedDown"></media-hotkey>
  </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/html@10.0.0-beta.31/cdn/live-video.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/html@10.0.0-beta.31/cdn/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-default-skin media-default-skin--video">
    <hlsjs-video src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8" playsinline></hlsjs-video>

    <media-poster>
      <img alt="" decoding="async" />
    </media-poster>

    <media-buffering-indicator class="media-buffering-indicator">
      <media-icon name="spinner" class="media-icon"></media-icon>
    </media-buffering-indicator>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog media-surface">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--primary"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <media-controls>
      <media-controls-backdrop class="media-overlay"></media-controls-backdrop>
      <media-controls-content class="media-surface media-controls media-controls--root">
      <media-tooltip-group>
        <div class="media-surface media-controls media-controls--primary">
          <div class="media-button-group">
            <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
              <media-icon name="restart" class="media-icon media-icon--restart"></media-icon>
              <media-icon name="play" class="media-icon media-icon--play"></media-icon>
              <media-icon name="pause" class="media-icon media-icon--pause"></media-icon>
            </media-play-button>
            <media-tooltip id="play-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-live-button class="media-button media-button--subtle media-button--live"></media-live-button>
          </div>

          <div class="media-time-controls" aria-hidden="true"></div>

          <div class="media-button-group">
            <media-mute-button commandfor="live-video-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
              <media-icon name="volume-off" class="media-icon media-icon--volume-off"></media-icon>
              <media-icon name="volume-low" class="media-icon media-icon--volume-low"></media-icon>
              <media-icon name="volume-high" class="media-icon media-icon--volume-high"></media-icon>
            </media-mute-button>

            <media-popover id="live-video-volume-popover" open-on-hover delay="200" close-delay="100" side="top" class="media-surface media-popover media-popover--volume">
              <media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge">
                <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-slider__thumb--persistent"></media-slider-thumb>
              </media-volume-slider>
            </media-popover>

            <media-captions-button menu-for="captions-menu" commandfor="captions-tooltip" class="media-button media-button--subtle media-button--icon media-button--captions">
              <media-icon name="captions-off" class="media-icon media-icon--captions-off"></media-icon>
              <media-icon name="captions-on" class="media-icon media-icon--captions-on"></media-icon>
            </media-captions-button>
            <media-menu id="captions-menu" side="top" align="center" class="media-surface media-popover media-menu media-menu--captions">
              <media-menu-content class="media-menu__content">
                <media-captions-radio-group class="media-menu__group">
                  <template>
                    <media-menu-radio-item class="media-menu__item">
                      <bdi data-part="label" dir="auto"></bdi>
                      <media-menu-item-indicator force-mount class="media-menu__indicator">
                        <media-icon name="check" class="media-icon"></media-icon>
                      </media-menu-item-indicator>
                    </media-menu-radio-item>
                  </template>
                </media-captions-radio-group>
              </media-menu-content>
            </media-menu>
            <media-tooltip id="captions-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-cast-button commandfor="cast-tooltip" class="media-button media-button--subtle media-button--icon media-button--cast">
              <media-icon name="cast-enter" class="media-icon media-icon--cast-enter"></media-icon>
              <media-icon name="cast-exit" class="media-icon media-icon--cast-exit"></media-icon>
            </media-cast-button>
            <media-tooltip id="cast-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-airplay-button commandfor="airplay-tooltip" class="media-button media-button--subtle media-button--icon media-button--airplay">
              <media-icon name="airplay-enter" class="media-icon media-icon--airplay-enter"></media-icon>
              <media-icon name="airplay-exit" class="media-icon media-icon--airplay-exit"></media-icon>
            </media-airplay-button>
            <media-tooltip id="airplay-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-pip-button commandfor="pip-tooltip" class="media-button media-button--subtle media-button--icon media-button--pip">
              <media-icon name="pip-enter" class="media-icon media-icon--pip-enter"></media-icon>
              <media-icon name="pip-exit" class="media-icon media-icon--pip-exit"></media-icon>
            </media-pip-button>
            <media-tooltip id="pip-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

            <media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--subtle media-button--icon media-button--fullscreen">
              <media-icon name="fullscreen-enter" class="media-icon media-icon--fullscreen-enter"></media-icon>
              <media-icon name="fullscreen-exit" class="media-icon media-icon--fullscreen-exit"></media-icon>
            </media-fullscreen-button>
            <media-tooltip id="fullscreen-tooltip" side="top" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>

          </div>
        </div>
      </media-tooltip-group>
      </media-controls-content>
    </media-controls>

    <!-- Hotkeys -->
    <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="f" action="toggleFullscreen"></media-hotkey>
    <media-hotkey keys="c" action="toggleSubtitles"></media-hotkey>
    <media-hotkey keys="i" action="togglePictureInPicture"></media-hotkey>
    <media-hotkey keys="ArrowUp" action="volumeStep" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></media-hotkey>

    <!-- Gestures -->
    <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>

    <!-- Input Indicators -->
    <media-status-announcer class="media-sr-only"></media-status-announcer>
    <div class="media-input-indicator-overlay">
      <media-volume-indicator hidden class="media-surface media-volume-indicator">
        <media-volume-indicator-fill class="media-volume-indicator__content">
          <media-icon name="volume-high" class="media-icon media-icon--volume-high"></media-icon>
          <media-icon name="volume-low" class="media-icon media-icon--volume-low"></media-icon>
          <media-icon name="volume-off" class="media-icon media-icon--volume-off"></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
        hidden
        actions="toggleSubtitles toggleFullscreen togglePictureInPicture"
        class="media-surface media-status-indicator media-status-indicator--state"
      >
        <div class="media-status-indicator__content">
          <media-icon name="captions-on" class="media-icon media-icon--captions-on"></media-icon>
          <media-icon name="captions-off" class="media-icon media-icon--captions-off"></media-icon>
          <media-icon name="fullscreen-enter" class="media-icon media-icon--fullscreen-enter"></media-icon>
          <media-icon name="fullscreen-exit" class="media-icon media-icon--fullscreen-exit"></media-icon>
          <media-icon name="pip-enter" class="media-icon media-icon--pip-enter"></media-icon>
          <media-icon name="pip-exit" class="media-icon media-icon--pip-exit"></media-icon>
          <media-status-indicator-value class="media-status-indicator__value"></media-status-indicator-value>
        </div>
      </media-status-indicator>
      <media-status-indicator hidden actions="togglePaused" class="media-status-indicator media-status-indicator--playback">
        <media-icon name="play" class="media-icon media-icon--play"></media-icon>
        <media-icon name="pause" class="media-icon media-icon--pause"></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/html@10.0.0-beta.31/cdn/live-audio.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/html@10.0.0-beta.31/cdn/media/mux-audio.js"></script>
<link rel="stylesheet" href="./player.css">

<live-audio-player>
  <media-container class="media-default-skin media-default-skin--audio">
    <mux-audio src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8"></mux-audio>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--subtle"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <div class="media-surface media-controls">
      <media-tooltip-group>
        <div class="media-button-group">
          <span class="media-button--play__wrapper">
            <media-buffering-indicator class="media-buffering-indicator">
              <media-icon name="spinner" class="media-icon"></media-icon>
            </media-buffering-indicator>
            <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
              <media-icon name="restart" class="media-icon media-icon--restart"></media-icon>
              <media-icon name="play" class="media-icon media-icon--play"></media-icon>
              <media-icon name="pause" class="media-icon media-icon--pause"></media-icon>
            </media-play-button>
            <media-tooltip id="play-tooltip" side="top" boundary="viewport" class="media-surface media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>
          </span>

          <media-live-button class="media-button media-button--subtle media-button--live"></media-live-button>
        </div>

        <div class="media-time-controls" aria-hidden="true"></div>

        <div class="media-button-group">
          <media-mute-button commandfor="live-audio-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
            <media-icon name="volume-off" class="media-icon media-icon--volume-off"></media-icon>
            <media-icon name="volume-low" class="media-icon media-icon--volume-low"></media-icon>
            <media-icon name="volume-high" class="media-icon media-icon--volume-high"></media-icon>
          </media-mute-button>

          <media-popover id="live-audio-volume-popover" open-on-hover delay="200" close-delay="100" side="top" boundary="viewport" class="media-surface media-popover media-popover--volume">
            <media-volume-slider class="media-slider" orientation="vertical" thumb-alignment="edge">
              <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-slider__thumb--persistent"></media-slider-thumb>
            </media-volume-slider>
          </media-popover>
        </div>
      </media-tooltip-group>
    </div>

    <!-- Hotkeys -->
    <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" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></media-hotkey>
  </media-container>
</live-audio-player>

Minimal live video skin

<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/html@10.0.0-beta.31/cdn/live-video-minimal.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/html@10.0.0-beta.31/cdn/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-minimal-skin media-minimal-skin--video">
    <hlsjs-video src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8" playsinline></hlsjs-video>

    <media-poster>
      <img alt="" decoding="async" />
    </media-poster>

    <media-buffering-indicator class="media-buffering-indicator">
      <media-icon name="spinner" family="minimal" class="media-icon"></media-icon>
    </media-buffering-indicator>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--primary"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <media-controls>
      <media-controls-backdrop class="media-overlay"></media-controls-backdrop>
      <media-controls-content class="media-controls">
      <media-tooltip-group>
        <div class="media-button-group">
          <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
            <media-icon name="restart" family="minimal" class="media-icon media-icon--restart"></media-icon>
            <media-icon name="play" family="minimal" class="media-icon media-icon--play"></media-icon>
            <media-icon name="pause" family="minimal" class="media-icon media-icon--pause"></media-icon>
          </media-play-button>
          <media-tooltip id="play-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-live-button class="media-button media-button--subtle media-button--live"></media-live-button>

          <media-mute-button id="live-video-mute-trigger" commandfor="live-video-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
            <media-icon name="volume-off" family="minimal" class="media-icon media-icon--volume-off"></media-icon>
            <media-icon name="volume-low" family="minimal" class="media-icon media-icon--volume-low"></media-icon>
            <media-icon name="volume-high" family="minimal" class="media-icon media-icon--volume-high"></media-icon>
          </media-mute-button>
          <media-tooltip trigger="live-video-mute-trigger" delay="0" sticky side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-popover id="live-video-volume-popover" open-on-hover delay="200" close-delay="100" side="right" class="media-popover media-popover--volume">
            <media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
              <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-slider__thumb--persistent"></media-slider-thumb>
            </media-volume-slider>
          </media-popover>
        </div>

        <div class="media-time-controls" aria-hidden="true"></div>

        <div class="media-button-group">
          <media-captions-button menu-for="captions-menu" commandfor="captions-tooltip" class="media-button media-button--subtle media-button--icon media-button--captions">
            <media-icon name="captions-off" family="minimal" class="media-icon media-icon--captions-off"></media-icon>
            <media-icon name="captions-on" family="minimal" class="media-icon media-icon--captions-on"></media-icon>
          </media-captions-button>
          <media-menu id="captions-menu" side="top" align="center" class="media-popover media-menu media-menu--captions">
            <media-menu-content class="media-menu__content">
              <media-captions-radio-group class="media-menu__group">
                <template>
                  <media-menu-radio-item class="media-menu__item">
                    <bdi data-part="label" dir="auto"></bdi>
                    <media-menu-item-indicator force-mount class="media-menu__indicator">
                      <media-icon name="check" family="minimal" class="media-icon"></media-icon>
                    </media-menu-item-indicator>
                  </media-menu-radio-item>
                </template>
              </media-captions-radio-group>
            </media-menu-content>
          </media-menu>
          <media-tooltip id="captions-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-cast-button commandfor="cast-tooltip" class="media-button media-button--subtle media-button--icon media-button--cast">
            <media-icon name="cast-enter" family="minimal" class="media-icon media-icon--cast-enter"></media-icon>
            <media-icon name="cast-exit" family="minimal" class="media-icon media-icon--cast-exit"></media-icon>
          </media-cast-button>
          <media-tooltip id="cast-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-airplay-button commandfor="airplay-tooltip" class="media-button media-button--subtle media-button--icon media-button--airplay">
            <media-icon name="airplay-enter" family="minimal" class="media-icon media-icon--airplay-enter"></media-icon>
            <media-icon name="airplay-exit" family="minimal" class="media-icon media-icon--airplay-exit"></media-icon>
          </media-airplay-button>
          <media-tooltip id="airplay-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-pip-button commandfor="pip-tooltip" class="media-button media-button--subtle media-button--icon media-button--pip">
            <media-icon name="pip-enter" family="minimal" class="media-icon media-icon--pip-enter"></media-icon>
            <media-icon name="pip-exit" family="minimal" class="media-icon media-icon--pip-exit"></media-icon>
          </media-pip-button>
          <media-tooltip id="pip-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-fullscreen-button commandfor="fullscreen-tooltip" class="media-button media-button--subtle media-button--icon media-button--fullscreen">
            <media-icon name="fullscreen-enter" family="minimal" class="media-icon media-icon--fullscreen-enter"></media-icon>
            <media-icon name="fullscreen-exit" family="minimal" class="media-icon media-icon--fullscreen-exit"></media-icon>
          </media-fullscreen-button>
          <media-tooltip id="fullscreen-tooltip" side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>
        </div>
      </media-tooltip-group>
      </media-controls-content>
    </media-controls>

    <!-- Hotkeys -->
    <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="f" action="toggleFullscreen"></media-hotkey>
    <media-hotkey keys="c" action="toggleSubtitles"></media-hotkey>
    <media-hotkey keys="i" action="togglePictureInPicture"></media-hotkey>
    <media-hotkey keys="ArrowUp" action="volumeStep" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></media-hotkey>

    <!-- Gestures -->
    <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>

    <!-- Input Indicators -->
    <media-status-announcer class="media-sr-only"></media-status-announcer>
    <div class="media-input-indicator-overlay">
      <media-volume-indicator hidden class="media-volume-indicator">
        <media-volume-indicator-fill class="media-volume-indicator__content">
          <media-icon name="volume-high" family="minimal" class="media-icon media-icon--volume-high"></media-icon>
          <media-icon name="volume-low" family="minimal" class="media-icon media-icon--volume-low"></media-icon>
          <media-icon name="volume-off" family="minimal" class="media-icon media-icon--volume-off"></media-icon>
          <div class="media-volume-indicator__progress" aria-hidden="true"></div>
          <media-volume-indicator-value class="media-volume-indicator__value"></media-volume-indicator-value>
        </media-volume-indicator-fill>
      </media-volume-indicator>
      <media-status-indicator
        hidden
        actions="toggleSubtitles toggleFullscreen togglePictureInPicture"
        class="media-status-indicator media-status-indicator--state"
      >
        <div class="media-status-indicator__content">
          <media-icon name="captions-on" family="minimal" class="media-icon media-icon--captions-on"></media-icon>
          <media-icon name="captions-off" family="minimal" class="media-icon media-icon--captions-off"></media-icon>
          <media-icon name="fullscreen-enter" family="minimal" class="media-icon media-icon--fullscreen-enter"></media-icon>
          <media-icon name="fullscreen-exit" family="minimal" class="media-icon media-icon--fullscreen-exit"></media-icon>
          <media-icon name="pip-enter" family="minimal" class="media-icon media-icon--pip-enter"></media-icon>
          <media-icon name="pip-exit" family="minimal" class="media-icon media-icon--pip-exit"></media-icon>
          <media-status-indicator-value class="media-status-indicator__value"></media-status-indicator-value>
        </div>
      </media-status-indicator>
      <media-status-indicator hidden actions="togglePaused" class="media-status-indicator media-status-indicator--playback">
        <media-icon name="play" family="minimal" class="media-icon media-icon--play"></media-icon>
        <media-icon name="pause" family="minimal" class="media-icon media-icon--pause"></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/html@10.0.0-beta.31/cdn/live-audio-minimal.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@videojs/html@10.0.0-beta.31/cdn/media/mux-audio.js"></script>
<link rel="stylesheet" href="./player.css">

<live-audio-player>
  <media-container class="media-minimal-skin media-minimal-skin--audio">
    <mux-audio src="https://stream.mux.com/v69RSHhFelSm4701snP22dYz2jICy4E4FUyk02rW4gxRM.m3u8"></mux-audio>

    <media-error-dialog>
      <media-dialog-backdrop class="media-overlay media-error-backdrop"></media-dialog-backdrop>
      <media-dialog-popup class="media-error">
      <div class="media-error__dialog">
        <div class="media-error__content">
          <media-dialog-title class="media-error__title"></media-dialog-title>
          <media-dialog-description class="media-error__description"></media-dialog-description>
        </div>
        <div class="media-error__actions">
          <media-dialog-close class="media-button media-button--subtle"></media-dialog-close>
        </div>
      </div>
      </media-dialog-popup>
    </media-error-dialog>

    <div class="media-controls">
      <media-tooltip-group>
        <div class="media-button-group">
          <span class="media-button--play__wrapper">
            <media-buffering-indicator class="media-buffering-indicator">
              <media-icon name="spinner" family="minimal" class="media-icon"></media-icon>
            </media-buffering-indicator>
            <media-play-button commandfor="play-tooltip" class="media-button media-button--subtle media-button--icon media-button--play">
              <media-icon name="restart" family="minimal" class="media-icon media-icon--restart"></media-icon>
              <media-icon name="play" family="minimal" class="media-icon media-icon--play"></media-icon>
              <media-icon name="pause" family="minimal" class="media-icon media-icon--pause"></media-icon>
            </media-play-button>
            <media-tooltip id="play-tooltip" side="top" boundary="viewport" class="media-tooltip">
              <media-tooltip-label></media-tooltip-label>
              <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
            </media-tooltip>
          </span>

          <media-live-button class="media-button media-button--subtle media-button--live"></media-live-button>
        </div>

        <div class="media-time-controls" aria-hidden="true"></div>

        <div class="media-button-group">
          <media-mute-button id="live-audio-mute-trigger" commandfor="live-audio-volume-popover" class="media-button media-button--subtle media-button--icon media-button--mute">
            <media-icon name="volume-off" family="minimal" class="media-icon media-icon--volume-off"></media-icon>
            <media-icon name="volume-low" family="minimal" class="media-icon media-icon--volume-low"></media-icon>
            <media-icon name="volume-high" family="minimal" class="media-icon media-icon--volume-high"></media-icon>
          </media-mute-button>
          <media-tooltip trigger="live-audio-mute-trigger" delay="0" sticky side="top" class="media-tooltip">
            <media-tooltip-label></media-tooltip-label>
            <media-tooltip-shortcut class="media-tooltip__kbd"></media-tooltip-shortcut>
          </media-tooltip>

          <media-popover id="live-audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" boundary="viewport" class="media-popover media-popover--volume">
            <media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
              <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-slider__thumb--persistent"></media-slider-thumb>
            </media-volume-slider>
          </media-popover>
        </div>
      </media-tooltip-group>
    </div>

    <!-- Hotkeys -->
    <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" value="0.05"></media-hotkey>
    <media-hotkey keys="ArrowDown" action="volumeStep" value="-0.05"></media-hotkey>
  </media-container>
</live-audio-player>