Skip to main content

Methods

All methods are called on the player ref:

const playerRef = useRef<BBPlayerViewMethods>(null);

<BBPlayerView ref={playerRef} jsonUrl="..." />

// Call methods
playerRef.current?.play();

Playback Control

MethodDescription
play()Start or resume playback
pause()Pause playback
seek(position: number)Seek to absolute position (seconds)
seekRelative(offset: number)Seek relative to current position (seconds, can be negative)

Volume Control

MethodDescription
setVolume(volume: number)Set volume (0.0–1.0)
setMuted(muted: boolean)Mute or unmute

Layout Control

MethodDescription
enterFullscreen()Enter fullscreen in current orientation
enterFullscreenLandscape()Enter fullscreen and force landscape
exitFullscreen()Exit fullscreen and restore orientation
collapse()Collapse the player (outstream)
expand()Expand the player (outstream)

Content Loading

Primary API: loadWithContentIdAndType

Entity-type agnostic content loading. Naming follows the native SDK loadWith... convention:

loadWithContentIdAndType(contentId: string, contentType: string, autoPlay?: boolean, context?: LoadContext): void
ParameterTypeDescription
contentIdstringNumeric content ID
contentTypestring"mediaclip" / "c", "mediacliplist" / "l", or "project" / "p"
autoPlaybooleanAuto-play after loading (default: true)
contextLoadContextOptional playlist/collection context
// Load a clip
playerRef.current?.loadWithContentIdAndType('123456', 'mediaclip');

// Load a playlist
playerRef.current?.loadWithContentIdAndType('789', 'mediacliplist', true, {
contextEntityType: 'MediaClipList',
contextEntityId: '789',
contextCollectionType: 'MediaClipList',
contextCollectionId: '789',
});

// Load a project
playerRef.current?.loadWithContentIdAndType('42', 'project', false);
info

To load content from a different publication or playout, update the jsonUrl prop on the BBPlayerView component — this triggers a full player reinit via the native SDK.

LoadContext

Passing context enables playlist navigation (next up, previous/next):

FieldTypeDescription
contextEntityType'MediaClipList'Type of containing entity
contextEntityIdstringPlaylist ID for "next up" list
contextCollectionType'MediaClipList'Collection type
contextCollectionIdstringCollection ID

By JSON URL (convenience)

Use loadWithJsonUrl when you only have a BB JSON URL and want to avoid parsing it yourself. The URL is parsed to extract the content ID and type; the publication and playout from the URL are not used (the player uses its own configured playout).

loadWithJsonUrl(jsonUrl: string, autoPlay?: boolean, context?: LoadContext): void
playerRef.current?.loadWithJsonUrl(
'https://example.bbvms.com/p/default/c/123456.json',
true
);
note

Prefer loadWithContentIdAndType when the content ID and type are known — it is more explicit and avoids URL parsing.

Deprecated: loadClip

/** @deprecated Use loadWithContentIdAndType('id', 'mediaclip') instead */
loadClip(clipId: string, options?: LoadClipOptions): void

loadClip only supports mediaclips and incorrectly passed the playout option as an analytics initiator rather than switching the player playout. Kept for backwards compatibility.

Legacy Type-Specific Load Methods

These are still supported for backward compatibility:

loadWithClipId(clipId: string, initiator?, autoPlay?, seekTo?, context?): void
loadWithClipListId(clipListId: string, initiator?, autoPlay?, seekTo?, context?): void
loadWithProjectId(projectId: string, initiator?, autoPlay?, seekTo?, context?): void
loadWithClipJson(clipJson: string, initiator?, autoPlay?, seekTo?, context?): void
loadWithClipListJson(clipListJson: string, initiator?, autoPlay?, seekTo?, context?): void
loadWithProjectJson(projectJson: string, initiator?, autoPlay?, seekTo?, context?): void

State Query

Primary API

getPlayerState(): Promise<BBPlayerState | null>

Returns complete player state in one call:

const state = await playerRef.current?.getPlayerState();
if (state) {
console.log(state.state); // 'PLAYING'
console.log(state.duration); // 120.5
console.log(state.clip?.title); // 'My Video'
console.log(state.volume); // 0.8
console.log(state.muted); // false
}

Individual Getters

MethodReturn Type
getDuration()Promise<number | null>
getVolume()Promise<number | null>
getMuted()Promise<boolean | null>
getPhase()Promise<string | null>
getState()Promise<string | null>
getMode()Promise<string | null>
getClipData()Promise<{ id?, title?, description?, length? } | null>
getProjectData()Promise<{ id?, name? } | null>
getPlayoutData()Promise<{ name? } | null>

Lifecycle

MethodDescription
destroy()Clean up the player and release all resources
autoPlayNextCancel()Cancel auto-play of next clip

Casting

MethodDescription
showCastPicker()Open the Chromecast device picker