Skip to main content

Playback

This class is the core of the library. It is an animation loop+event emitter which imitates an HTMLMediaElement being played (although it does not fully implement that interface). This class is also available as a standalone package @liqvid/playback.

There are two ways to create a Playback: you can instantiate it directly, or one is created automatically by a Script. You can then pass either one of these to <Player>:

import {Playback, Script, Player} from "liqvid";

// Option 1: Playback only
const playback = new Playback({duration: 10000});

<Player playback={playback}>{/* ... */}</Player>

// Option 2: use a Script
const script = new Script([
["slide1", "0:05"],
["slide2", "0:05"]
]);
const {playback} = script;

<Player script={script}>{/* ... */}</Player>

We recommend making the Playback accessible to your code outside of components. However, it can be accessed via hooks like so:

import {usePlayer} from "liqvid";

function Component() {
const {playback} = usePlayer();

// do stuff with playback
}

Properties

currentTime

The current playback time in milliseconds.

Warning: the HTMLMediaElement interface measures this property in seconds.

currentTime: number;

duration

The length of the playback in milliseconds.

Warning: the HTMLMediaElement interface measures this property in seconds.

duration: number;

paused

Whether the playback is paused.

paused: boolean;

playbackRate

The rate at which the playback is being played.

playbackRate: number;

seeking

Whether the playback is in the process of seeking to a new position.

seeking: boolean;

timeline

DocumentTimeline synced up to this playback.

timeline: DocumentTimeline;

Methods

constructor()

The Playback() constructor creates a new Playback object. Takes one parameter, which is an object with the following keys:

  • duration: number
    Duration of the playback in milliseconds
constructor(options: {
duration: number;
}): Playback;

newAnimation()

Create an Animation (factory) synced to this playback.

Parameters

  • keyframes: Keyframe[] | PropertyIndexedKeyframes
    A keyframes object or null

  • options?: number | KeyframeEffectOptions
    Either an integer representing the animation's duration (in milliseconds), or KeyframeEffect options

Return value

Returns a callback to attach the animation to a target

newAnimation<T extends Element>(
keyframes: Keyframe[] | PropertyIndexedKeyframes,
options?: number | KeyframeEffectOptions
): (target: T) => Animation;

pause()

Pause playback.

pause(): void;

play()

Resume playback.

play(): void;

seek()

Seek playback to a specific time.

seek(t: number | string): void;

Events

This class extends EventEmitter. It emits the following events:

pause

Fired when playback is paused.

play

Fired when playback begins or resumes playing.

seek

Fired when playback is seeked (sought?). Listeners receive the currentTime as an argument.

seeked

Fired when a seeking operation has completed.

seeking

Fired when a seeking operation starts.

stop

Fired when playback has stopped because the end of the ractive was reached.

ratechange

Fired when playback rate is changed.

timeupdate

Fired when the time has been updated. Listeners receive the currentTime as an argument.

volumechange

Fired when the volume has changed.