Skip to content

Controls & headless mode

Every control in the chrome has its own visibility flag — progress bar, time labels, ±seek buttons, volume, speed, quality, audio, subtitles, fullscreen, cast/AirPlay (mobile), title, content ratings. Flip any subset, or take the chrome fully headless and render your own UI on top of the engine.

// per-control
OGUiConfig.Builder()
.setShowSpeedButton(false)
.setShowCastButton(false)
.build()
// fully headless
OGUiConfig.Builder().hideAllControls().build()
// …or bring your own Composables:
OGPlayerView(player = player, customControls = { MyControls(player) })

Rules the SDK keeps for you:

  • Play/pause and the LIVE chip are never hidden by the per-control flags — a player must stay operable.
  • Live gating stacks on top of your flags: pure LIVE drops the scrubber, seek buttons and time labels; playback speed disappears on any live stream.
  • The error overlay always wins — even over custom controls.