How Do I Integrate It?

Dacast Player JS API integration documentation

Overview

The Dacast Player exposes a global window.dacast object. Use the dacast() function to initialize a player, then control it via the player instance.

JS file: https://prod-player.dacast.com/js/player.js

This page is the programmatic dacast() API. To get a contentId or an HTML snippet, see Embed codes. The UI embed loads prod-player.dacast.com; the REST embed snippet loads player.dacast.com. The contentId is the same. Iframe embeds are not documented here.


1. Initialization

const player = dacast(contentId, containerId [, options]);
ParameterTypeRequiredDescription
contentIdstringYes{root_user_id}-vod-{id}, {root_user_id}-live-{id}, or {root_user_id}-playlist-{id}
containerIdstringYesID of the HTML element to mount into
optionsPlayerOptionsNoOptional configuration (see below)

PlayerOptions

FieldTypeDescription
widthstringCSS width of the player (e.g. "640px")
heightstringCSS height of the player (e.g. "360px")
signedKeystringSigned key for protected content
startTimenumberOffset start time in seconds
GACodestringGoogle Analytics code - format: G-XXXX

Example:

<div id="my-player"></div>
<script src="https://prod-player.dacast.com/js/player.js"></script>
<script>
  const player = dacast("root_user_id-vod-VOD_ID", "my-player", {
    width: "640px",
    height: "360px"
  });
</script>

2. Player Instance API

After initialization, the player is also accessible globally:

const player = window.dacast.players["root_user_id-vod-VOD_ID"];

Note: The player object is available immediately, but methods are no-ops until the player is ready. Use onReady() to safely call methods after initialization.

Methods

MethodSignatureDescription
play() => voidStarts playback
pause() => voidPauses playback
seekTo(time: number) => voidSeeks to a position in seconds
mute() => voidMutes the player
muteOn() => voidMutes the player
muteOff() => voidUnmutes the player
muteToggle() => voidToggles mute based on current state
setVolume(volume: number) => voidSet volume - 0 (min) to 1 (max)
getVolume() => numberGet current volume - 0 (min) to 1 (max)
getVolume(callback: (volume: number) => void) => voidSend the current volume to the callback - 0 (min) to 1 (max)
currentTime() => numberReturns current playback position in seconds
currentTime(callback: (time: number) => void) => voidSends the current playback position in seconds to the callback
getTime() => numberSame as currentTime
getTime(callback: (time: number) => void) => voidSame as currentTime
getTotalTime() => numberReturns total time in seconds
getTotalTime(callback: (time: number) => void) => voidSends the total time in seconds to the callback
onReady(callback: () => void) => voidFires callback when player is ready
loadVideo(contentId: string) => voidLoads new content by ID
getContentInfo() => ContentInfoReturns metadata about current content
getActiveMedia() => ContentInfoAlias for getContentInfo
getElement() => HTMLElementReturns the player's DOM container
dispose() => voidUnloads the player
fullscreen(boolean) => voidSet/unset fullscreen mode
fullscreen() => booleanReturn true if fullscreen is ON, false otherwise
activeViewers() => numberCurrent viewer count (live only if count is enabled in theme)
getPlaylistSize() => numberOnly available with Playlist - Returns the playlist length or 0
next(position?: number) => voidOnly available with Playlist - Load next content or the content at position (zero based)
prev(position?: number) => voidOnly available with Playlist - Load previous content or the content at position (zero based)
getTextTracks() => TextTrack[]Returns the list of TextTrack, which historically includes subtitle tracks, thumbnails (kind "metadata"), and chapter tracks.

ContentInfo Object

{
  contentId: string
  title: string
  description: string
  splashscreenUrl: string
  thumbnailUrl: string
}

Example:

const player = dacast("root_user_id-vod-VOD_ID", "my-player");

player.onReady(() => {
  player.seekTo(30);

  const info = player.getContentInfo();
  console.log(info.title, info.description);

  player.dispose();
});

TextTrack Object

{
  kind: string; // "subtitles" | "captions" | "chapters" | "metadata"
  label: string;
  language: string;
  mode: TextTrackMode;  // "showing" | "disabled" | "hidden";
  src?: string; // URL of the underlying track file
  type: string;
}

3. Player Events

Subscribe with player.on('event_name', callback) or player.onEventName(callback) - both return a Subscriber.

Unsubscribe with player.off('event_name', callback) or subscriber.unsubscribe().

interface Subscriber {
  unsubscribe: () => void
}

Event Methods

MethodSignatureDescriptionEvent name
onReady(callback: () => void) => SubscriberListen for Ready eventready
onPlay(callback: () => void) => SubscriberListen for Play eventplay
onPause(callback: () => void) => SubscriberListen for Pause eventpause
onComplete(callback: () => void) => SubscriberFires at end of current mediacomplete
onFullScreenEnter(callback: () => void) => SubscriberFires when player enters fullscreenfullscreen_enter
onFullScreenExit(callback: () => void) => SubscriberFires when player exits fullscreenfullscreen_exit
onActiveViewersChange(callback: (count: number) => void) => SubscriberLive only - fires when active viewer count changesactiveviewers_change
onError(callback: (error) => void) => SubscriberListen for playback errorserror
onPlayerAdError(callback: (error) => void) => SubscriberListen for ad errorsad_error
onVolumeChange(callback: (volume: number) => void) => Subscriber0 (min) to 1 (max)volume_change
onProgress(callback: (progress: number) => void) => SubscriberProgress is a percentage. The event is triggered every 10%: 10, 20, ..., 100progress
onDispose(callback: () => void) => SubscriberFires when the player is destroyed/disposeddispose
onSubtitleAdded(callback: (subtitle: Subtitle) => void) => SubscriberFires when a new subtitle track is added to the listsubtitle_added
onSubtitleChange(callback: (label: string) => void) => SubscriberFires when a new subtitle track is selectedsubtitle_change
on(eventName: string, callback: func) => SubscriberListen to any event by nameN/A
off(eventName: string, callback: func) => voidDetach a callback from an eventN/A