Skip to main content

Player Control

Control video playback programmatically — play, pause, seek, adjust volume, and manage multiple players.

Basic Control​

Use the channel view model to control the active player:

val viewModel = remember { BBChannelViewModel() }

// Play / Pause
viewModel.play()
viewModel.pause()

// Seek to 30 seconds
viewModel.seek(30.0)

// Volume (0.0 to 1.0)
viewModel.setVolume(0.5)

// Mute / Unmute
viewModel.setMuted(true)

Available Methods​

All methods accept an optional playerId parameter. Without it, they target the active player.

MethodDescription
play(playerId?)Start or resume playback
pause(playerId?)Pause playback
seek(time, playerId?)Seek to position in seconds
setVolume(level, playerId?)Set volume (0.0 – 1.0)
setMuted(muted, playerId?)Mute or unmute
enterFullscreen(playerId?)Enter fullscreen mode
exitFullscreen(playerId?)Exit fullscreen mode

Multi-Player​

Channels can have multiple players active simultaneously.

Common Player IDs​

IDContext
playerMain page inline player
detailPageDetail page player
overviewPageOverview/playlist page player

Targeting Specific Players​

// Pause the main player while detail page is open
viewModel.pause(playerId = "player")

// Play only the detail page player
viewModel.play(playerId = "detailPage")

Player Events​

Listen for player lifecycle and state changes via callbacks:

val callbacks = BBChannelCallbacks(
onPlayersChange = { players ->
println("Active players: ${players.size}")
},
onActivePlayerChange = { playerId ->
println("Active player: ${playerId ?: "none"}")
},
onPlayerStateChange = { state ->
println("Player ${state.state}")
}
)