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}")
}
)