Skip to content
FrameworkStyle

media-playback-rate-radio-group

A menu radio group for selecting playback speed

Creates radio items from the player playback rate state and selects the playback speed.

Anatomy

<media-playback-rate-radio-group>
  <template>
    <media-menu-radio-item>
      <span data-part="label"></span>
      <media-menu-item-indicator></media-menu-item-indicator>
    </media-menu-radio-item>
  </template>
</media-playback-rate-radio-group>

Behavior

The group is available when the configured media exposes playback rates. Option labels default to the rate followed by a multiplication sign (e.g. 1.5×); pass formatRate to customize them.

<media-playback-rate-radio-group> generates <media-menu-radio-item> children. Add an optional <template> with a single <media-menu-radio-item> to customize each generated item.

Styling

Attribute Values Description
data-rate number Current playback rate.
data-disabled Present / absent Present when playback rate selection is disabled.
data-availability "available" / "unavailable" Whether playback rates are available.
media-playback-rate-radio-group[data-availability="unavailable"] {
  display: none;
}

Accessibility

The group uses the menu radio group pattern.

The element defaults to Playback rate {rate} (e.g. Playback rate 1.5). Override its accessible name with aria-label or aria-labelledby.

Examples

Basic usage

<video-player class="video-player">
    <media-container>
        <video
            src="https://stream.mux.com/BV3YZtogl89mg9VcNBhhnHm02Y34zI1nlMuMQfAbl3dM/highest.mp4"
            autoplay
            muted
            playsinline
            loop
        ></video>
        <div class="menu-bar">
            <button type="button" commandfor="speed-menu" class="settings-trigger">Speed</button>
            <media-menu id="speed-menu" side="top" align="end" class="menu">
                <media-playback-rate-radio-group class="menu-group" aria-label="Speed">
                    <template>
                        <media-menu-radio-item class="menu-item">
                            <span data-part="label"></span>
                            <media-menu-item-indicator force-mount class="menu-indicator"></media-menu-item-indicator>
                        </media-menu-radio-item>
                    </template>
                </media-playback-rate-radio-group>
            </media-menu>
        </div>
    </media-container>
</video-player>

API Reference

Props

Prop Type Default Details
disabled boolean false
formatRate function formatPlaybackRate
label string | function ''

State

State is reflected as data attributes for CSS styling.

Property Type Details
rate number
rates number[]
disabled boolean
availability 'available' | 'unavailable'
label string

Data attributes

Attribute Type Details
data-rate number
data-disabled
data-availability 'available' | 'unavailable'