createPlayer(videoEl, opts)
Creates a BlindCast encrypted HLS player.
Parameters:
| Parameter | Type | Description |
|---|---|---|
videoEl | HTMLVideoElement | Video element already in the DOM |
opts | PlayerOpts | Player configuration |
Result<BlindcastPlayer, PlayerError>
isPlayerSupported()
Returns true if the browser supports MSE and the Web Crypto API.
Returns: boolean
PlayerOpts
BlindcastPlayer
Events
| Event | Payload | When |
|---|---|---|
ready | { levels: number } | Manifest parsed, quality levels available |
playing | (none) | Playback started or resumed |
paused | (none) | Playback paused |
buffering | (none) | Waiting for data |
ended | (none) | Playback reached the end |
keyLoaded | { contentId: string, epoch?: number } | Content key fetched and imported |
qualitySwitch | { fromLevel: number, toLevel: number } | ABR quality level changed |
error | PlayerError | Any error occurred |
destroyed | (none) | Player destroyed and resources released |
PlaybackMetrics
Error codes
| Code | Cause |
|---|---|
UNSUPPORTED_BROWSER | MSE or Web Crypto API not available |
INVALID_VIDEO_ELEMENT | videoEl is null or not an HTMLVideoElement |
INVALID_OPTIONS | Required options missing or malformed |
MANIFEST_LOAD_FAILED | Could not fetch or parse the HLS manifest |
KEY_FETCH_FAILED | Key server request failed (network error or non-200) |
KEY_AUTH_FAILED | Key server returned 401 or 403 |
KEY_LEASE_EXPIRED | Lease was revoked or expired and cannot be renewed |
DECRYPT_FAILED | Segment decryption failed (corrupt data or wrong key) |
MEDIA_ERROR | hls.js media error (codec issue, corrupt segment) |
NETWORK_ERROR | Segment download failed (CDN error, offline) |
PLAYER_DESTROYED | Operation called after destroy() |