Skip to main content

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.