Playback Service
Introduction
The Playback Service handles all video playback session lifecycle management and bookmark tracking. It is responsible for:
- Initiating and managing playback sessions
- Reporting playback progress (pause, resume, stop)
- Managing bookmarks and continue-watching state per profile
Current Interface definition can be accessed by going to PlaybackService.ts on github
Class Diagram
Client-generated session IDs
Every playback start requires a secure client-generated UUID. The player creates it when a playback generation first starts a service session and reuses it for authentication recovery and transport retries. Changing the asset, profile, user, provider, or whether playback uses the service retires that generation; the next service start receives a new UUID. A stale response from a retired generation cannot update the current player.
Legacy starts pass the UUID as the required sessionId in
getPlaybackSession. Split starts pass it as clientSessionId, and the provider
sends the same value in Idempotency-Key. Restricted and authenticated trailer
starts also supply sessionId; free trailers fetched directly from OVP do not
create a playback session or require a UUID.
UUID generation failures follow the regular playback onError path. Trailer
failures remain optional and do not surface as UI errors.