Appearance
Capability: speed
approvedPlayback rate control.
Purpose
Let users watch at their own pace: slower is rarely needed for spoken science, faster often is.
Behavior
- The shipped rate set is 1x, 1.2x, 1.5x, 2x, in that order. The default rate is 1x.
- Tap to cycle: activating the control or pressing
>advances to the next offered rate, while pressing<selects the previous offered rate. Forward cycling wraps from the last value to the first, and backward cycling wraps from the first value to the last. Custom lists use their own first and last entries; for the shipped list, forward wrap changes 2x to 1x and backward wrap changes 1x to 2x. The control's label always shows the current rate (for example "1.2x"); there is no menu. - The chosen rate is a user preference: it survives configuration updates (a user watching the feed at 1.5x stays at 1.5x video after video), per the framework principle that user choices outlive configuration updates, and it persists across page loads and visits through the stored user state (see the config contract).
- If an instance's configured options do not include the preferred rate, the closest offered rate is used; the preference itself is kept for instances that offer it.
Surface in landscape
- The rate label in the control bar acts as the control and fills its assigned slot width. It appears before the captions control. Identical in both layouts.
Surface in portrait
- Identical to landscape: the rate label appears before captions in the control bar.
Configuration
- Speed has no data dependency: it is always available and enabled by default.
capabilities.speed: falsedisables it; an object overrides the offered rates.
json
{
"capabilities": {
"speed": { "options": [1, 1.2, 1.5, 2] }
}
}The values above are the shipped defaults; supplying options replaces the list wholesale (arrays replace, per the merge semantics). The list must be non-empty and sorted ascending; including 1 is strongly recommended.
Strings
The visible rate value itself remains numeric and locale-neutral.
| Key | English default | Placeholders | Appears in |
|---|---|---|---|
playbackRate | Playback rate {rate} | rate | Rate-control aria label |
Page API hooks
- Set the rate from the page and observe rate change events. Exact names live in the page API document.
Edge cases
- A configured options list without the current preferred rate: the closest offered rate is used, preference retained.
- At equal distance from two offered rates, the lower rate wins.
- Rates apply to playback only; captions and chapter timings follow the media clock automatically.
Out of scope
- Pitch correction settings (browsers pitch-correct by default).