MKPlayer fires events throughout the player lifecycle — from setup through playback to teardown. You subscribe to events either in the player configuration or dynamically using player.on(). Errors arrive as a specific event type with a structured error object.
Subscribe to events
Section titled “Subscribe to events”You can register event handlers in two ways.
In the player configuration (before the player is created):
const playerConfig = { key: "YOUR_PLAYER_LICENSE_KEY", events: { [mkplayer.MKPlayerEvent.SourceLoaded]: (event) => { console.log("Source loaded"); }, [mkplayer.MKPlayerEvent.Playing]: (event) => { console.log("Playback started"); }, [mkplayer.MKPlayerEvent.Error]: (event) => { console.error("Player error: ", event.code, event.message); } }};Dynamically at runtime using player.on():
player.on(mkplayer.MKPlayerEvent.Ready, (event) => { console.log("Player is ready");});
player.on(mkplayer.MKPlayerEvent.TimeChanged, (event) => { console.log("Current time: ", event.time);});Remove event handlers
Section titled “Remove event handlers”To remove a specific handler:
const handler = (event) => { console.log("Playing");};
player.on(mkplayer.MKPlayerEvent.Playing, handler);
// Remove this specific handler laterplayer.off(mkplayer.MKPlayerEvent.Playing, handler);To remove all handlers for a given event type:
player.offAll(mkplayer.MKPlayerEvent.Playing);Key player events
Section titled “Key player events”| Event | Fires when |
|---|---|
Ready | The player has enough data to start playback. |
SourceLoad | A new source load has been initiated. |
SourceLoaded | A source has finished loading. |
SourceUnloaded | The current source has been unloaded. |
Play | The player enters the play state via a public API call or user interaction. Note: autoplay does not fire this event. |
Playing | Playback has actually started. |
Paused | The player enters the paused state. |
PlaybackFinished | Playback of the current video has finished. |
TimeChanged | The current playback time has changed. |
StallStarted | The player has begun buffering due to an empty buffer. |
StallEnded | The player has resumed after buffering. |
Destroy | The player instance has been destroyed. |
Error | An error has occurred during setup or playback. |
See the MKPlayerEvent enum in the SDK reference for the full list of events.
Handle errors
Section titled “Handle errors”All errors arrive on the Error event. The event object implements MKErrorEvent and includes:
| Property | Type | Description |
|---|---|---|
code | string | A structured error code, for example "4-70-1103". |
message | string | A human-readable description of the error. |
name | string | The name of the error. |
troubleShootLink | string | A link to a detailed troubleshooting guide, if available. |
data | object | Additional error data, if available. |
player.on(mkplayer.MKPlayerEvent.Error, (event) => { console.error(`Error [${event.code}]: ${event.message}`);
if (event.troubleShootLink) { console.info("Troubleshooting: ", event.troubleShootLink); }});Common error codes
Section titled “Common error codes”Setup errors
Section titled “Setup errors”| Code | Constant | Meaning |
|---|---|---|
4-70-1101 | PLAYER_SETUP_NO_HTML_ELEMENT | The container element passed to the player is not a valid HTMLElement. Check that the element exists in the DOM before creating the player. |
4-70-1102 | PLAYER_SETUP_MISSING_CONFIGURATION | No MKPlayerConfig was provided when creating the player instance. |
4-70-1103 | PLAYER_SETUP_LICENSE_ERROR | The player key was not granted playback. Check that your license key is correct. |
4-70-1104 | PLAYER_SETUP_MISSING_DOMAIN_LICENSE_ALLOWLIST | The player build is domain-locked and the current domain is not in the allowlist. |
4-70-1105 | PLAYER_SETUP_MISSING_LICENSE_ALLOWLIST | The current domain has not been added to the license allowlist. |
4-70-1113 | PLAYER_SETUP_UNSUPPORTED_PROTOCOL | The page was loaded using the file:// protocol. Host the page on a web server using http or https. |
Source errors
Section titled “Source errors”| Code | Constant | Meaning |
|---|---|---|
4-71-1201 | PLAYER_SOURCE_INVALID | The MKSourceConfig passed to player.load() is invalid. Ensure at least one valid stream URL is present. |
4-71-1202 | PLAYER_SOURCE_MANIFEST_INVALID | The downloaded manifest could not be parsed. |
4-71-1208 | PLAYER_SOURCE_COULD_NOT_LOAD_MANIFEST | The manifest request failed after retries. By default, manifests are retried 2 times. |
Network errors
Section titled “Network errors”| Code | Constant | Meaning |
|---|---|---|
4-73-1009 | PLAYER_GENERAL_NETWORK_ERROR | The device is not connected to the internet. |
4-73-1401 | PLAYER_NETWORK_MANIFEST_DOWNLOAD_TIMEOUT | The manifest request timed out after the default 20-second timeout. |
4-73-1402 | PLAYER_NETWORK_SEGMENT_DOWNLOAD_TIMEOUT | A segment download timed out. |
DRM errors
Section titled “DRM errors”See DRM protection for the full list of DRM-specific error codes and guidance on resolving them.