Skip to content

VOD playback

The default player gives you the complete VOD experience out of the box: scrubbing with cue-accurate seeking, ±10s transport, quality / speed / audio / subtitle menus, double-tap seeking and fullscreen.

The player chrome during VOD playback: transport, scrub bar and the control row.
The demo app on an iPhone 17 Pro Max, running the published SDK.
val player = OGPlayer.Builder(context).build()
player.load(
OGMediaItem.Builder("https://example.com/movie.m3u8")
.setStreamType(StreamType.VOD)
.setTitle("Tears of Steel")
.build(),
)
// OGPlayerView(player = player, …) renders the chrome

The transport API is identical everywhere: play() / pause() / seekTo(ms) / seekForward() / seekBackward(), playbackSpeed (0.25–2×), videoQualities + selectVideoQuality(id) (with an adaptive “Auto” entry), and position getters driven by a configurable onProgress tick (250 ms default).

Set title on the media item and the SDK shows it at content start for a few seconds (configurable timeout), reflowing around content-rating icons automatically.

Give the item a poster and the player shows it from load until playback first starts — the standard pre-play behaviour viewers expect from broadcast players:

OGMediaItem.Builder(streamUrl)
.setTitle("My movie")
.setPosterUrl("https://cdn.example.com/posters/my-movie.jpg")
.build()

The poster clears the moment playback starts and re-arms on the next load. With autoplay enabled it may only flash briefly (or persist where the browser blocks autoplay — exactly when you want a poster).